diff --git a/.HA_VERSION b/.HA_VERSION new file mode 100644 index 0000000..22f47ed --- /dev/null +++ b/.HA_VERSION @@ -0,0 +1 @@ +2021.10.5 \ No newline at end of file diff --git a/.storage/auth b/.storage/auth index 579878c..43d10d3 100644 --- a/.storage/auth +++ b/.storage/auth @@ -10,7 +10,7 @@ ], "is_owner": false, "is_active": true, - "name": "Hass.io", + "name": "Supervisor", "system_generated": true }, { @@ -61,8 +61,10 @@ "access_token_expiration": 1800.0, "token": "ad8e000af3c797b8d1b40671c13211d88f4bec1e28d66bbd0110648c3e1f5d89ae473e6683c914dbee11008067de6fea0acebed9e7e98ea4d04274f343b4c693", "jwt_key": "2bebb9fbbecd2a42d24db8f53bab9a493faee41eb64a90ff1140cb849e0e9737f6e50323d4967049262e80a723b50c10af7b487b4d7858dca075adb70e8a8e52", - "last_used_at": "2020-09-21T16:00:42.521471+00:00", - "last_used_ip": "172.30.32.2" + "last_used_at": "2021-11-04T05:13:50.720694+00:00", + "last_used_ip": "172.30.32.2", + "credential_id": null, + "version": null }, { "id": "30bed7edcb3b483b9c258fc19e6b67e6", @@ -76,7 +78,9 @@ "token": "9f2e16a48be4c4e20cb8b59ef06cbd0fbea461ad532f9f3e8c4822142778d027f442481d780ec2ac1dfa8a793c6ad8aaffa65a2ce785bb6b966cebdc9507281c", "jwt_key": "0d48d3ef9b5a750a51e587f123b6d22661c7dd97fb57d9f39766a4c6777369adce1c078bf6b813c8608bdb412eee4ceec9ef1952198e1147bde29580574e895c", "last_used_at": "2020-08-27T15:45:56.542944+00:00", - "last_used_ip": "192.168.86.199" + "last_used_ip": "192.168.86.199", + "credential_id": null, + "version": null }, { "id": "fcfe376305564c99bbda3ba26c03f579", @@ -90,7 +94,9 @@ "token": "6a1bb9dd79d3bc02a40730a50dd1688dbd37532d7821b941cada99f81e880cccc5d659165b00018e3a205ed9434b318cc56c14ebd14a4c35c5c87a0edb2635eb", "jwt_key": "0ad684830d6643bed4cd41d1d41e96f1102362d821dbc13dddbd65a54bf95e7f05881214b27eaf7316dc561f8f097fe78511dcfe65f52fe232ec3c15ed52e5b8", "last_used_at": "2020-07-20T12:18:33.184240+00:00", - "last_used_ip": "192.168.86.198" + "last_used_ip": "192.168.86.198", + "credential_id": null, + "version": null }, { "id": "46c858b4e420475ebc54b3d1a9d58dd2", @@ -104,7 +110,9 @@ "token": "5c0355f71cb377e769ef10bd182b8ff06b5e29ece64cb40335f8d4ffea9915286306c6e9bf51fe52b6aa04989d0763970b5675c5b2a1d92070f8c0e2dd33380a", "jwt_key": "4b49e05c4c91a0b7e8a51f0bc8cb6f531afc798139cb8c1f8aa354463d762475c891853cdfae5227ec3b2c285fee20e059ea7400497803b86d5766f17d91c8ae", "last_used_at": "2020-05-29T19:20:52.142065+00:00", - "last_used_ip": null + "last_used_ip": null, + "credential_id": null, + "version": null }, { "id": "19575d9287324e3489345fe9db5a4936", @@ -117,8 +125,10 @@ "access_token_expiration": 1800.0, "token": "08a756075d2f15addae8983a725011dd532bd7b57750d11ebb8b37c8feeeb153028e84ed73494ecf1b721ef39ceb9d2836221fb6566a5f53c4e8164c930a20ac", "jwt_key": "45e9b816dfd5b419729ff97fb90fb7602c171b623062f6554693a4142de719f60adf59c195f3c6002faa5903924bc5e2f263f07bf67bd2801526655456082f11", - "last_used_at": "2020-06-04T19:15:00.996872+00:00", - "last_used_ip": "192.168.86.198" + "last_used_at": "2021-11-04T05:14:27.221933+00:00", + "last_used_ip": "192.168.86.1", + "credential_id": null, + "version": null }, { "id": "b5eeca33991941a8a41030ca2c6d349e", @@ -131,8 +141,10 @@ "access_token_expiration": 1800.0, "token": "ee1c89a76a734f28857b02a4450bcedbd38ac077b6b8e758c9f6622618513b1a6c6334ca0c3d52682cfc01a1514ee94ca0be05f2f927ac2e95b43e2b3fe98ec8", "jwt_key": "7b35033548dd9eb840ac0eb6134a90ee16bbe05625c7a0d76d25e5b9dfae358e5ea4022d571879dca848676b101216c147452de5ddb08a189753e39321b24e98", - "last_used_at": "2020-05-31T18:00:59.643238+00:00", - "last_used_ip": "192.168.86.198" + "last_used_at": "2021-06-11T14:37:40.221368+00:00", + "last_used_ip": "192.168.86.198", + "credential_id": null, + "version": null }, { "id": "1c1b24887db846099d6a7f5ff867f70b", @@ -145,8 +157,10 @@ "access_token_expiration": 1800.0, "token": "d26165ea00a1e93ef83d2b41edee7816ddae5677af7d532876ff5cd90fd4641686c942b96cc4b894ad7194d673cacd25e8612069d208b85867e2c6fc2181e967", "jwt_key": "46f60304aab09ba84a79173449142a15c031247be8a205abd45541c073163b22e429efa460ff5f50b0b256c3c760bdbb0238cbf2ae5194a7bd6184aeb287b900", - "last_used_at": "2020-09-21T14:12:25.273548+00:00", - "last_used_ip": "192.168.86.198" + "last_used_at": "2021-11-04T02:54:24.337524+00:00", + "last_used_ip": "192.168.86.36", + "credential_id": null, + "version": null }, { "id": "df8c4c4bef054d49b81233979d289f63", @@ -160,7 +174,9 @@ "token": "d6490c1d9a076075d66b78d985793454449c86da2f94e701c08dc6b3f28430f8b551ad94bf983ecdd34ebaa5667b781a6a487b03c3c03add69f04832b8529099", "jwt_key": "74eea0472bf0a9ae8de80d91dc6a749a68849a4ad14c50f3d81a69923cc5e5d2d67e248414c771b85c5859a194812197d902037bea7b80db8f7702dfb4fb7970", "last_used_at": "2020-08-26T15:15:40.903869+00:00", - "last_used_ip": "192.168.86.198" + "last_used_ip": "192.168.86.198", + "credential_id": null, + "version": null }, { "id": "343a96be8a4546aa927d46fe6af00fd0", @@ -173,8 +189,10 @@ "access_token_expiration": 1800.0, "token": "0e06da7483669a4bc6e2e258af50f56f243529782ffe796f2d09886d28ed388ad04ecd17e1786dfabf770e919107742b8cab0e9f8a76bcc325c511fcc7db6cf5", "jwt_key": "61232b195e40bd7ccec9c2d819045da50148e438043e101d75174c6317bada7df8e456914a0b5f0b98124e5caf99052f21a38e0e35807d308466701c0e157d4b", - "last_used_at": "2020-09-21T16:00:49.733536+00:00", - "last_used_ip": "192.168.86.198" + "last_used_at": "2021-05-23T18:20:23.167244+00:00", + "last_used_ip": "192.168.86.198", + "credential_id": null, + "version": null }, { "id": "041349f25ed44541a85639cc1f08a937", @@ -188,7 +206,121 @@ "token": "48998af2f96ac72599e4b2de1b74a44ad1606282b407b5101b0259ba8578d86dbaf3129ec86c26b215539e87d0f4c77ae8ff1eb8c3b6f7df16f5c24afc7325b1", "jwt_key": "2c0e67d51d64856009d6c86736cce01fc0d1ba17b7dd1b0f6c45ccbafce527fecb922261484351fd3d7ca4fee51b4d0aeb12c5c46503e010d96dec6364c9d0de", "last_used_at": "2020-09-01T05:47:09.903831+00:00", - "last_used_ip": "192.168.86.163" + "last_used_ip": "192.168.86.163", + "credential_id": null, + "version": null + }, + { + "id": "0583c68546c5471399811e7776ef743b", + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "client_id": "https://house.dandembinski.com/", + "client_name": null, + "client_icon": null, + "token_type": "normal", + "created_at": "2021-05-30T11:48:34.952165+00:00", + "access_token_expiration": 1800.0, + "token": "265ef95c0a386a84b200cf2bfe70f5712feec53e9864d87f335bccb2c3d5db6db6747ce76bef0cd6cc7a009d07b09022bc3fe280d96399a16ce64f519f4d8bf2", + "jwt_key": "2c55003fa049504ead0f3079b26984fd31f2c48213631d752538a341209b823060fe367ddb8f5fd0e92dc22251e98cbed147c60a51a7a8b36bd7cd5a4f36dcb3", + "last_used_at": "2021-10-27T14:24:21.227406+00:00", + "last_used_ip": "192.168.86.1", + "credential_id": "940968b2abe54eda8d33a50fa40637bf", + "version": "2021.5.5" + }, + { + "id": "696e4e819d2646d5b3f26db96c4b249c", + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "client_id": "http://192.168.86.40:8123/", + "client_name": null, + "client_icon": null, + "token_type": "normal", + "created_at": "2021-08-24T12:50:08.936245+00:00", + "access_token_expiration": 1800.0, + "token": "b569881512898fb71e8443b7641c83d5e562834c74c804d405b86b7886afaf456a7c0f2cb4b1525f1a5d5816fd9ab786c1371563db934fd36479176fcc1e8aa3", + "jwt_key": "c24b749ff1a7c9e9108310bb1c8cc283cce287cbf8130f73a5871c90d70d20a17a0a656d525068c2e54d1dca0799164d2741a3c0ae39c0071e1379a644b5c189", + "last_used_at": "2021-08-31T15:13:14.867288+00:00", + "last_used_ip": "192.168.86.28", + "credential_id": "940968b2abe54eda8d33a50fa40637bf", + "version": "2021.8.8" + }, + { + "id": "47ab2ae9cbd8424f81195a3d12680039", + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "client_id": "http://house.dandembinski.com/", + "client_name": null, + "client_icon": null, + "token_type": "normal", + "created_at": "2021-09-25T02:52:33.244560+00:00", + "access_token_expiration": 1800.0, + "token": "cd06129e6dfa54e8db8a5f6559478011fb1b931d2c448ce697b30c5335d41d827d80d61188e5704b22a7357f15cc474dcf9340c21f0a865a468c855f61f6d08a", + "jwt_key": "5fed4b07949f2354dfb112eb4f7614d89468c5a7dd7b1e0bae174f1421e5d2ebf2048f7086c95945ed06c197b23dfdce6c9e92bf8765d484c48acf757c8d6677", + "last_used_at": "2021-09-25T03:28:09.039643+00:00", + "last_used_ip": "192.168.86.1", + "credential_id": "940968b2abe54eda8d33a50fa40637bf", + "version": "2021.9.6" + }, + { + "id": "cd93d6c34ec042de8e5a16ee8d10ae95", + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "client_id": null, + "client_name": "alexa", + "client_icon": null, + "token_type": "long_lived_access_token", + "created_at": "2021-10-08T18:34:55.438178+00:00", + "access_token_expiration": 315360000.0, + "token": "833793e994ef8167e6ee95fa7a71a8120885738cf919bdf0ba6e15ce42e3ed4cc2b7d558ffb86ca5117a8cc1d3cd979f143b92bdbe2e6e3805793564c144a8f2", + "jwt_key": "d8ddd1cb3f712bdc25b8c9d14a9a8320e6c6ce31c9efb81b11a7b80d73e0261b11fed98ac69361668366b489f005de15943c9538d46ee13a6307910f4c1e0f3b", + "last_used_at": "2021-10-08T18:34:55.439116+00:00", + "last_used_ip": null, + "credential_id": null, + "version": "2021.9.6" + }, + { + "id": "9f434eebc801473cb2cca812dfc7f962", + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "client_id": "https://house.dandembinski.com/", + "client_name": null, + "client_icon": null, + "token_type": "normal", + "created_at": "2021-10-18T19:10:21.306301+00:00", + "access_token_expiration": 1800.0, + "token": "ad4e7579362846c8a8c35be76b6a3cf0262796c02e1caa6046be8349fe6679dc197a6f1ec463bebdc6037179e8703af791945af32a5b78714817424e2fb9dfbe", + "jwt_key": "9d401dd56ee3571d5672bf67dc380a4f9e1ad5fd0affe44657f2e2fcc7f0ce81bb440dcd26b475bedd5fe85ea11351187f1602c4dd8a6a21f85e75238561758a", + "last_used_at": "2021-10-18T19:10:21.307226+00:00", + "last_used_ip": "192.168.86.1", + "credential_id": "940968b2abe54eda8d33a50fa40637bf", + "version": "2021.10.5" + }, + { + "id": "efe7250858bf4a1e8108715613f8be2f", + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "client_id": "http://house.dandembinski.com/", + "client_name": null, + "client_icon": null, + "token_type": "normal", + "created_at": "2021-11-03T18:45:47.481806+00:00", + "access_token_expiration": 1800.0, + "token": "e79efde17ced310ce046722abf625e495ab8919d2fbfbe5f6bc38341ae7bc4bbc76222bd1413dff0bbe9511732dd356663982519c9a55828343f9d0b5a29177d", + "jwt_key": "decab182d5d7aaef7de8b179ae96b939266ddafd3c381a14c7d0c13f7dbbcd14617e3df02503ee52641df361fe7a77fb4ae8a8b9c068cbbafa3fb0f1bc0c4f50", + "last_used_at": "2021-11-03T19:55:15.923429+00:00", + "last_used_ip": "192.168.86.1", + "credential_id": "940968b2abe54eda8d33a50fa40637bf", + "version": "2021.10.5" + }, + { + "id": "4773ad9c3d2842619b71b173ce104c1f", + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "client_id": "https://house.dandembinski.com/", + "client_name": null, + "client_icon": null, + "token_type": "normal", + "created_at": "2021-11-03T18:46:57.611006+00:00", + "access_token_expiration": 1800.0, + "token": "8821cc18a22a74045b8ad6264f52c2afcbaebe4a50a857fe210c66231bf442148c307956e4d10d3694f71d7f045093243abb31ca1e73d1fa630dc4a63ddad9ae", + "jwt_key": "607f92e59edff2c44eb7896ee2e96d03608127bd7c0d07c0be7241ac8be05ae4422de5967bb39336fbaef0c65524471aca9352a083533b37121876e2b55e2a72", + "last_used_at": "2021-11-04T03:44:57.901906+00:00", + "last_used_ip": "192.168.86.1", + "credential_id": "940968b2abe54eda8d33a50fa40637bf", + "version": "2021.10.5" } ] } diff --git a/.storage/core.area_registry b/.storage/core.area_registry index eeeaec1..60e9d86 100644 --- a/.storage/core.area_registry +++ b/.storage/core.area_registry @@ -1,28 +1,36 @@ { + "version": 1, + "key": "core.area_registry", "data": { "areas": [ { - "id": "8db59b44b36f4289855322438b472f42", - "name": "Living Room" + "name": "Kitchen", + "id": "ac918f0c0e314c3e9cd18b486842bb24" }, { - "id": "ac918f0c0e314c3e9cd18b486842bb24", - "name": "Kitchen" + "name": "Bedroom", + "id": "8e5446424de1458db58dda26c21a5285" }, { - "id": "8e5446424de1458db58dda26c21a5285", - "name": "Bedroom" + "name": "Office", + "id": "cccf16afc4f5422898e671517a120ed6" }, { - "id": "cccf16afc4f5422898e671517a120ed6", - "name": "Office" + "name": "Entryway", + "id": "03ff2a472caf42b7bd88ce96b7325862" }, { - "id": "03ff2a472caf42b7bd88ce96b7325862", - "name": "Entryway" + "name": "Living", + "id": "living" + }, + { + "name": "Basement", + "id": "basement" + }, + { + "name": "Dinning Room", + "id": "dinning_room" } ] - }, - "key": "core.area_registry", - "version": 1 + } } \ No newline at end of file diff --git a/.storage/core.config_entries b/.storage/core.config_entries index c887775..cea3de8 100644 --- a/.storage/core.config_entries +++ b/.storage/core.config_entries @@ -12,12 +12,11 @@ "track_home": true }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "onboarding", - "connection_class": "cloud_poll", - "unique_id": null + "unique_id": null, + "disabled_by": null }, { "entry_id": "77d68408d0a44c3c8ffa3747452065f1", @@ -32,29 +31,11 @@ "allow_hue_groups": false, "allow_unreachable": true }, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "import", - "connection_class": "local_poll", - "unique_id": "00178812ec3b" - }, - { - "entry_id": "7bf7100b04594912b88a2400bd45c6b3", - "version": 1, - "domain": "ecobee", - "title": "ecobee", - "data": { - "api_key": "8DSRpsILZJNUIJXvSzY6C4ufrMQNQsHa", - "refresh_token": "bZE7djtq5db2dP4kFpB8oIRvMvMdCtFC" - }, - "options": {}, - "system_options": { - "disable_new_entities": false - }, - "source": "user", - "connection_class": "cloud_poll", - "unique_id": null + "unique_id": "00178812ec3b", + "disabled_by": null }, { "entry_id": "487ba0d979a943a6b590f834f80258d0", @@ -63,16 +44,29 @@ "title": "192.168.86.198", "data": { "broker": "192.168.86.198", - "discovery": false, - "port": 1888 + "port": 1888, + "password": "1234", + "username": "hassio", + "birth_message": { + "topic": "homeassistant/status", + "payload": "online", + "qos": 0, + "retain": false + }, + "will_message": { + "topic": "homeassistant/status", + "payload": "offline", + "qos": 0, + "retain": false + }, + "discovery": true }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "user", - "connection_class": "local_push", - "unique_id": null + "unique_id": null, + "disabled_by": null }, { "entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", @@ -81,12 +75,12 @@ "title": "SM-N960U", "data": { "app_data": { - "push_token": "fyPvng4VdH4:APA91bF403pSt2EUPcwwAJ4eSLHwCMWXjn0Q4-KJf8whlEqJGC7VRGmujrQhUu64rngMhFvYo8rR7VrYW20k84Tt-6bG2AymdjI90pXwYOb_9uaxThOCzl8GfGcSKGCzB0oxmqWKmFtB", - "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": "fyPvng4VdH4:APA91bF403pSt2EUPcwwAJ4eSLHwCMWXjn0Q4-KJf8whlEqJGC7VRGmujrQhUu64rngMhFvYo8rR7VrYW20k84Tt-6bG2AymdjI90pXwYOb_9uaxThOCzl8GfGcSKGCzB0oxmqWKmFtB" }, "app_id": "io.homeassistant.companion.android", "app_name": "Home Assistant", - "app_version": "2.4.1-full (380)", + "app_version": "2021.10.0-full (761)", "device_id": "98756dd6f94f600d", "device_name": "SM-N960U", "manufacturer": "samsung", @@ -98,12 +92,11 @@ "webhook_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797" }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "registration", - "connection_class": "cloud_push", - "unique_id": "io.homeassistant.companion.android-98756dd6f94f600d" + "unique_id": "io.homeassistant.companion.android-98756dd6f94f600d", + "disabled_by": null }, { "entry_id": "52efee6cb13d42f3a5a13a89bd813400", @@ -116,12 +109,11 @@ "webhook_id": "3fce02123ef2e6efe569acbb7a1144839645e96c496eb5594dcde83f46b0e5d9" }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "user", - "connection_class": "unknown", - "unique_id": null + "unique_id": null, + "disabled_by": null }, { "entry_id": "24c023984771440bb36266e23675c31a", @@ -132,12 +124,11 @@ "host": "192.168.86.30" }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_poll", - "unique_id": "YR00AV370849" + "unique_id": "YR00AV370849", + "disabled_by": null }, { "entry_id": "8595c96fda7a4a2eaa4e9c7434236f57", @@ -150,12 +141,11 @@ "model": "UN55J6200" }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_poll", - "unique_id": "192.168.86.42" + "unique_id": "192.168.86.42", + "disabled_by": null }, { "entry_id": "7edb292b13634d9c9ef43ff79665efd3", @@ -164,12 +154,11 @@ "title": "Ignored", "data": {}, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_poll", - "unique_id": "u63883m5n395203" + "unique_id": "u63883m5n395203", + "disabled_by": null }, { "entry_id": "94d2d69d16ba44d3a5fb345f3d2944cb", @@ -178,12 +167,11 @@ "title": "Ignored", "data": {}, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_push", - "unique_id": "cast" + "unique_id": "cast", + "disabled_by": null }, { "entry_id": "de42e81841a94b7783ba796bba7deaa6", @@ -195,12 +183,11 @@ "name": "Brother HL-L2360D series" }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_poll", - "unique_id": "e3248000-80ce-11db-8000-30055ca5f565" + "unique_id": "e3248000-80ce-11db-8000-30055ca5f565", + "disabled_by": null }, { "entry_id": "41d744a4348146db8d6f8cd07a36e1b7", @@ -209,16 +196,15 @@ "title": "Ignored", "data": {}, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_poll", - "unique_id": "uuid:3f422f86-082a-4aec-9740-e71645c0fb9d::urn:schemas-upnp-org:device:InternetGatewayDevice:2" + "unique_id": "uuid:3f422f86-082a-4aec-9740-e71645c0fb9d::urn:schemas-upnp-org:device:InternetGatewayDevice:2", + "disabled_by": null }, { "entry_id": "babd9cc14c314f6db8c5ce578dfa9564", - "version": 2, + "version": 3, "domain": "zha", "title": "HubZ Smart Home Controller, s/n: 90F00055 - Silicon Labs", "data": { @@ -229,29 +215,11 @@ "radio_type": "ezsp" }, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "user", - "connection_class": "local_push", - "unique_id": null - }, - { - "entry_id": "f7adb05551db43ff96001518ee72fdac", - "version": 1, - "domain": "zwave", - "title": "Z-Wave", - "data": { - "network_key": "0xD8, 0x36, 0x2F, 0x4B, 0x55, 0x53, 0xDF, 0x7B, 0xF8, 0x9E, 0x6E, 0x17, 0xD6, 0x0C, 0x24, 0x11", - "usb_path": "/dev/ttyUSB0" - }, - "options": {}, - "system_options": { - "disable_new_entities": false - }, - "source": "user", - "connection_class": "local_push", - "unique_id": null + "unique_id": null, + "disabled_by": null }, { "entry_id": "69831ce2912c4cccbd488b95302d08b7", @@ -260,12 +228,11 @@ "title": "Ignored", "data": {}, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_poll", - "unique_id": "uuid:45ed9cb0-ec89-40f9-9ab6-cbcef376e442::urn:schemas-upnp-org:device:InternetGatewayDevice:2" + "unique_id": "uuid:45ed9cb0-ec89-40f9-9ab6-cbcef376e442::urn:schemas-upnp-org:device:InternetGatewayDevice:2", + "disabled_by": null }, { "entry_id": "8f3041c2c7134aef825c276d667c92a3", @@ -274,26 +241,27 @@ "title": "Ignored", "data": {}, "options": {}, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_poll", - "unique_id": "uuid:ab6abbcf-b79f-49dc-be9a-1ff32d48463a::urn:schemas-upnp-org:device:InternetGatewayDevice:2" + "unique_id": "uuid:ab6abbcf-b79f-49dc-be9a-1ff32d48463a::urn:schemas-upnp-org:device:InternetGatewayDevice:2", + "disabled_by": null }, { "entry_id": "796149ee9cd94b5d8297bb0f78096a3f", "version": 1, "domain": "homekit_controller", "title": "Ignored", - "data": {}, - "options": {}, - "system_options": { - "disable_new_entities": false + "data": { + "AccessoryIP": "192.168.86.34", + "AccessoryPort": 34127 }, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "ignore", - "connection_class": "local_push", - "unique_id": "30:0b:8b:2b:f8:2c" + "unique_id": "30:0b:8b:2b:f8:2c", + "disabled_by": null }, { "entry_id": "6f0422dffc2011eab962e33c52698c7d", @@ -312,12 +280,135 @@ "upcoming_days": 1, "wanted_max_items": 50 }, - "system_options": { - "disable_new_entities": false - }, + "pref_disable_new_entities": false, + "pref_disable_polling": false, "source": "user", - "connection_class": "local_poll", - "unique_id": null + "unique_id": null, + "disabled_by": null + }, + { + "entry_id": "966199e4041f11eb892b391fb72793f3", + "version": 1, + "domain": "ecobee", + "title": "ecobee", + "data": { + "api_key": "8DSRpsILZJNUIJXvSzY6C4ufrMQNQsHa", + "refresh_token": "5bQ1gz8GSwHc3XIyTlM8qKkDjqb715Qr" + }, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "user", + "unique_id": null, + "disabled_by": null + }, + { + "entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "version": 1, + "domain": "hassio", + "title": "Supervisor", + "data": {}, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "system", + "unique_id": "hassio", + "disabled_by": null + }, + { + "entry_id": "50aa91eb44e7c92d2b4a8a0ba028351e", + "version": 2, + "domain": "samsungtv", + "title": "Living room (UN55J6200)", + "data": { + "host": "192.168.86.42", + "mac": "78:bd:bc:79:42:85" + }, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "ignore", + "unique_id": "7f8d7dec-32da-4314-9391-cb1acc922b95", + "disabled_by": null + }, + { + "entry_id": "4701417a1902ab7be569765641579e22", + "version": 1, + "domain": "upnp", + "title": "OnHub", + "data": {}, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "ignore", + "unique_id": "uuid:29422ada-a94b-4a3d-bcc9-aa24e2ac5c1e::urn:schemas-upnp-org:device:InternetGatewayDevice:2", + "disabled_by": null + }, + { + "entry_id": "107d2d027a46461e1852309411b07b24", + "version": 1, + "domain": "homekit_controller", + "title": "Roku 4630X 5DE3", + "data": { + "AccessoryIP": "192.168.86.30", + "AccessoryPort": 55290 + }, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "ignore", + "unique_id": "9d:11:93:91:d3:c7", + "disabled_by": null + }, + { + "entry_id": "168e1b19293508dafb169cd8270442a4", + "version": 1, + "domain": "zwave_js", + "title": "Z-Wave JS", + "data": { + "url": "ws://core-zwave-js:3000", + "usb_path": "/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_90F00055-if00-port0", + "network_key": "1C07307043F183F395CECE7572FAA2B7", + "use_addon": true, + "integration_created_addon": false, + "s2_access_control_key": "65C8447AAFEF6C433E86C2B7209F6CD6", + "s2_authenticated_key": "AD3DF19206BC91EA5FB2D3B910E18E86", + "s2_unauthenticated_key": "4E8DF41AD19402953C04B7086A08035C" + }, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "hassio", + "unique_id": 4189927064, + "disabled_by": null + }, + { + "entry_id": "58119655eea8bc6c0f5a9ac217b73372", + "version": 1, + "domain": "spotify", + "title": "Spotify", + "data": {}, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "ignore", + "unique_id": null, + "disabled_by": null + }, + { + "entry_id": "737ca8cab48eb7350044f5ddf9742f3c", + "version": 1, + "domain": "upnp", + "title": "OnHub", + "data": { + "hostname": "192.168.86.1" + }, + "options": {}, + "pref_disable_new_entities": false, + "pref_disable_polling": false, + "source": "ignore", + "unique_id": "uuid:107841be-833f-4bda-83e7-bbb4922d5fae::urn:schemas-upnp-org:device:InternetGatewayDevice:2", + "disabled_by": null } ] } diff --git a/.storage/core.device_registry b/.storage/core.device_registry index ab08cc9..d28223c 100644 --- a/.storage/core.device_registry +++ b/.storage/core.device_registry @@ -27,7 +27,8 @@ "id": "1f01297a279d458eba50b1a7fced66e1", "via_device_id": null, "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -48,7 +49,8 @@ "id": "be9781e5f1c34bd496e75ecac9d1dcc6", "via_device_id": "1f01297a279d458eba50b1a7fced66e1", "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -68,8 +70,9 @@ "entry_type": null, "id": "9d17b8ce7d7c40eb9046f414524209cb", "via_device_id": "1f01297a279d458eba50b1a7fced66e1", - "area_id": null, - "name_by_user": null + "area_id": "living", + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -89,8 +92,9 @@ "entry_type": null, "id": "93d1f0f9d47146a7bec94a5514fe6173", "via_device_id": "1f01297a279d458eba50b1a7fced66e1", - "area_id": null, - "name_by_user": null + "area_id": "living", + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -110,29 +114,9 @@ "entry_type": null, "id": "e0b8f163c2354efb96ea5d9f2f05fad2", "via_device_id": "1f01297a279d458eba50b1a7fced66e1", - "area_id": null, - "name_by_user": null - }, - { - "config_entries": [ - "7bf7100b04594912b88a2400bd45c6b3" - ], - "connections": [], - "identifiers": [ - [ - "ecobee", - "411928765012" - ] - ], - "manufacturer": "ecobee", - "model": "ecobee3 lite Smart Thermostat", - "name": "Home", - "sw_version": null, - "entry_type": null, - "id": "123637fe2f964053a0b975dd4dc46ba1", - "via_device_id": null, - "area_id": null, - "name_by_user": null + "area_id": "living", + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -153,7 +137,8 @@ "id": "e65bc44886b84792ba48ae70e4fa57d7", "via_device_id": null, "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -174,7 +159,8 @@ "id": "b4bf3f88d4924c94a93ff59c144c47c6", "via_device_id": null, "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -200,7 +186,8 @@ "id": "f05eae618c3d4f908b9022a05e88ce95", "via_device_id": null, "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -226,7 +213,8 @@ "id": "9ea4a15795c44e8db70f13f26cca9a93", "via_device_id": "f05eae618c3d4f908b9022a05e88ce95", "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -252,7 +240,8 @@ "id": "c57a16aa70724d0191fdb72f346d2dbb", "via_device_id": "f05eae618c3d4f908b9022a05e88ce95", "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -278,7 +267,8 @@ "id": "2b0f187abe74477fab0d035f8817a8f6", "via_device_id": "f05eae618c3d4f908b9022a05e88ce95", "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -304,49 +294,8 @@ "id": "1e92b72b37af42708165f56b484d1990", "via_device_id": "f05eae618c3d4f908b9022a05e88ce95", "area_id": null, - "name_by_user": null - }, - { - "config_entries": [ - "f7adb05551db43ff96001518ee72fdac" - ], - "connections": [], - "identifiers": [ - [ - "zwave", - 1 - ] - ], - "manufacturer": "Z-Wave (Sigma Designs)", - "model": "UZB Z-Wave USB Adapter", - "name": "Z-Wave (Sigma Designs) UZB Z-Wave USB Adapter", - "sw_version": null, - "entry_type": null, - "id": "b8157ce386cb41e4b26dbea5d566bce4", - "via_device_id": null, - "area_id": null, - "name_by_user": null - }, - { - "config_entries": [ - "f7adb05551db43ff96001518ee72fdac" - ], - "connections": [], - "identifiers": [ - [ - "zwave", - 2 - ] - ], - "manufacturer": "Linear (Nortek Security Control LLC)", - "model": "PS15Z-2 Plug-in Appliance Module", - "name": "Linear (Nortek Security Control LLC) PS15Z-2 Plug-in Appliance Module", - "sw_version": null, - "entry_type": null, - "id": "942e4136673c4cf78ba434f50aad0a17", - "via_device_id": "b8157ce386cb41e4b26dbea5d566bce4", - "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -372,7 +321,8 @@ "id": "1828828e7283407894093611afecfa76", "via_device_id": "f05eae618c3d4f908b9022a05e88ce95", "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null }, { "config_entries": [ @@ -388,14 +338,388 @@ "manufacturer": "Sonarr", "model": null, "name": "Activity Sensor", - "sw_version": "2.0.0.5344", + "sw_version": "3.0.6.1342", "entry_type": "service", "id": "6f365493fc2011ea9f59eb7dc9b07531", "via_device_id": null, "area_id": null, - "name_by_user": null + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "966199e4041f11eb892b391fb72793f3" + ], + "connections": [], + "identifiers": [ + [ + "ecobee", + "411928765012" + ] + ], + "manufacturer": "ecobee", + "model": "ecobee3 lite Smart Thermostat", + "name": "Home", + "sw_version": null, + "entry_type": null, + "id": "97300b68041f11ebacaa396522618ab4", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "d449b87b7a8a4de2a1ee7ad105ac30b1" + ], + "connections": [], + "identifiers": [ + [ + "met" + ] + ], + "manufacturer": "Met.no", + "model": "Forecast", + "name": "Forecast", + "sw_version": null, + "entry_type": "service", + "id": "aabcb64f5f211c38784f45faa5029cea", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "5b411d516be8bea4ccc31c46e6a36c0c" + ], + "connections": [], + "identifiers": [ + [ + "hassio", + "core_ssh" + ] + ], + "manufacturer": "Official add-ons", + "model": "Home Assistant Add-on", + "name": "Terminal & SSH", + "sw_version": "9.2.1", + "entry_type": "service", + "id": "cd25a61cedb94647fd69655d947cab82", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "5b411d516be8bea4ccc31c46e6a36c0c" + ], + "connections": [], + "identifiers": [ + [ + "hassio", + "core_git_pull" + ] + ], + "manufacturer": "Official add-ons", + "model": "Home Assistant Add-on", + "name": "Git pull", + "sw_version": "7.12", + "entry_type": "service", + "id": "a3ec358d220baf426ed6c78cc15e543c", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "5b411d516be8bea4ccc31c46e6a36c0c" + ], + "connections": [], + "identifiers": [ + [ + "hassio", + "OS" + ] + ], + "manufacturer": "Home Assistant", + "model": "Home Assistant Operating System", + "name": "Home Assistant Operating System", + "sw_version": "6.5", + "entry_type": "service", + "id": "5dbbb7f52f9bcacdd90ffa48bf809110", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "babd9cc14c314f6db8c5ce578dfa9564" + ], + "connections": [ + [ + "zigbee", + "00:12:4b:00:22:ea:ee:33" + ] + ], + "identifiers": [ + [ + "zha", + "00:12:4b:00:22:ea:ee:33" + ] + ], + "manufacturer": "eWeLink", + "model": "SA-003-Zigbee", + "name": "eWeLink SA-003-Zigbee", + "sw_version": null, + "entry_type": null, + "id": "262d5b6e6b377055fd1deefbb25b01fe", + "via_device_id": "f05eae618c3d4f908b9022a05e88ce95", + "area_id": "basement", + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "5b411d516be8bea4ccc31c46e6a36c0c" + ], + "connections": [], + "identifiers": [ + [ + "hassio", + "core_zwave_js" + ] + ], + "manufacturer": "Official add-ons", + "model": "Home Assistant Add-on", + "name": "Z-Wave JS", + "sw_version": "0.1.45", + "entry_type": "service", + "id": "bc6b9946fb0cfcc330a8296e0e3290ae", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "168e1b19293508dafb169cd8270442a4" + ], + "connections": [], + "identifiers": [ + [ + "zwave_js", + "4189927064-1" + ] + ], + "manufacturer": "Sigma Designs (Former Zensys)", + "model": "HUSBZB-1", + "name": "QuickStick Combo", + "sw_version": "4.32", + "entry_type": null, + "id": "3017c2b633b22d41be13f03bd56672f0", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "168e1b19293508dafb169cd8270442a4" + ], + "connections": [], + "identifiers": [ + [ + "zwave_js", + "4189927064-2" + ] + ], + "manufacturer": "Nortek Security & Control LLC", + "model": "PS15Z", + "name": "Plug-In Appliance Module", + "sw_version": "5.41", + "entry_type": null, + "id": "b43320eeef9b58d28234494e0aef12b8", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "babd9cc14c314f6db8c5ce578dfa9564" + ], + "connections": [ + [ + "zigbee", + "00:12:4b:00:23:b7:78:94" + ] + ], + "identifiers": [ + [ + "zha", + "00:12:4b:00:23:b7:78:94" + ] + ], + "manufacturer": "SONOFF", + "model": "S31 Lite zb", + "name": "SONOFF S31 Lite zb", + "sw_version": null, + "entry_type": null, + "id": "9f5c4bbc8fe9161e5f20e44bb9bbacef", + "via_device_id": "f05eae618c3d4f908b9022a05e88ce95", + "area_id": "", + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "5b411d516be8bea4ccc31c46e6a36c0c" + ], + "connections": [], + "identifiers": [ + [ + "hassio", + "45df7312_zigbee2mqtt_edge" + ] + ], + "manufacturer": "Home Assistant Add-on: Zigbee2mqtt", + "model": "Home Assistant Add-on", + "name": "Zigbee2mqtt Edge", + "sw_version": "edge", + "entry_type": "service", + "id": "dfb728261d65045160bc85ec10bb43bf", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "487ba0d979a943a6b590f834f80258d0" + ], + "connections": [], + "identifiers": [ + [ + "mqtt", + "zigbee2mqtt_0x00158d00070b32d6" + ] + ], + "manufacturer": "Xiaomi", + "model": "Aqara door & window contact sensor (MCCGQ11LM)", + "name": "Door", + "sw_version": "Zigbee2MQTT 1.21.1-dev", + "entry_type": null, + "id": "14e3db9dff274f58c9065e162ee7b8a6", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "5b411d516be8bea4ccc31c46e6a36c0c" + ], + "connections": [], + "identifiers": [ + [ + "hassio", + "a0d7b954_appdaemon" + ] + ], + "manufacturer": "Home Assistant Community Add-ons", + "model": "Home Assistant Add-on", + "name": "AppDaemon 4", + "sw_version": "0.7.0", + "entry_type": "service", + "id": "a34971bea044ae5aa10d467f25c77bf9", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null + }, + { + "config_entries": [ + "168e1b19293508dafb169cd8270442a4" + ], + "connections": [], + "identifiers": [ + [ + "zwave_js", + "4189927064-3" + ] + ], + "manufacturer": "Wink Inc.", + "model": "D/W SENSOR", + "name": "Door/Window Sensor", + "sw_version": "3.80", + "entry_type": null, + "id": "576d2874d1e67620b848c789be7d9e07", + "via_device_id": null, + "area_id": null, + "name_by_user": "Zwave Test Sensor", + "disabled_by": null + }, + { + "config_entries": [ + "487ba0d979a943a6b590f834f80258d0" + ], + "connections": [], + "identifiers": [ + [ + "mqtt", + "zigbee2mqtt_0x00158d0006f39e88" + ] + ], + "manufacturer": "Xiaomi", + "model": "Aqara wireless switch (WXKG11LM)", + "name": "Office Switch", + "sw_version": "Zigbee2MQTT 1.21.1-dev", + "entry_type": null, + "id": "c587194eb713c5cc45e0fef31080796b", + "via_device_id": null, + "area_id": null, + "name_by_user": null, + "disabled_by": null } ], - "deleted_devices": [] + "deleted_devices": [ + { + "config_entries": [ + "5b411d516be8bea4ccc31c46e6a36c0c" + ], + "connections": [], + "identifiers": [ + [ + "hassio", + "45df7312_zigbee2mqtt" + ] + ], + "id": "02f26deab8f5be50ea518504ffab750f", + "orphaned_timestamp": null + }, + { + "config_entries": [ + "babd9cc14c314f6db8c5ce578dfa9564" + ], + "connections": [ + [ + "zigbee", + "00:15:8d:00:07:0b:32:d6" + ] + ], + "identifiers": [ + [ + "zha", + "00:15:8d:00:07:0b:32:d6" + ] + ], + "id": "d353ec958e7f6bff604a280eb32fe472", + "orphaned_timestamp": null + } + ] } } \ No newline at end of file diff --git a/.storage/core.entity_registry b/.storage/core.entity_registry index 6649b23..4ce050f 100644 --- a/.storage/core.entity_registry +++ b/.storage/core.entity_registry @@ -7,6 +7,7 @@ "entity_id": "binary_sensor.updater", "config_entry_id": null, "device_id": null, + "area_id": null, "unique_id": "updater", "platform": "updater", "name": null, @@ -14,7 +15,7 @@ "disabled_by": null, "capabilities": {}, "supported_features": 0, - "device_class": null, + "device_class": "update", "unit_of_measurement": null, "original_name": "Updater", "original_icon": null @@ -23,6 +24,7 @@ "entity_id": "person.dan", "config_entry_id": null, "device_id": null, + "area_id": null, "unique_id": "dan", "platform": "person", "name": null, @@ -38,7 +40,8 @@ { "entity_id": "weather.home", "config_entry_id": "d449b87b7a8a4de2a1ee7ad105ac30b1", - "device_id": null, + "device_id": "aabcb64f5f211c38784f45faa5029cea", + "area_id": null, "unique_id": "home", "platform": "met", "name": null, @@ -55,18 +58,23 @@ "entity_id": "light.lamp_left", "config_entry_id": "77d68408d0a44c3c8ffa3747452065f1", "device_id": "9d17b8ce7d7c40eb9046f414524209cb", + "area_id": null, "unique_id": "00:17:88:01:00:d8:5c:9c-0b", "platform": "hue", "name": null, "icon": null, "disabled_by": null, "capabilities": { + "min_mireds": 153, + "max_mireds": 500, "effect_list": [ "colorloop", "random" ], - "max_mireds": 500, - "min_mireds": 153 + "supported_color_modes": [ + "color_temp", + "hs" + ] }, "supported_features": 63, "device_class": null, @@ -78,18 +86,23 @@ "entity_id": "light.table", "config_entry_id": "77d68408d0a44c3c8ffa3747452065f1", "device_id": "93d1f0f9d47146a7bec94a5514fe6173", + "area_id": null, "unique_id": "00:17:88:01:00:fa:c0:cd-0b", "platform": "hue", "name": null, "icon": null, "disabled_by": null, "capabilities": { + "min_mireds": 153, + "max_mireds": 500, "effect_list": [ "colorloop", "random" ], - "max_mireds": 500, - "min_mireds": 153 + "supported_color_modes": [ + "color_temp", + "hs" + ] }, "supported_features": 63, "device_class": null, @@ -101,18 +114,23 @@ "entity_id": "light.lamp_right", "config_entry_id": "77d68408d0a44c3c8ffa3747452065f1", "device_id": "e0b8f163c2354efb96ea5d9f2f05fad2", + "area_id": null, "unique_id": "00:17:88:01:00:ef:e3:c3-0b", "platform": "hue", "name": null, "icon": null, "disabled_by": null, "capabilities": { + "min_mireds": 153, + "max_mireds": 500, "effect_list": [ "colorloop", "random" ], - "max_mireds": 500, - "min_mireds": 153 + "supported_color_modes": [ + "color_temp", + "hs" + ] }, "supported_features": 63, "device_class": null, @@ -120,92 +138,11 @@ "original_name": "Lamp right", "original_icon": null }, - { - "entity_id": "climate.home", - "config_entry_id": "7bf7100b04594912b88a2400bd45c6b3", - "device_id": "123637fe2f964053a0b975dd4dc46ba1", - "unique_id": "411928765012", - "platform": "ecobee", - "name": null, - "icon": null, - "disabled_by": null, - "capabilities": { - "fan_modes": [ - "auto", - "on" - ], - "hvac_modes": [ - "heat_cool", - "heat", - "cool", - "off" - ], - "max_temp": 95, - "min_temp": 45, - "preset_modes": [ - "Home", - "Away", - "Sleep" - ] - }, - "supported_features": 91, - "device_class": null, - "unit_of_measurement": null, - "original_name": "Home", - "original_icon": null - }, - { - "entity_id": "sensor.home_temperature", - "config_entry_id": "7bf7100b04594912b88a2400bd45c6b3", - "device_id": "123637fe2f964053a0b975dd4dc46ba1", - "unique_id": "411928765012-ei:0-temperature", - "platform": "ecobee", - "name": null, - "icon": null, - "disabled_by": null, - "capabilities": {}, - "supported_features": 0, - "device_class": "temperature", - "unit_of_measurement": "\u00b0F", - "original_name": "Home Temperature", - "original_icon": null - }, - { - "entity_id": "sensor.home_humidity", - "config_entry_id": "7bf7100b04594912b88a2400bd45c6b3", - "device_id": "123637fe2f964053a0b975dd4dc46ba1", - "unique_id": "411928765012-ei:0-humidity", - "platform": "ecobee", - "name": null, - "icon": null, - "disabled_by": null, - "capabilities": {}, - "supported_features": 0, - "device_class": "humidity", - "unit_of_measurement": "%", - "original_name": "Home Humidity", - "original_icon": null - }, - { - "entity_id": "weather.home_2", - "config_entry_id": "7bf7100b04594912b88a2400bd45c6b3", - "device_id": "123637fe2f964053a0b975dd4dc46ba1", - "unique_id": "411928765012", - "platform": "ecobee", - "name": null, - "icon": null, - "disabled_by": null, - "capabilities": {}, - "supported_features": 0, - "device_class": null, - "unit_of_measurement": null, - "original_name": "Home", - "original_icon": null - }, { "entity_id": "device_tracker.sm_n960u", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "98756dd6f94f600d", "platform": "mobile_app", "name": "Dans Phone", @@ -222,6 +159,7 @@ "entity_id": "sensor.sm_n960u_battery_level", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_battery_level", "platform": "mobile_app", "name": null, @@ -232,12 +170,13 @@ "device_class": "battery", "unit_of_measurement": "%", "original_name": "SM-N960U Battery Level", - "original_icon": "mdi:battery-80" + "original_icon": "mdi:battery-10" }, { "entity_id": "sensor.sm_n960u_battery_state", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_battery_state", "platform": "mobile_app", "name": null, @@ -254,6 +193,7 @@ "entity_id": "sensor.sm_n960u_wifi_connection", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_wifi_connection", "platform": "mobile_app", "name": null, @@ -270,6 +210,7 @@ "entity_id": "device_tracker.dan_dansphone", "config_entry_id": "52efee6cb13d42f3a5a13a89bd813400", "device_id": "b4bf3f88d4924c94a93ff59c144c47c6", + "area_id": null, "unique_id": "dan_dansphone", "platform": "owntracks", "name": null, @@ -286,6 +227,7 @@ "entity_id": "input_boolean.sleeping", "config_entry_id": null, "device_id": null, + "area_id": null, "unique_id": "sleeping", "platform": "input_boolean", "name": null, @@ -302,6 +244,7 @@ "entity_id": "input_boolean.thermostat_mode", "config_entry_id": null, "device_id": null, + "area_id": null, "unique_id": "thermostat_mode", "platform": "input_boolean", "name": null, @@ -318,12 +261,15 @@ "entity_id": "sensor.sengled_e11_g13_1d3e0b03_smartenergy_metering", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "9ea4a15795c44e8db70f13f26cca9a93", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:3e:1d-1-1794", "platform": "zha", "name": null, "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "state_class": "measurement" + }, "supported_features": 0, "device_class": "power", "unit_of_measurement": "W", @@ -334,12 +280,15 @@ "entity_id": "sensor.sengled_e11_g13_fd3e0b03_smartenergy_metering", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "c57a16aa70724d0191fdb72f346d2dbb", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:3e:fd-1-1794", "platform": "zha", "name": null, "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "state_class": "measurement" + }, "supported_features": 0, "device_class": "power", "unit_of_measurement": "W", @@ -350,12 +299,15 @@ "entity_id": "sensor.sengled_e11_g13_ba220b03_smartenergy_metering", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "2b0f187abe74477fab0d035f8817a8f6", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:22:ba-1-1794", "platform": "zha", "name": null, "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "state_class": "measurement" + }, "supported_features": 0, "device_class": "power", "unit_of_measurement": "W", @@ -366,12 +318,15 @@ "entity_id": "sensor.sengled_e11_g13_d6681403_smartenergy_metering", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "1e92b72b37af42708165f56b484d1990", + "area_id": null, "unique_id": "b0:ce:18:14:03:14:68:d6-1-1794", "platform": "zha", "name": null, "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "state_class": "measurement" + }, "supported_features": 0, "device_class": "power", "unit_of_measurement": "W", @@ -382,12 +337,17 @@ "entity_id": "light.sengled_e11_g13_1d3e0b03_level_on_off", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "9ea4a15795c44e8db70f13f26cca9a93", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:3e:1d-1", "platform": "zha", "name": "Entry Way", "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "supported_color_modes": [ + "brightness" + ] + }, "supported_features": 41, "device_class": null, "unit_of_measurement": null, @@ -398,12 +358,17 @@ "entity_id": "light.sengled_e11_g13_fd3e0b03_level_on_off", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "c57a16aa70724d0191fdb72f346d2dbb", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:3e:fd-1", "platform": "zha", "name": "Dinning Rom", "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "supported_color_modes": [ + "brightness" + ] + }, "supported_features": 41, "device_class": null, "unit_of_measurement": null, @@ -414,12 +379,17 @@ "entity_id": "light.sengled_e11_g13_ba220b03_level_on_off", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "2b0f187abe74477fab0d035f8817a8f6", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:22:ba-1", "platform": "zha", "name": "Living Room", "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "supported_color_modes": [ + "brightness" + ] + }, "supported_features": 41, "device_class": null, "unit_of_measurement": null, @@ -430,76 +400,36 @@ "entity_id": "light.sengled_e11_g13_d6681403_level_on_off", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "1e92b72b37af42708165f56b484d1990", + "area_id": null, "unique_id": "b0:ce:18:14:03:14:68:d6-1", "platform": "zha", "name": "Office", "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "supported_color_modes": [ + "brightness" + ] + }, "supported_features": 41, "device_class": null, "unit_of_measurement": null, "original_name": "sengled E11-G13 d6681403 level, on_off", "original_icon": null }, - { - "entity_id": "zwave.z_wave_sigma_designs_uzb_z_wave_usb_adapter", - "config_entry_id": "f7adb05551db43ff96001518ee72fdac", - "device_id": "b8157ce386cb41e4b26dbea5d566bce4", - "unique_id": "node-1", - "platform": "zwave", - "name": null, - "icon": null, - "disabled_by": null, - "capabilities": {}, - "supported_features": 0, - "device_class": null, - "unit_of_measurement": null, - "original_name": "Z-Wave (Sigma Designs) UZB Z-Wave USB Adapter", - "original_icon": null - }, - { - "entity_id": "zwave.linear_nortek_security_control_llc_ps15z_2_plug_in_appliance_module", - "config_entry_id": "f7adb05551db43ff96001518ee72fdac", - "device_id": "942e4136673c4cf78ba434f50aad0a17", - "unique_id": "node-2", - "platform": "zwave", - "name": null, - "icon": null, - "disabled_by": null, - "capabilities": {}, - "supported_features": 0, - "device_class": null, - "unit_of_measurement": null, - "original_name": "Linear (Nortek Security Control LLC) PS15Z-2 Plug-in Appliance Module", - "original_icon": null - }, - { - "entity_id": "switch.linear_nortek_security_control_llc_ps15z_2_plug_in_appliance_module_switch", - "config_entry_id": "f7adb05551db43ff96001518ee72fdac", - "device_id": "942e4136673c4cf78ba434f50aad0a17", - "unique_id": "2-72057594076282880", - "platform": "zwave", - "name": "Switch", - "icon": null, - "disabled_by": null, - "capabilities": {}, - "supported_features": 0, - "device_class": null, - "unit_of_measurement": null, - "original_name": "Linear (Nortek Security Control LLC) PS15Z-2 Plug-in Appliance Module Switch", - "original_icon": null - }, { "entity_id": "sensor.sengled_e11_g13_af400b03_smartenergy_metering", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "1828828e7283407894093611afecfa76", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:40:af-1-1794", "platform": "zha", "name": null, "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "state_class": "measurement" + }, "supported_features": 0, "device_class": "power", "unit_of_measurement": "W", @@ -510,12 +440,17 @@ "entity_id": "light.sengled_e11_g13_af400b03_level_on_off", "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", "device_id": "1828828e7283407894093611afecfa76", + "area_id": null, "unique_id": "b0:ce:18:14:03:0b:40:af-1", "platform": "zha", "name": null, "icon": null, "disabled_by": null, - "capabilities": {}, + "capabilities": { + "supported_color_modes": [ + "brightness" + ] + }, "supported_features": 41, "device_class": null, "unit_of_measurement": null, @@ -526,6 +461,7 @@ "entity_id": "sensor.sm_n960u_bluetooth_connection", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_bluetooth_connection", "platform": "mobile_app", "name": null, @@ -542,6 +478,7 @@ "entity_id": "sensor.sm_n960u_geocoded_location", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_geocoded_location", "platform": "mobile_app", "name": null, @@ -558,6 +495,7 @@ "entity_id": "sensor.sm_n960u_light_sensor", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_light_sensor", "platform": "mobile_app", "name": null, @@ -574,6 +512,7 @@ "entity_id": "sensor.sm_n960u_next_alarm", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_next_alarm", "platform": "mobile_app", "name": null, @@ -590,6 +529,7 @@ "entity_id": "sensor.sm_n960u_storage_sensor", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_storage_sensor", "platform": "mobile_app", "name": null, @@ -606,6 +546,7 @@ "entity_id": "sensor.sm_n960u_audio_sensor", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_audio_sensor", "platform": "mobile_app", "name": null, @@ -622,6 +563,7 @@ "entity_id": "sensor.sm_n960u_do_not_disturb_sensor", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_dnd_sensor", "platform": "mobile_app", "name": null, @@ -638,6 +580,7 @@ "entity_id": "sensor.sm_n960u_last_reboot", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_last_reboot", "platform": "mobile_app", "name": null, @@ -654,6 +597,7 @@ "entity_id": "sensor.sm_n960u_pressure_sensor", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_pressure_sensor", "platform": "mobile_app", "name": null, @@ -670,6 +614,7 @@ "entity_id": "sensor.sm_n960u_proximity_sensor", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_proximity_sensor", "platform": "mobile_app", "name": null, @@ -686,6 +631,7 @@ "entity_id": "binary_sensor.sm_n960u_is_charging", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_is_charging", "platform": "mobile_app", "name": null, @@ -702,6 +648,7 @@ "entity_id": "sensor.sm_n960u_charger_type", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_charger_type", "platform": "mobile_app", "name": null, @@ -718,6 +665,7 @@ "entity_id": "sensor.sm_n960u_battery_health", "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_battery_health", "platform": "mobile_app", "name": null, @@ -728,18 +676,19 @@ "device_class": null, "unit_of_measurement": null, "original_name": "SM-N960U Battery Health", - "original_icon": "mdi:battery-charging-40" + "original_icon": "mdi:battery-heart-variant" }, { "entity_id": "weather.home_hourly", "config_entry_id": "d449b87b7a8a4de2a1ee7ad105ac30b1", - "device_id": null, + "device_id": "aabcb64f5f211c38784f45faa5029cea", + "area_id": null, "unique_id": "home-hourly", "platform": "met", "name": null, "icon": null, "disabled_by": "integration", - "capabilities": null, + "capabilities": {}, "supported_features": 0, "device_class": null, "unit_of_measurement": null, @@ -750,12 +699,13 @@ "entity_id": "sensor.sonarr_commands", "config_entry_id": "6f0422dffc2011eab962e33c52698c7d", "device_id": "6f365493fc2011ea9f59eb7dc9b07531", + "area_id": null, "unique_id": "6f0422dffc2011eab962e33c52698c7d_commands", "platform": "sonarr", "name": null, "icon": null, "disabled_by": "integration", - "capabilities": null, + "capabilities": {}, "supported_features": 0, "device_class": null, "unit_of_measurement": "Commands", @@ -766,12 +716,13 @@ "entity_id": "sensor.sonarr_queue", "config_entry_id": "6f0422dffc2011eab962e33c52698c7d", "device_id": "6f365493fc2011ea9f59eb7dc9b07531", + "area_id": null, "unique_id": "6f0422dffc2011eab962e33c52698c7d_queue", "platform": "sonarr", "name": null, "icon": null, "disabled_by": "integration", - "capabilities": null, + "capabilities": {}, "supported_features": 0, "device_class": null, "unit_of_measurement": "Episodes", @@ -782,12 +733,13 @@ "entity_id": "sensor.sonarr_upcoming", "config_entry_id": "6f0422dffc2011eab962e33c52698c7d", "device_id": "6f365493fc2011ea9f59eb7dc9b07531", + "area_id": null, "unique_id": "6f0422dffc2011eab962e33c52698c7d_upcoming", "platform": "sonarr", "name": null, "icon": null, "disabled_by": null, - "capabilities": null, + "capabilities": {}, "supported_features": 0, "device_class": null, "unit_of_measurement": "Episodes", @@ -798,12 +750,13 @@ "entity_id": "sensor.sonarr_disk_space", "config_entry_id": "6f0422dffc2011eab962e33c52698c7d", "device_id": "6f365493fc2011ea9f59eb7dc9b07531", + "area_id": null, "unique_id": "6f0422dffc2011eab962e33c52698c7d_diskspace", "platform": "sonarr", "name": null, "icon": null, "disabled_by": "integration", - "capabilities": null, + "capabilities": {}, "supported_features": 0, "device_class": null, "unit_of_measurement": "GB", @@ -814,12 +767,13 @@ "entity_id": "sensor.sonarr_wanted", "config_entry_id": "6f0422dffc2011eab962e33c52698c7d", "device_id": "6f365493fc2011ea9f59eb7dc9b07531", + "area_id": null, "unique_id": "6f0422dffc2011eab962e33c52698c7d_wanted", "platform": "sonarr", "name": null, "icon": null, "disabled_by": "integration", - "capabilities": null, + "capabilities": {}, "supported_features": 0, "device_class": null, "unit_of_measurement": "Episodes", @@ -830,17 +784,990 @@ "entity_id": "sensor.sonarr_shows", "config_entry_id": "6f0422dffc2011eab962e33c52698c7d", "device_id": "6f365493fc2011ea9f59eb7dc9b07531", + "area_id": null, "unique_id": "6f0422dffc2011eab962e33c52698c7d_series", "platform": "sonarr", "name": null, "icon": null, "disabled_by": "integration", - "capabilities": null, + "capabilities": {}, "supported_features": 0, "device_class": null, "unit_of_measurement": "Series", "original_name": "Sonarr Shows", "original_icon": "mdi:television" + }, + { + "entity_id": "climate.home", + "config_entry_id": "966199e4041f11eb892b391fb72793f3", + "device_id": "97300b68041f11ebacaa396522618ab4", + "area_id": null, + "unique_id": "411928765012", + "platform": "ecobee", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "hvac_modes": [ + "heat_cool", + "heat", + "cool", + "off" + ], + "min_temp": 44.6, + "max_temp": 95.0, + "fan_modes": [ + "auto", + "on" + ], + "preset_modes": [ + "Home", + "Away", + "Sleep" + ] + }, + "supported_features": 91, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Home", + "original_icon": null + }, + { + "entity_id": "sensor.home_temperature", + "config_entry_id": "966199e4041f11eb892b391fb72793f3", + "device_id": "97300b68041f11ebacaa396522618ab4", + "area_id": null, + "unique_id": "411928765012-ei:0-temperature", + "platform": "ecobee", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "temperature", + "unit_of_measurement": "\u00b0F", + "original_name": "Home Temperature", + "original_icon": null + }, + { + "entity_id": "sensor.home_humidity", + "config_entry_id": "966199e4041f11eb892b391fb72793f3", + "device_id": "97300b68041f11ebacaa396522618ab4", + "area_id": null, + "unique_id": "411928765012-ei:0-humidity", + "platform": "ecobee", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "humidity", + "unit_of_measurement": "%", + "original_name": "Home Humidity", + "original_icon": null + }, + { + "entity_id": "weather.home_2", + "config_entry_id": "966199e4041f11eb892b391fb72793f3", + "device_id": "97300b68041f11ebacaa396522618ab4", + "area_id": null, + "unique_id": "411928765012", + "platform": "ecobee", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Home", + "original_icon": null + }, + { + "entity_id": "sensor.sm_n960u_battery_temperature", + "config_entry_id": "4034b3eddaef4bee93ba6eb68f6d9e5e", + "device_id": "e65bc44886b84792ba48ae70e4fa57d7", + "area_id": null, + "unique_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_battery_temperature", + "platform": "mobile_app", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": "temperature", + "unit_of_measurement": "\u00b0F", + "original_name": "SM-N960U Battery Temperature", + "original_icon": "mdi:battery" + }, + { + "entity_id": "binary_sensor.terminal_ssh_update_available", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "cd25a61cedb94647fd69655d947cab82", + "area_id": null, + "unique_id": "core_ssh_update_available", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": "update", + "unit_of_measurement": null, + "original_name": "Terminal & SSH: Update Available", + "original_icon": null + }, + { + "entity_id": "binary_sensor.git_pull_update_available", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "a3ec358d220baf426ed6c78cc15e543c", + "area_id": null, + "unique_id": "core_git_pull_update_available", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": "update", + "unit_of_measurement": null, + "original_name": "Git pull: Update Available", + "original_icon": null + }, + { + "entity_id": "binary_sensor.home_assistant_operating_system_update_available", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "5dbbb7f52f9bcacdd90ffa48bf809110", + "area_id": null, + "unique_id": "home_assistant_os_update_available", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": "update", + "unit_of_measurement": null, + "original_name": "Home Assistant Operating System: Update Available", + "original_icon": null + }, + { + "entity_id": "sensor.terminal_ssh_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "cd25a61cedb94647fd69655d947cab82", + "area_id": null, + "unique_id": "core_ssh_version", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Terminal & SSH: Version", + "original_icon": null + }, + { + "entity_id": "sensor.git_pull_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "a3ec358d220baf426ed6c78cc15e543c", + "area_id": null, + "unique_id": "core_git_pull_version", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Git pull: Version", + "original_icon": null + }, + { + "entity_id": "sensor.home_assistant_operating_system_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "5dbbb7f52f9bcacdd90ffa48bf809110", + "area_id": null, + "unique_id": "home_assistant_os_version", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Home Assistant Operating System: Version", + "original_icon": null + }, + { + "entity_id": "sensor.terminal_ssh_newest_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "cd25a61cedb94647fd69655d947cab82", + "area_id": null, + "unique_id": "core_ssh_version_latest", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Terminal & SSH: Newest Version", + "original_icon": null + }, + { + "entity_id": "sensor.git_pull_newest_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "a3ec358d220baf426ed6c78cc15e543c", + "area_id": null, + "unique_id": "core_git_pull_version_latest", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Git pull: Newest Version", + "original_icon": null + }, + { + "entity_id": "sensor.home_assistant_operating_system_newest_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "5dbbb7f52f9bcacdd90ffa48bf809110", + "area_id": null, + "unique_id": "home_assistant_os_version_latest", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Home Assistant Operating System: Newest Version", + "original_icon": null + }, + { + "entity_id": "switch.ewelink_sa_003_zigbee_33eeea22_on_off", + "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", + "device_id": "262d5b6e6b377055fd1deefbb25b01fe", + "area_id": null, + "unique_id": "00:12:4b:00:22:ea:ee:33-1", + "platform": "zha", + "name": "Grow Fan", + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "eWeLink SA-003-Zigbee 33eeea22 on_off", + "original_icon": null + }, + { + "entity_id": "binary_sensor.z_wave_js_update_available", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "bc6b9946fb0cfcc330a8296e0e3290ae", + "area_id": null, + "unique_id": "core_zwave_js_update_available", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": "update", + "unit_of_measurement": null, + "original_name": "Z-Wave JS: Update Available", + "original_icon": null + }, + { + "entity_id": "sensor.z_wave_js_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "bc6b9946fb0cfcc330a8296e0e3290ae", + "area_id": null, + "unique_id": "core_zwave_js_version", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Z-Wave JS: Version", + "original_icon": null + }, + { + "entity_id": "sensor.z_wave_js_newest_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "bc6b9946fb0cfcc330a8296e0e3290ae", + "area_id": null, + "unique_id": "core_zwave_js_version_latest", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Z-Wave JS: Newest Version", + "original_icon": null + }, + { + "entity_id": "sensor.quickstick_combo_node_status", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "3017c2b633b22d41be13f03bd56672f0", + "area_id": null, + "unique_id": "4189927064.1.node_status", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "QuickStick Combo: Node Status", + "original_icon": "mdi:heart-pulse" + }, + { + "entity_id": "sensor.plug_in_appliance_module_node_status", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "b43320eeef9b58d28234494e0aef12b8", + "area_id": null, + "unique_id": "4189927064.2.node_status", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Plug-In Appliance Module: Node Status", + "original_icon": "mdi:heart-pulse" + }, + { + "entity_id": "switch.plug_in_appliance_module", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "b43320eeef9b58d28234494e0aef12b8", + "area_id": null, + "unique_id": "4189927064.2-37-0-currentValue", + "platform": "zwave_js", + "name": "Switch", + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Plug-In Appliance Module", + "original_icon": null + }, + { + "entity_id": "select.plug_in_appliance_module_local_protection_state", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "b43320eeef9b58d28234494e0aef12b8", + "area_id": null, + "unique_id": "4189927064.2-117-0-local", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "options": [ + "Unprotected", + "ProtectedBySequence", + "NoOperationPossible" + ] + }, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Plug-In Appliance Module: Local protection state", + "original_icon": null + }, + { + "entity_id": "switch.sonoff_s31_lite_zb_9478b723_on_off", + "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", + "device_id": "9f5c4bbc8fe9161e5f20e44bb9bbacef", + "area_id": null, + "unique_id": "00:12:4b:00:23:b7:78:94-1-6", + "platform": "zha", + "name": "Dinning Room Switch", + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "SONOFF S31 Lite zb 9478b723 on_off", + "original_icon": null + }, + { + "entity_id": "binary_sensor.zigbee2mqtt_edge_update_available", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "dfb728261d65045160bc85ec10bb43bf", + "area_id": null, + "unique_id": "45df7312_zigbee2mqtt_edge_update_available", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": "update", + "unit_of_measurement": null, + "original_name": "Zigbee2mqtt Edge: Update Available", + "original_icon": null + }, + { + "entity_id": "sensor.zigbee2mqtt_edge_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "dfb728261d65045160bc85ec10bb43bf", + "area_id": null, + "unique_id": "45df7312_zigbee2mqtt_edge_version", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Zigbee2mqtt Edge: Version", + "original_icon": null + }, + { + "entity_id": "sensor.zigbee2mqtt_edge_newest_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "dfb728261d65045160bc85ec10bb43bf", + "area_id": null, + "unique_id": "45df7312_zigbee2mqtt_edge_version_latest", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Zigbee2mqtt Edge: Newest Version", + "original_icon": null + }, + { + "entity_id": "sensor.door_battery", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "14e3db9dff274f58c9065e162ee7b8a6", + "area_id": null, + "unique_id": "0x00158d00070b32d6_battery_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "battery", + "unit_of_measurement": "%", + "original_name": "Door battery", + "original_icon": null + }, + { + "entity_id": "binary_sensor.door_contact", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "14e3db9dff274f58c9065e162ee7b8a6", + "area_id": null, + "unique_id": "0x00158d00070b32d6_contact_zigbee2mqtt", + "platform": "mqtt", + "name": "Back Door", + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": "door", + "unit_of_measurement": null, + "original_name": "Door contact", + "original_icon": null + }, + { + "entity_id": "sensor.door_temperature", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "14e3db9dff274f58c9065e162ee7b8a6", + "area_id": null, + "unique_id": "0x00158d00070b32d6_temperature_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "temperature", + "unit_of_measurement": "\u00b0F", + "original_name": "Door temperature", + "original_icon": null + }, + { + "entity_id": "sensor.door_voltage", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "14e3db9dff274f58c9065e162ee7b8a6", + "area_id": null, + "unique_id": "0x00158d00070b32d6_voltage_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "voltage", + "unit_of_measurement": "mV", + "original_name": "Door voltage", + "original_icon": null + }, + { + "entity_id": "sensor.door_linkquality", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "14e3db9dff274f58c9065e162ee7b8a6", + "area_id": null, + "unique_id": "0x00158d00070b32d6_linkquality_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": "lqi", + "original_name": "Door linkquality", + "original_icon": "mdi:signal" + }, + { + "entity_id": "binary_sensor.appdaemon_4_update_available", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "a34971bea044ae5aa10d467f25c77bf9", + "area_id": null, + "unique_id": "a0d7b954_appdaemon_update_available", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": "update", + "unit_of_measurement": null, + "original_name": "AppDaemon 4: Update Available", + "original_icon": null + }, + { + "entity_id": "sensor.appdaemon_4_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "a34971bea044ae5aa10d467f25c77bf9", + "area_id": null, + "unique_id": "a0d7b954_appdaemon_version", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "AppDaemon 4: Version", + "original_icon": null + }, + { + "entity_id": "sensor.appdaemon_4_newest_version", + "config_entry_id": "5b411d516be8bea4ccc31c46e6a36c0c", + "device_id": "a34971bea044ae5aa10d467f25c77bf9", + "area_id": null, + "unique_id": "a0d7b954_appdaemon_version_latest", + "platform": "hassio", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "AppDaemon 4: Newest Version", + "original_icon": null + }, + { + "entity_id": "sensor.node_3_node_status", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3.node_status", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Door/Window Sensor: Node Status", + "original_icon": "mdi:sleep" + }, + { + "entity_id": "sensor.zwave_test_sensor_battery_level", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3-128-0-level", + "platform": "zwave_js", + "name": "Zwave Test Sensor: Battery level", + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "battery", + "unit_of_measurement": "%", + "original_name": "Door/Window Sensor: Battery level", + "original_icon": null + }, + { + "entity_id": "binary_sensor.zwave_test_sensor_low_battery_level", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3-128-0-isLow", + "platform": "zwave_js", + "name": "Zwave Test Sensor: Low battery level", + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": "battery", + "unit_of_measurement": null, + "original_name": "Door/Window Sensor: Low battery level", + "original_icon": null + }, + { + "entity_id": "binary_sensor.zwave_test_sensor_any", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3-48-0-Any", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Door/Window Sensor: Any", + "original_icon": null + }, + { + "entity_id": "sensor.zwave_test_sensor_alarmlevel", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3-113-0-alarmLevel", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Door/Window Sensor: alarmLevel", + "original_icon": null + }, + { + "entity_id": "sensor.zwave_test_sensor_alarmtype", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3-113-0-alarmType", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Door/Window Sensor: alarmType", + "original_icon": null + }, + { + "entity_id": "binary_sensor.door_window_sensor_access_control_window_door_is_open", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3-113-0-Access Control-Door state.22", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": "door", + "unit_of_measurement": null, + "original_name": "Door/Window Sensor: Access Control - Window/door is open", + "original_icon": null + }, + { + "entity_id": "sensor.door_window_sensor_access_control_door_state", + "config_entry_id": "168e1b19293508dafb169cd8270442a4", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "area_id": null, + "unique_id": "4189927064.3-113-0-Access Control-Door state", + "platform": "zwave_js", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Door/Window Sensor: Access Control - Door state", + "original_icon": null + }, + { + "entity_id": "scene.lightson", + "config_entry_id": null, + "device_id": null, + "area_id": null, + "unique_id": "1633716797998", + "platform": "homeassistant", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "LightsOn", + "original_icon": null + }, + { + "entity_id": "scene.lightson_2", + "config_entry_id": null, + "device_id": null, + "area_id": null, + "unique_id": "1633716868581", + "platform": "homeassistant", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": {}, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "LightsOff", + "original_icon": null + }, + { + "entity_id": "sensor.sengled_e11_g13_1d3e0b03_smartenergy_metering_summation_delivered", + "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", + "device_id": "9ea4a15795c44e8db70f13f26cca9a93", + "area_id": null, + "unique_id": "b0:ce:18:14:03:0b:3e:1d-1-1794-summation_delivered", + "platform": "zha", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "total_increasing" + }, + "supported_features": 0, + "device_class": "energy", + "unit_of_measurement": "kWh", + "original_name": "sengled E11-G13 1d3e0b03 smartenergy_metering summation_delivered", + "original_icon": null + }, + { + "entity_id": "sensor.sengled_e11_g13_fd3e0b03_smartenergy_metering_summation_delivered", + "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", + "device_id": "c57a16aa70724d0191fdb72f346d2dbb", + "area_id": null, + "unique_id": "b0:ce:18:14:03:0b:3e:fd-1-1794-summation_delivered", + "platform": "zha", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "total_increasing" + }, + "supported_features": 0, + "device_class": "energy", + "unit_of_measurement": "kWh", + "original_name": "sengled E11-G13 fd3e0b03 smartenergy_metering summation_delivered", + "original_icon": null + }, + { + "entity_id": "sensor.sengled_e11_g13_ba220b03_smartenergy_metering_summation_delivered", + "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", + "device_id": "2b0f187abe74477fab0d035f8817a8f6", + "area_id": null, + "unique_id": "b0:ce:18:14:03:0b:22:ba-1-1794-summation_delivered", + "platform": "zha", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "total_increasing" + }, + "supported_features": 0, + "device_class": "energy", + "unit_of_measurement": "kWh", + "original_name": "sengled E11-G13 ba220b03 smartenergy_metering summation_delivered", + "original_icon": null + }, + { + "entity_id": "sensor.sengled_e11_g13_d6681403_smartenergy_metering_summation_delivered", + "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", + "device_id": "1e92b72b37af42708165f56b484d1990", + "area_id": null, + "unique_id": "b0:ce:18:14:03:14:68:d6-1-1794-summation_delivered", + "platform": "zha", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "total_increasing" + }, + "supported_features": 0, + "device_class": "energy", + "unit_of_measurement": "kWh", + "original_name": "sengled E11-G13 d6681403 smartenergy_metering summation_delivered", + "original_icon": null + }, + { + "entity_id": "sensor.sengled_e11_g13_af400b03_smartenergy_metering_summation_delivered", + "config_entry_id": "babd9cc14c314f6db8c5ce578dfa9564", + "device_id": "1828828e7283407894093611afecfa76", + "area_id": null, + "unique_id": "b0:ce:18:14:03:0b:40:af-1-1794-summation_delivered", + "platform": "zha", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "total_increasing" + }, + "supported_features": 0, + "device_class": "energy", + "unit_of_measurement": "kWh", + "original_name": "sengled E11-G13 af400b03 smartenergy_metering summation_delivered", + "original_icon": null + }, + { + "entity_id": "sensor.0x00158d0006f39e88_voltage", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "c587194eb713c5cc45e0fef31080796b", + "area_id": null, + "unique_id": "0x00158d0006f39e88_voltage_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "voltage", + "unit_of_measurement": "mV", + "original_name": "Office Switch voltage", + "original_icon": null + }, + { + "entity_id": "sensor.0x00158d0006f39e88_linkquality", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "c587194eb713c5cc45e0fef31080796b", + "area_id": null, + "unique_id": "0x00158d0006f39e88_linkquality_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": "integration", + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": "lqi", + "original_name": "Office Switch linkquality", + "original_icon": "mdi:signal" + }, + { + "entity_id": "sensor.office_switch_click", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "c587194eb713c5cc45e0fef31080796b", + "area_id": null, + "unique_id": "0x00158d0006f39e88_click_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": null, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Office Switch click", + "original_icon": "mdi:toggle-switch" + }, + { + "entity_id": "sensor.office_switch_battery", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "c587194eb713c5cc45e0fef31080796b", + "area_id": null, + "unique_id": "0x00158d0006f39e88_battery_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": { + "state_class": "measurement" + }, + "supported_features": 0, + "device_class": "battery", + "unit_of_measurement": "%", + "original_name": "Office Switch battery", + "original_icon": null + }, + { + "entity_id": "sensor.office_switch_action", + "config_entry_id": "487ba0d979a943a6b590f834f80258d0", + "device_id": "c587194eb713c5cc45e0fef31080796b", + "area_id": null, + "unique_id": "0x00158d0006f39e88_action_zigbee2mqtt", + "platform": "mqtt", + "name": null, + "icon": null, + "disabled_by": null, + "capabilities": null, + "supported_features": 0, + "device_class": null, + "unit_of_measurement": null, + "original_name": "Office Switch action", + "original_icon": "mdi:gesture-double-tap" } ] } diff --git a/.storage/core.restore_state b/.storage/core.restore_state index 24a1193..cc15781 100644 --- a/.storage/core.restore_state +++ b/.storage/core.restore_state @@ -7,24 +7,24 @@ "entity_id": "person.dan", "state": "home", "attributes": { - "editable": true, + "editable": false, "id": "dan", - "latitude": 41.3990267, - "longitude": -82.233228, - "gps_accuracy": 14, - "source": "device_tracker.dan_dansphone", + "latitude": 41.399037, + "longitude": -82.2331938, + "gps_accuracy": 11, + "source": "device_tracker.sm_n960u", "user_id": "e2ac2db8725247b0bb84b03718a01c39", "friendly_name": "Dan" }, - "last_changed": "2020-09-21T16:00:22.837609+00:00", - "last_updated": "2020-09-21T16:15:33.168814+00:00", + "last_changed": "2021-11-04T05:13:46.408785+00:00", + "last_updated": "2021-11-04T05:14:08.377704+00:00", "context": { - "id": "acd274d2fc2511eab711775206e3095b", + "id": "95eebc813860505bd3e4287ab2eb2565", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:14:08.459128+00:00" }, { "state": { @@ -34,15 +34,15 @@ "editable": true, "friendly_name": "sleeping" }, - "last_changed": "2020-09-21T16:00:40.178457+00:00", - "last_updated": "2020-09-21T16:00:40.178457+00:00", + "last_changed": "2021-11-04T05:13:52.487414+00:00", + "last_updated": "2021-11-04T05:13:52.487414+00:00", "context": { - "id": "988ef7a8fc2311ea909b5b44a6987ff6", + "id": "5b0bbb1f93020aac91d380d9a3f4c5b4", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:14:08.459128+00:00" }, { "state": { @@ -52,39 +52,357 @@ "editable": true, "friendly_name": "thermostat_mode" }, - "last_changed": "2020-09-21T16:00:40.179613+00:00", - "last_updated": "2020-09-21T16:00:40.179613+00:00", + "last_changed": "2021-11-04T05:13:52.488063+00:00", + "last_updated": "2021-11-04T05:13:52.488063+00:00", "context": { - "id": "988f2660fc2311eaa117adeed26f907e", + "id": "9953f1b2aaecb34e721e5e456610b84f", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:14:08.459128+00:00" }, { "state": { - "entity_id": "device_tracker.dan_dansphone", - "state": "home", + "entity_id": "sensor.sm_n960u_battery_level", + "state": "40", "attributes": { - "source_type": "gps", - "battery_level": 82, - "latitude": 41.3990267, - "longitude": -82.233228, - "gps_accuracy": 14, - "velocity": 0, - "tid": "dd", - "friendly_name": "Dan" + "unit_of_measurement": "%", + "friendly_name": "SM-N960U Battery Level", + "icon": "mdi:battery-40", + "device_class": "battery" }, - "last_changed": "2020-09-21T16:15:33.166241+00:00", - "last_updated": "2020-09-21T16:15:33.166241+00:00", + "last_changed": "2021-11-04T05:14:05.497508+00:00", + "last_updated": "2021-11-04T05:14:05.497508+00:00", "context": { - "id": "acd2149afc2511eaaa4b096f4e2c4d32", + "id": "3346e60960804ef1b9937ada634a62b7", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_battery_state", + "state": "discharging", + "attributes": { + "friendly_name": "SM-N960U Battery State", + "icon": "mdi:battery-minus", + "device_class": "battery" + }, + "last_changed": "2021-11-04T05:14:05.498621+00:00", + "last_updated": "2021-11-04T05:14:05.498621+00:00", + "context": { + "id": "475654b0adab3b5eb54f0fb4f77c88e5", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_wifi_connection", + "state": "DD", + "attributes": { + "is_hidden": false, + "friendly_name": "SM-N960U Wifi Connection", + "icon": "mdi:wifi" + }, + "last_changed": "2021-11-04T05:14:05.499582+00:00", + "last_updated": "2021-11-04T05:14:05.499582+00:00", + "context": { + "id": "1de69abbf1fc179cc4a79da504ac81be", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_bluetooth_connection", + "state": "0", + "attributes": { + "connected_not_paired_devices": "[]", + "connected_paired_devices": "[]", + "paired_devices": "[88:E0:34:36:91:72, 00:06:66:1E:27:3A, 00:1E:AE:9D:26:78]", + "unit_of_measurement": "connection(s)", + "friendly_name": "SM-N960U Bluetooth Connection", + "icon": "mdi:bluetooth" + }, + "last_changed": "2021-11-04T05:14:05.500458+00:00", + "last_updated": "2021-11-04T05:14:05.500458+00:00", + "context": { + "id": "15c94add5b754c5aedc5151c025d20fc", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_geocoded_location", + "state": "353 Seeley St, Amherst, OH 44001, USA", + "attributes": { + "Administrative Area": "Ohio", + "Country": "United States", + "ISO Country Code": "US", + "Latitude": 41.399014, + "Locality": "Amherst", + "Longitude": -82.23327, + "Postal Code": "44001", + "Sub Administrative Area": "Lorain County", + "Sub Locality": "null", + "Sub Thoroughfare": "353", + "Thoroughfare": "Seeley Street", + "friendly_name": "SM-N960U Geocoded Location", + "icon": "mdi:map" + }, + "last_changed": "2021-11-04T05:14:05.501326+00:00", + "last_updated": "2021-11-04T05:14:05.501326+00:00", + "context": { + "id": "6d7704b3ee7e56dd2caa255a103fcf39", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_light_sensor", + "state": "9", + "attributes": { + "unit_of_measurement": "lx", + "friendly_name": "SM-N960U Light Sensor", + "icon": "mdi:brightness-5", + "device_class": "illuminance" + }, + "last_changed": "2021-11-04T05:14:05.502176+00:00", + "last_updated": "2021-11-04T05:14:05.502176+00:00", + "context": { + "id": "6a0fca08dee08e01bb82cc1b40ca8848", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_next_alarm", + "state": "2021-11-04T13:00:00.000Z", + "attributes": { + "Local Time": "Thu Nov 04 09:00:00 EDT 2021", + "Package": "com.urbandroid.sleep", + "Time in Milliseconds": 1636030800000, + "friendly_name": "SM-N960U Next Alarm", + "icon": "mdi:alarm", + "device_class": "timestamp" + }, + "last_changed": "2021-11-04T05:14:05.503030+00:00", + "last_updated": "2021-11-04T05:14:05.503030+00:00", + "context": { + "id": "0b53def8535d77ca1d0d1226caba5e56", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_storage_sensor", + "state": "33", + "attributes": { + "Free internal storage": "37GB", + "Total internal storage": "110GB", + "unit_of_measurement": "%", + "friendly_name": "SM-N960U Storage Sensor", + "icon": "mdi:harddisk" + }, + "last_changed": "2021-11-04T05:14:05.503878+00:00", + "last_updated": "2021-11-04T05:14:05.503878+00:00", + "context": { + "id": "4f662d6492e980be5258fcd743e0e065", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_audio_sensor", + "state": "normal", + "attributes": { + "friendly_name": "SM-N960U Audio Sensor", + "icon": "mdi:volume-high" + }, + "last_changed": "2021-11-04T05:14:05.504892+00:00", + "last_updated": "2021-11-04T05:14:05.504892+00:00", + "context": { + "id": "ff9aaf5f8dd93951b77c337c845037a3", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_do_not_disturb_sensor", + "state": "off", + "attributes": { + "friendly_name": "SM-N960U Do Not Disturb Sensor", + "icon": "mdi:minus-circle" + }, + "last_changed": "2021-11-04T05:14:05.505777+00:00", + "last_updated": "2021-11-04T05:14:05.505777+00:00", + "context": { + "id": "87f2d8a0c1b84b64250481f22158a3aa", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_last_reboot", + "state": "2021-10-18T19:15:27Z", + "attributes": { + "Local Time": "Mon Oct 18 15:15:27 EDT 2021", + "Time in Milliseconds": 1634584527588, + "friendly_name": "SM-N960U Last Reboot", + "icon": "mdi:restart", + "device_class": "timestamp" + }, + "last_changed": "2021-11-04T05:14:05.506643+00:00", + "last_updated": "2021-11-04T05:14:05.506643+00:00", + "context": { + "id": "8c5162b3e93e75d68c88bd0c263693e9", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_pressure_sensor", + "state": "1004.3", + "attributes": { + "unit_of_measurement": "hPa", + "friendly_name": "SM-N960U Pressure Sensor", + "icon": "mdi:gauge", + "device_class": "pressure" + }, + "last_changed": "2021-11-04T05:14:05.507497+00:00", + "last_updated": "2021-11-04T05:14:05.507497+00:00", + "context": { + "id": "b728aa2ec0e7b0c7d00a5e9a40065fcd", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_proximity_sensor", + "state": "8", + "attributes": { + "friendly_name": "SM-N960U Proximity Sensor", + "icon": "mdi:leak" + }, + "last_changed": "2021-11-04T05:14:05.508351+00:00", + "last_updated": "2021-11-04T05:14:05.508351+00:00", + "context": { + "id": "b18f2822f6764866ca724b9a6dc516e5", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_charger_type", + "state": "none", + "attributes": { + "friendly_name": "SM-N960U Charger Type", + "icon": "mdi:battery" + }, + "last_changed": "2021-11-04T05:14:05.509209+00:00", + "last_updated": "2021-11-04T05:14:05.509209+00:00", + "context": { + "id": "cab1705f444adf645792386c43c4e339", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_battery_health", + "state": "good", + "attributes": { + "friendly_name": "SM-N960U Battery Health", + "icon": "mdi:battery-heart-variant" + }, + "last_changed": "2021-11-04T05:14:05.510046+00:00", + "last_updated": "2021-11-04T05:14:05.510046+00:00", + "context": { + "id": "244be23fdabffb8b4ea0b61b1ed7140a", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "sensor.sm_n960u_battery_temperature", + "state": "21.1", + "attributes": { + "unit_of_measurement": "\u00b0F", + "friendly_name": "SM-N960U Battery Temperature", + "icon": "mdi:battery", + "device_class": "temperature" + }, + "last_changed": "2021-11-04T05:14:05.510912+00:00", + "last_updated": "2021-11-04T05:14:05.510912+00:00", + "context": { + "id": "7bc0575c2888443928183f54e66127dc", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "binary_sensor.sm_n960u_is_charging", + "state": "off", + "attributes": { + "friendly_name": "SM-N960U Is Charging", + "icon": "mdi:power-plug-off", + "device_class": "plug" + }, + "last_changed": "2021-11-04T05:14:05.511812+00:00", + "last_updated": "2021-11-04T05:14:05.511812+00:00", + "context": { + "id": "3342a971325ccfe14627403f8d17ec81", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" }, { "state": { @@ -92,214 +410,409 @@ "state": "home", "attributes": { "source_type": "gps", - "latitude": 41.3990234, - "longitude": -82.2332167, - "gps_accuracy": 13, - "altitude": 174.0, - "course": 111, + "latitude": 41.399037, + "longitude": -82.2331938, + "gps_accuracy": 11, + "altitude": 172.0, + "course": 0, "speed": 0, - "vertical_accuracy": 2, + "vertical_accuracy": 3, "friendly_name": "Dans Phone" }, - "last_changed": "2020-09-21T16:15:37.114821+00:00", - "last_updated": "2020-09-21T16:15:37.114821+00:00", + "last_changed": "2021-11-04T05:14:05.617412+00:00", + "last_updated": "2021-11-04T05:14:05.617412+00:00", "context": { - "id": "af2c96affc2511eaa45197be0681c59d", + "id": "0db767e3b3c40817a15c400461939be2", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:14:08.459128+00:00" + }, + { + "state": { + "entity_id": "device_tracker.dan_dansphone", + "state": "home", + "attributes": { + "source_type": "gps", + "battery_level": 74, + "latitude": 41.3990354, + "longitude": -82.2331867, + "gps_accuracy": 11, + "friendly_name": "Dan" + }, + "last_changed": "2021-11-04T05:14:05.805204+00:00", + "last_updated": "2021-11-04T05:14:05.805204+00:00", + "context": { + "id": "c3b74675c117e4e49aa810a1b6143e41", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:14:08.459128+00:00" }, { "state": { "entity_id": "sensor.sengled_e11_g13_1d3e0b03_smartenergy_metering", "state": "0.0", "attributes": { + "state_class": "measurement", + "device_type": "Electric Metering", + "status": "NO_ALARMS", "unit_of_measurement": "W", "friendly_name": "sengled E11-G13 1d3e0b03 smartenergy_metering", "device_class": "power" }, - "last_changed": "2020-09-21T16:12:16.135072+00:00", - "last_updated": "2020-09-21T16:12:16.135072+00:00", + "last_changed": "2021-10-16T16:24:26.176723+00:00", + "last_updated": "2021-10-16T16:24:26.176723+00:00", "context": { - "id": "376182cffc2511eabc3eb90da3925e45", + "id": "49cfe0ff36514b4af8b072c16314bcac", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "sensor.sengled_e11_g13_fd3e0b03_smartenergy_metering", "state": "0.0", "attributes": { + "state_class": "measurement", + "device_type": "Electric Metering", + "status": "NO_ALARMS", "unit_of_measurement": "W", "friendly_name": "sengled E11-G13 fd3e0b03 smartenergy_metering", "device_class": "power" }, - "last_changed": "2020-09-21T16:10:32.486022+00:00", - "last_updated": "2020-09-21T16:10:32.486022+00:00", + "last_changed": "2021-10-16T16:24:26.186477+00:00", + "last_updated": "2021-10-16T16:24:26.186477+00:00", "context": { - "id": "f999ea5efc2411ea9594d362eb70c456", + "id": "a22aabe45def5a96e4443fe15353c503", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "sensor.sengled_e11_g13_ba220b03_smartenergy_metering", "state": "0.0", "attributes": { + "state_class": "measurement", + "device_type": "Electric Metering", + "status": "NO_ALARMS", "unit_of_measurement": "W", "friendly_name": "sengled E11-G13 ba220b03 smartenergy_metering", "device_class": "power" }, - "last_changed": "2020-09-21T16:10:32.952770+00:00", - "last_updated": "2020-09-21T16:10:32.952770+00:00", + "last_changed": "2021-10-16T16:24:26.195594+00:00", + "last_updated": "2021-10-16T16:24:26.195594+00:00", "context": { - "id": "f9e12630fc2411eab86f25050f0d2db7", + "id": "9393768168ad98f6a66d28236affbdea", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "sensor.sengled_e11_g13_d6681403_smartenergy_metering", - "state": "unknown", + "state": "0.0", "attributes": { + "state_class": "measurement", + "device_type": "Electric Metering", + "status": "NO_ALARMS", "unit_of_measurement": "W", "friendly_name": "sengled E11-G13 d6681403 smartenergy_metering", "device_class": "power" }, - "last_changed": "2020-09-21T16:01:09.055720+00:00", - "last_updated": "2020-09-21T16:01:09.055720+00:00", + "last_changed": "2021-10-16T16:24:26.203577+00:00", + "last_updated": "2021-10-16T16:24:26.203577+00:00", "context": { - "id": "a9c54afafc2311eaa6cf398b90b19bf8", + "id": "f7c792c8652b800ba4543afbda30e7fc", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "light.sengled_e11_g13_1d3e0b03_level_on_off", "state": "off", "attributes": { + "supported_color_modes": [ + "brightness" + ], "off_brightness": null, "friendly_name": "Entry Way", "supported_features": 41 }, - "last_changed": "2020-09-21T16:01:09.198589+00:00", - "last_updated": "2020-09-21T16:01:09.198589+00:00", + "last_changed": "2021-11-03T19:02:52.766372+00:00", + "last_updated": "2021-11-03T19:02:52.766372+00:00", "context": { - "id": "a9db154cfc2311eaafd70febf004711f", + "id": "a026b1a46e98bb86de7020317d6db862", "parent_id": null, - "user_id": null + "user_id": "e2ac2db8725247b0bb84b03718a01c39" } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "light.sengled_e11_g13_fd3e0b03_level_on_off", - "state": "off", + "state": "on", "attributes": { + "supported_color_modes": [ + "brightness" + ], + "color_mode": "brightness", + "brightness": 254, "off_brightness": null, "friendly_name": "Dinning Rom", "supported_features": 41 }, - "last_changed": "2020-09-21T16:01:09.301559+00:00", - "last_updated": "2020-09-21T16:01:09.301559+00:00", + "last_changed": "2021-11-04T02:54:47.852214+00:00", + "last_updated": "2021-11-04T02:54:47.852214+00:00", "context": { - "id": "a9eacb04fc2311eaa52f472282744a4d", + "id": "fed24a2309b0693ebc1a686aa8929fbf", "parent_id": null, - "user_id": null + "user_id": "e2ac2db8725247b0bb84b03718a01c39" } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "light.sengled_e11_g13_ba220b03_level_on_off", - "state": "off", + "state": "on", "attributes": { + "supported_color_modes": [ + "brightness" + ], + "color_mode": "brightness", + "brightness": 254, "off_brightness": null, "friendly_name": "Living Room", "supported_features": 41 }, - "last_changed": "2020-09-21T16:01:09.401255+00:00", - "last_updated": "2020-09-21T16:01:09.401255+00:00", + "last_changed": "2021-11-04T02:54:49.821120+00:00", + "last_updated": "2021-11-04T02:54:49.821120+00:00", "context": { - "id": "a9fa0175fc2311eaa43e97d70479f6a7", + "id": "51feff96d1757df097d5b32378f3234d", "parent_id": null, - "user_id": null + "user_id": "e2ac2db8725247b0bb84b03718a01c39" } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "light.sengled_e11_g13_d6681403_level_on_off", - "state": "on", + "state": "off", "attributes": { - "brightness": 254, + "supported_color_modes": [ + "brightness" + ], "off_brightness": null, "friendly_name": "Office", "supported_features": 41 }, - "last_changed": "2020-09-21T16:10:30.824296+00:00", - "last_updated": "2020-09-21T16:14:56.700966+00:00", + "last_changed": "2021-11-04T02:54:29.770893+00:00", + "last_updated": "2021-11-04T02:54:29.770893+00:00", "context": { - "id": "9715ede3fc2511ea8d755d9835e35668", + "id": "43cbf18fb0b0d9c32fb05c2b3ef84736", "parent_id": null, - "user_id": null + "user_id": "e2ac2db8725247b0bb84b03718a01c39" } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "sensor.sengled_e11_g13_af400b03_smartenergy_metering", "state": "unavailable", "attributes": { + "state_class": "measurement", "unit_of_measurement": "W", "friendly_name": "sengled E11-G13 af400b03 smartenergy_metering", "device_class": "power" }, - "last_changed": "2020-09-21T16:00:50.493391+00:00", - "last_updated": "2020-09-21T16:01:09.059100+00:00", + "last_changed": "2021-10-18T21:19:45.565788+00:00", + "last_updated": "2021-10-18T21:19:45.565788+00:00", "context": { - "id": "a9c5ce25fc2311ea9ba51751ecf462c8", + "id": "800ad05f1a8eb77f0956aadd2ea75917", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" }, { "state": { "entity_id": "light.sengled_e11_g13_af400b03_level_on_off", "state": "unavailable", "attributes": { + "supported_color_modes": [ + "brightness" + ], "friendly_name": "sengled E11-G13 af400b03 level, on_off", "supported_features": 41 }, - "last_changed": "2020-09-21T16:00:50.494204+00:00", - "last_updated": "2020-09-21T16:01:14.174243+00:00", + "last_changed": "2021-10-18T21:19:45.567171+00:00", + "last_updated": "2021-10-18T21:19:45.567171+00:00", "context": { - "id": "acd24f02fc2311ea993165a451332ddd", + "id": "09d6691729b885ee199dc24dcec127f7", "parent_id": null, "user_id": null } }, - "last_seen": "2020-09-21T16:15:50.497398+00:00" + "last_seen": "2021-11-04T05:08:04.659722+00:00" + }, + { + "state": { + "entity_id": "switch.ewelink_sa_003_zigbee_33eeea22_on_off", + "state": "off", + "attributes": { + "friendly_name": "Grow Fan" + }, + "last_changed": "2021-11-04T01:30:38.495714+00:00", + "last_updated": "2021-11-04T01:30:38.495714+00:00", + "context": { + "id": "bc5be675ff9831e771a6af652e942cf2", + "parent_id": null, + "user_id": "e2ac2db8725247b0bb84b03718a01c39" + } + }, + "last_seen": "2021-11-04T05:08:04.659722+00:00" + }, + { + "state": { + "entity_id": "switch.sonoff_s31_lite_zb_9478b723_on_off", + "state": "off", + "attributes": { + "friendly_name": "Dinning Room Switch" + }, + "last_changed": "2021-11-04T04:00:30.856952+00:00", + "last_updated": "2021-11-04T04:00:30.856952+00:00", + "context": { + "id": "1d4c560ea0ac84de0a13512e5d0308fb", + "parent_id": null, + "user_id": "e2ac2db8725247b0bb84b03718a01c39" + } + }, + "last_seen": "2021-11-04T05:08:04.659722+00:00" + }, + { + "state": { + "entity_id": "sensor.sengled_e11_g13_1d3e0b03_smartenergy_metering_summation_delivered", + "state": "3.679", + "attributes": { + "state_class": "total_increasing", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "unit_of_measurement": "kWh", + "friendly_name": "sengled E11-G13 1d3e0b03 smartenergy_metering summation_delivered", + "device_class": "energy" + }, + "last_changed": "2021-10-16T16:24:26.182056+00:00", + "last_updated": "2021-10-16T16:24:26.182056+00:00", + "context": { + "id": "fa83264b523ca69852a66bb380e804f5", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:08:04.659722+00:00" + }, + { + "state": { + "entity_id": "sensor.sengled_e11_g13_fd3e0b03_smartenergy_metering_summation_delivered", + "state": "72.683", + "attributes": { + "state_class": "total_increasing", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "unit_of_measurement": "kWh", + "friendly_name": "sengled E11-G13 fd3e0b03 smartenergy_metering summation_delivered", + "device_class": "energy" + }, + "last_changed": "2021-10-16T16:24:26.190871+00:00", + "last_updated": "2021-10-16T16:24:26.190871+00:00", + "context": { + "id": "913ad5b77c65bf860bd0291db183aa99", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:08:04.659722+00:00" + }, + { + "state": { + "entity_id": "sensor.sengled_e11_g13_ba220b03_smartenergy_metering_summation_delivered", + "state": "85.364", + "attributes": { + "state_class": "total_increasing", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "unit_of_measurement": "kWh", + "friendly_name": "sengled E11-G13 ba220b03 smartenergy_metering summation_delivered", + "device_class": "energy" + }, + "last_changed": "2021-10-16T16:24:26.199573+00:00", + "last_updated": "2021-10-16T16:24:26.199573+00:00", + "context": { + "id": "3b95d4f04e71ea6aeefa7b6467796c2d", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:08:04.659722+00:00" + }, + { + "state": { + "entity_id": "sensor.sengled_e11_g13_d6681403_smartenergy_metering_summation_delivered", + "state": "74.519", + "attributes": { + "state_class": "total_increasing", + "device_type": "Electric Metering", + "status": "NO_ALARMS", + "unit_of_measurement": "kWh", + "friendly_name": "sengled E11-G13 d6681403 smartenergy_metering summation_delivered", + "device_class": "energy" + }, + "last_changed": "2021-10-16T16:24:26.207400+00:00", + "last_updated": "2021-10-16T16:24:26.207400+00:00", + "context": { + "id": "4d2cfd95c15c4131eca477133f44fafc", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:08:04.659722+00:00" + }, + { + "state": { + "entity_id": "sensor.sengled_e11_g13_af400b03_smartenergy_metering_summation_delivered", + "state": "unavailable", + "attributes": { + "state_class": "total_increasing", + "unit_of_measurement": "kWh", + "friendly_name": "sengled E11-G13 af400b03 smartenergy_metering summation_delivered", + "device_class": "energy" + }, + "last_changed": "2021-10-18T21:19:45.566571+00:00", + "last_updated": "2021-10-18T21:19:45.566571+00:00", + "context": { + "id": "17d55716b8c3b76afcedb3c0c1723bf9", + "parent_id": null, + "user_id": null + } + }, + "last_seen": "2021-11-04T05:08:04.659722+00:00" } ] } \ No newline at end of file diff --git a/.storage/frontend.user_data_e2ac2db8725247b0bb84b03718a01c39 b/.storage/frontend.user_data_e2ac2db8725247b0bb84b03718a01c39 index cd12438..177e3c0 100644 --- a/.storage/frontend.user_data_e2ac2db8725247b0bb84b03718a01c39 +++ b/.storage/frontend.user_data_e2ac2db8725247b0bb84b03718a01c39 @@ -1,9 +1,14 @@ { + "version": 1, + "key": "frontend.user_data_e2ac2db8725247b0bb84b03718a01c39", "data": { "core": { "showAdvanced": true + }, + "language": { + "language": "en", + "number_format": "language", + "time_format": "language" } - }, - "key": "frontend.user_data_e2ac2db8725247b0bb84b03718a01c39", - "version": 1 + } } \ No newline at end of file diff --git a/.storage/http b/.storage/http index 93d44b8..ab3a1ad 100644 --- a/.storage/http +++ b/.storage/http @@ -2,12 +2,16 @@ "version": 1, "key": "http", "data": { + "use_x_forwarded_for": true, + "trusted_proxies": [ + "192.168.86.198" + ], + "login_attempts_threshold": -1, "ip_ban_enabled": true, - "server_port": 8123, "ssl_profile": "modern", + "server_port": 8123, "cors_allowed_origins": [ "https://cast.home-assistant.io" - ], - "login_attempts_threshold": -1 + ] } } \ No newline at end of file diff --git a/.storage/lovelace.20_21 b/.storage/lovelace.20_21 new file mode 100644 index 0000000..532b2e1 --- /dev/null +++ b/.storage/lovelace.20_21 @@ -0,0 +1,120 @@ +{ + "version": 1, + "key": "lovelace.20_21", + "data": { + "config": { + "title": "Home", + "views": [ + { + "path": "default_view", + "title": "Home", + "cards": [ + { + "type": "weather-forecast", + "entity": "weather.home_2", + "show_forecast": true + }, + { + "type": "entities", + "entities": [ + { + "entity": "light.table" + }, + { + "entity": "light.lamp_left" + }, + { + "entity": "light.lamp_right" + }, + { + "entity": "light.sengled_e11_g13_d6681403_level_on_off" + }, + { + "entity": "light.sengled_e11_g13_1d3e0b03_level_on_off" + }, + { + "entity": "light.sengled_e11_g13_ba220b03_level_on_off" + }, + { + "entity": "light.sengled_e11_g13_fd3e0b03_level_on_off" + } + ], + "title": "Lights", + "show_header_toggle": true, + "state_color": false + }, + { + "type": "entities", + "entities": [ + { + "entity": "sensor.home_humidity" + }, + { + "entity": "sensor.home_temperature" + }, + { + "entity": "sensor.thermostat_away_mode" + }, + { + "entity": "sensor.thermostat_climate_mode" + }, + { + "entity": "sensor.thermostat_current_status" + }, + { + "entity": "sensor.thermostat_outside_temperature" + } + ], + "title": "Sensor", + "state_color": false + }, + { + "type": "glance", + "entities": [ + { + "entity": "person.dan" + }, + { + "entity": "binary_sensor.door_contact" + } + ] + }, + { + "type": "entities", + "entities": [ + "switch.sonoff_s31_lite_zb_9478b723_on_off", + "switch.plug_in_appliance_module" + ], + "title": "Switch" + } + ] + }, + { + "title": "HVAC", + "path": "hvac", + "badges": [], + "cards": [ + { + "type": "thermostat", + "entity": "climate.home" + } + ] + }, + { + "title": "Grow", + "path": "grow", + "badges": [], + "cards": [ + { + "type": "entities", + "entities": [ + "switch.ewelink_sa_003_zigbee_33eeea22_on_off" + ], + "title": "Basement" + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/.storage/lovelace_dashboards b/.storage/lovelace_dashboards index 6c756be..2bddef8 100644 --- a/.storage/lovelace_dashboards +++ b/.storage/lovelace_dashboards @@ -2,6 +2,15 @@ "version": 1, "key": "lovelace_dashboards", "data": { - "items": [] + "items": [ + { + "require_admin": false, + "show_in_sidebar": true, + "title": "21", + "url_path": "20-21", + "mode": "storage", + "id": "20_21" + } + ] } } \ No newline at end of file diff --git a/.storage/mobile_app b/.storage/mobile_app index 5760c1e..130aae3 100644 --- a/.storage/mobile_app +++ b/.storage/mobile_app @@ -19,17 +19,7 @@ "sensor": { "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_audio_sensor": { "added": true, - "attributes": { - "audio_mode": "normal", - "is_headphones": false, - "is_mic_muted": false, - "is_music_active": true, - "is_speakerphone_on": false, - "volume_level_alarm": 11, - "volume_level_call": 3, - "volume_level_music": 14, - "volume_level_ring": 15 - }, + "attributes": {}, "icon": "mdi:volume-high", "name": "Audio Sensor", "state": "normal", @@ -40,7 +30,7 @@ "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_battery_health": { "added": true, "attributes": {}, - "icon": "mdi:battery-charging-40", + "icon": "mdi:battery-heart-variant", "name": "Battery Health", "state": "good", "type": "sensor", @@ -53,7 +43,7 @@ "device_class": "battery", "icon": "mdi:battery-80", "name": "Battery Level", - "state": 82, + "state": 81, "type": "sensor", "unique_id": "battery_level", "unit_of_measurement": "%", @@ -61,11 +51,7 @@ }, "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_battery_state": { "added": true, - "attributes": { - "battery_health": "good", - "charger_type": "none", - "is_charging": false - }, + "attributes": {}, "device_class": "battery", "icon": "mdi:battery-minus", "name": "Battery State", @@ -79,8 +65,7 @@ "attributes": { "connected_not_paired_devices": "[]", "connected_paired_devices": "[]", - "is_bt_on": true, - "paired_devices": "[B0:B4:48:83:AA:66, 00:00:AB:CD:21:05, 08:EB:ED:D5:AB:96, 00:1E:AE:9D:26:78]" + "paired_devices": "[B0:B4:48:83:AA:66, 00:06:66:1E:27:3A, 00:00:AB:CD:21:05, 08:EB:ED:D5:AB:96, 00:1E:AE:9D:26:78, 91:60:86:65:77:53]" }, "icon": "mdi:bluetooth", "name": "Bluetooth Connection", @@ -134,11 +119,14 @@ }, "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_last_reboot": { "added": true, - "attributes": {}, + "attributes": { + "Local Time": "Wed May 05 04:39:19 EDT 2021", + "Time in Milliseconds": 1620203959196 + }, "device_class": "timestamp", "icon": "mdi:restart", "name": "Last Reboot", - "state": "2020-09-18T20:52:42Z", + "state": "2021-05-05T08:39:19Z", "type": "sensor", "unique_id": "last_reboot", "webhook_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797" @@ -149,7 +137,7 @@ "device_class": "illuminance", "icon": "mdi:brightness-5", "name": "Light Sensor", - "state": "25", + "state": "19", "type": "sensor", "unique_id": "light_sensor", "unit_of_measurement": "lx", @@ -158,14 +146,14 @@ "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_next_alarm": { "added": true, "attributes": { - "Local Time": "Mon Sep 21 19:40:01 EDT 2020", - "Package": "com.sec.android.app.clockpackage", - "Time in Milliseconds": 1600731610000.0 + "Local Time": "Thu May 20 08:00:00 EDT 2021", + "Package": "com.urbandroid.sleep", + "Time in Milliseconds": 1621512000000 }, "device_class": "timestamp", "icon": "mdi:alarm", "name": "Next Alarm", - "state": "2020-09-21T23:40:01.000Z", + "state": "2021-05-20T12:00:00.000Z", "type": "sensor", "unique_id": "next_alarm", "webhook_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797" @@ -176,7 +164,7 @@ "device_class": "pressure", "icon": "mdi:gauge", "name": "Pressure Sensor", - "state": "1009.8", + "state": "1002.5", "type": "sensor", "unique_id": "pressure_sensor", "unit_of_measurement": "hPa", @@ -195,14 +183,12 @@ "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_storage_sensor": { "added": true, "attributes": { - "Free external storage": "No SD Card", - "Free internal storage": "48GB", - "Total external storage": "No SD Card", + "Free internal storage": "50GB", "Total internal storage": "110GB" }, "icon": "mdi:harddisk", "name": "Storage Sensor", - "state": 44, + "state": 45, "type": "sensor", "unique_id": "storage_sensor", "unit_of_measurement": "%", @@ -211,13 +197,7 @@ "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_wifi_connection": { "added": true, "attributes": { - "bssid": "88:3d:24:88:e2:ad", - "frequency": 5745, - "ip_address": "192.168.86.163", - "is_hidden": false, - "is_wifi_on": true, - "link_speed": 234, - "signal_level": -74 + "is_hidden": false }, "icon": "mdi:wifi", "name": "Wifi Connection", @@ -225,6 +205,18 @@ "type": "sensor", "unique_id": "wifi_connection", "webhook_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797" + }, + "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797_battery_temperature": { + "unique_id": "battery_temperature", + "state": 28.8, + "type": "sensor", + "icon": "mdi:battery", + "attributes": {}, + "name": "Battery Temperature", + "device_class": "temperature", + "unit_of_measurement": "\u00b0C", + "webhook_id": "eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797", + "added": true } } } diff --git a/.storage/person b/.storage/person index ae03644..9e49700 100644 --- a/.storage/person +++ b/.storage/person @@ -1,16 +1,17 @@ { + "version": 2, + "key": "person", "data": { "items": [ { "device_trackers": [ - "device_tracker.dan_dansphone" + "device_tracker.sm_n960u" ], "id": "dan", "name": "Dan", - "user_id": "e2ac2db8725247b0bb84b03718a01c39" + "user_id": "e2ac2db8725247b0bb84b03718a01c39", + "picture": null } ] - }, - "key": "person", - "version": 2 + } } \ No newline at end of file diff --git a/.storage/zha.storage b/.storage/zha.storage index 9f2dd81..8ed0f09 100644 --- a/.storage/zha.storage +++ b/.storage/zha.storage @@ -6,27 +6,47 @@ { "name": "Silicon Labs EZSP", "ieee": "00:0d:6f:00:0a:ff:73:f8", - "last_seen": 1596130424.920412 + "last_seen": 1636001002.7798755 }, { "name": "sengled E11-G13", "ieee": "b0:ce:18:14:03:0b:3e:1d", - "last_seen": 1600704603.4688668 + "last_seen": 1636002128.3008697 }, { "name": "sengled E11-G13", "ieee": "b0:ce:18:14:03:0b:3e:fd", - "last_seen": 1600704632.465772 + "last_seen": 1636002335.1381133 }, { "name": "sengled E11-G13", "ieee": "b0:ce:18:14:03:0b:22:ba", - "last_seen": 1600704632.9347198 + "last_seen": 1636002187.7172956 }, { "name": "sengled E11-G13", "ieee": "b0:ce:18:14:03:14:68:d6", - "last_seen": 1600704630.8047118 + "last_seen": 1636002481.4106457 + }, + { + "name": "sengled E11-G13", + "ieee": "b0:ce:18:14:03:0b:40:af", + "last_seen": 1634584548.0082166 + }, + { + "name": "LUMI lumi.sensor_magnet.aq2", + "ieee": "00:15:8d:00:07:0b:32:d6", + "last_seen": 1631821141.6237457 + }, + { + "name": "unk_manufacturer unk_model", + "ieee": "00:12:4b:00:22:ea:ee:33", + "last_seen": 1636002199.043916 + }, + { + "name": "SONOFF S31 Lite zb", + "ieee": "00:12:4b:00:23:b7:78:94", + "last_seen": 1636002438.6431177 } ] } diff --git a/.storage/zwave_js.legacy_zwave_migration b/.storage/zwave_js.legacy_zwave_migration new file mode 100644 index 0000000..bfed8e5 --- /dev/null +++ b/.storage/zwave_js.legacy_zwave_migration @@ -0,0 +1,73 @@ +{ + "version": 1, + "key": "zwave_js.legacy_zwave_migration", + "data": { + "168e1b19293508dafb169cd8270442a4": { + "sensor.zwave_test_sensor_battery_level": { + "node_id": 3, + "endpoint_index": 0, + "command_class": 128, + "value_property_name": "level", + "value_property_key_name": null, + "value_id": "3-128-0-level", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "domain": "sensor", + "entity_id": "sensor.zwave_test_sensor_battery_level", + "unique_id": "4189927064.3-128-0-level", + "unit_of_measurement": "%" + }, + "binary_sensor.door_window_sensor_access_control_window_door_is_open": { + "node_id": 3, + "endpoint_index": 0, + "command_class": 113, + "value_property_name": "Access Control", + "value_property_key_name": "Door state", + "value_id": "3-113-0-Access Control-Door state", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "domain": "binary_sensor", + "entity_id": "binary_sensor.door_window_sensor_access_control_window_door_is_open", + "unique_id": "4189927064.3-113-0-Access Control-Door state.22", + "unit_of_measurement": null + }, + "binary_sensor.zwave_test_sensor_low_battery_level": { + "node_id": 3, + "endpoint_index": 0, + "command_class": 128, + "value_property_name": "isLow", + "value_property_key_name": null, + "value_id": "3-128-0-isLow", + "device_id": "576d2874d1e67620b848c789be7d9e07", + "domain": "binary_sensor", + "entity_id": "binary_sensor.zwave_test_sensor_low_battery_level", + "unique_id": "4189927064.3-128-0-isLow", + "unit_of_measurement": null + }, + "switch.plug_in_appliance_module": { + "node_id": 2, + "endpoint_index": 0, + "command_class": 37, + "value_property_name": "currentValue", + "value_property_key_name": null, + "value_id": "2-37-0-currentValue", + "device_id": "b43320eeef9b58d28234494e0aef12b8", + "domain": "switch", + "entity_id": "switch.plug_in_appliance_module", + "unique_id": "4189927064.2-37-0-currentValue", + "unit_of_measurement": null + }, + "select.plug_in_appliance_module_local_protection_state": { + "node_id": 2, + "endpoint_index": 0, + "command_class": 117, + "value_property_name": "local", + "value_property_key_name": null, + "value_id": "2-117-0-local", + "device_id": "b43320eeef9b58d28234494e0aef12b8", + "domain": "select", + "entity_id": "select.plug_in_appliance_module_local_protection_state", + "unique_id": "4189927064.2-117-0-local", + "unit_of_measurement": null + } + } + } +} \ No newline at end of file diff --git a/OZW_Log.txt b/OZW_Log.txt index 3766217..58041c4 100644 --- a/OZW_Log.txt +++ b/OZW_Log.txt @@ -1,916 +1,311 @@ -2021-09-06 20:50:44.304 Always, OpenZwave Version 1.4.3469 Starting Up -2021-09-06 20:51:08.917 Info, Setting Up Provided Network Key for Secure Communications -2021-09-06 20:51:08.918 Info, mgr, Added driver for controller /dev/ttyUSB0 -2021-09-06 20:51:08.918 Info, Opening controller /dev/ttyUSB0 -2021-09-06 20:51:08.919 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) -2021-09-06 20:51:08.922 Info, Serial port /dev/ttyUSB0 opened (attempt 1) -2021-09-06 20:51:08.923 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9 -2021-09-06 20:51:08.923 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_MEMORY_GET_ID: 0x01, 0x03, 0x00, 0x20, 0xdc -2021-09-06 20:51:08.923 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: 0x01, 0x03, 0x00, 0x05, 0xf9 -2021-09-06 20:51:08.923 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_GET_CAPABILITIES: 0x01, 0x03, 0x00, 0x07, 0xfb -2021-09-06 20:51:08.924 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_SUC_NODE_ID: 0x01, 0x03, 0x00, 0x56, 0xaa -2021-09-06 20:51:08.924 Detail, -2021-09-06 20:51:08.924 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x15) - FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9 -2021-09-06 20:51:08.928 Detail, contrlr, Received: 0x01, 0x10, 0x01, 0x15, 0x5a, 0x2d, 0x57, 0x61, 0x76, 0x65, 0x20, 0x34, 0x2e, 0x30, 0x35, 0x00, 0x01, 0x97 -2021-09-06 20:51:08.928 Detail, -2021-09-06 20:51:08.928 Info, contrlr, Received reply to FUNC_ID_ZW_GET_VERSION: -2021-09-06 20:51:08.928 Info, contrlr, Static Controller library, version Z-Wave 4.05 -2021-09-06 20:51:08.928 Detail, Node045, Expected reply was received -2021-09-06 20:51:08.928 Detail, Node045, Message transaction complete -2021-09-06 20:51:08.928 Detail, -2021-09-06 20:51:08.928 Detail, contrlr, Removing current message -2021-09-06 20:51:08.928 Detail, -2021-09-06 20:51:08.928 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x20) - FUNC_ID_ZW_MEMORY_GET_ID: 0x01, 0x03, 0x00, 0x20, 0xdc -2021-09-06 20:51:08.931 Detail, contrlr, Received: 0x01, 0x08, 0x01, 0x20, 0xf9, 0xbd, 0x36, 0x98, 0x01, 0x3d -2021-09-06 20:51:08.932 Detail, -2021-09-06 20:51:08.932 Info, contrlr, Received reply to FUNC_ID_ZW_MEMORY_GET_ID. Home ID = 0xf9bd3698. Our node ID = 1 -2021-09-06 20:51:08.932 Detail, Node189, Expected reply was received -2021-09-06 20:51:08.932 Detail, Node189, Message transaction complete -2021-09-06 20:51:08.932 Detail, -2021-09-06 20:51:08.932 Detail, contrlr, Removing current message -2021-09-06 20:51:08.932 Detail, -2021-09-06 20:51:08.932 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x05) - FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: 0x01, 0x03, 0x00, 0x05, 0xf9 -2021-09-06 20:51:08.934 Detail, contrlr, Received: 0x01, 0x04, 0x01, 0x05, 0x1c, 0xe3 -2021-09-06 20:51:08.934 Detail, -2021-09-06 20:51:08.934 Info, contrlr, Received reply to FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: -2021-09-06 20:51:08.934 Info, contrlr, There is a SUC ID Server (SIS) in this network. -2021-09-06 20:51:08.934 Info, contrlr, The PC controller is an inclusion static update controller (SUC) and was the original primary before the SIS was added. -2021-09-06 20:51:08.935 Detail, Node227, Expected reply was received -2021-09-06 20:51:08.935 Detail, Node227, Message transaction complete -2021-09-06 20:51:08.935 Detail, -2021-09-06 20:51:08.935 Detail, contrlr, Removing current message -2021-09-06 20:51:08.935 Detail, -2021-09-06 20:51:08.935 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x07) - FUNC_ID_SERIAL_API_GET_CAPABILITIES: 0x01, 0x03, 0x00, 0x07, 0xfb -2021-09-06 20:51:08.944 Detail, contrlr, Received: 0x01, 0x2b, 0x01, 0x07, 0x04, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xfe, 0x81, 0xff, 0x88, 0xcf, 0x1f, 0x00, 0x00, 0xfb, 0x9f, 0x7d, 0xa0, 0x67, 0x00, 0x80, 0x80, 0x00, 0x80, 0x86, 0x00, 0x00, 0x00, 0xe8, 0x73, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03 -2021-09-06 20:51:08.944 Detail, -2021-09-06 20:51:08.944 Info, contrlr, Received reply to FUNC_ID_SERIAL_API_GET_CAPABILITIES -2021-09-06 20:51:08.944 Info, contrlr, Serial API Version: 4.32 -2021-09-06 20:51:08.944 Info, contrlr, Manufacturer ID: 0x0000 -2021-09-06 20:51:08.944 Info, contrlr, Product Type: 0x0001 -2021-09-06 20:51:08.944 Info, contrlr, Product ID: 0x0001 -2021-09-06 20:51:08.944 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_RANDOM: 0x01, 0x04, 0x00, 0x1c, 0x20, 0xc7 -2021-09-06 20:51:08.945 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_GET_INIT_DATA: 0x01, 0x03, 0x00, 0x02, 0xfe -2021-09-06 20:51:08.945 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_SET_TIMEOUTS: 0x01, 0x05, 0x00, 0x06, 0x64, 0x0f, 0x97 -2021-09-06 20:51:08.945 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION: 0x01, 0x07, 0x00, 0x03, 0x01, 0x02, 0x01, 0x00, 0xf9 -2021-09-06 20:51:08.945 Detail, Node032, Expected reply was received -2021-09-06 20:51:08.945 Detail, Node032, Message transaction complete -2021-09-06 20:51:08.945 Detail, -2021-09-06 20:51:08.945 Detail, contrlr, Removing current message -2021-09-06 20:51:08.945 Detail, -2021-09-06 20:51:08.945 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x56) - FUNC_ID_ZW_GET_SUC_NODE_ID: 0x01, 0x03, 0x00, 0x56, 0xaa -2021-09-06 20:51:08.948 Detail, contrlr, Received: 0x01, 0x04, 0x01, 0x56, 0x01, 0xad -2021-09-06 20:51:08.948 Detail, -2021-09-06 20:51:08.949 Info, contrlr, Received reply to GET_SUC_NODE_ID. Node ID = 1 -2021-09-06 20:51:08.949 Detail, Node173, Expected reply was received -2021-09-06 20:51:08.949 Detail, Node173, Message transaction complete -2021-09-06 20:51:08.949 Detail, -2021-09-06 20:51:08.949 Detail, contrlr, Removing current message -2021-09-06 20:51:08.949 Detail, -2021-09-06 20:51:08.949 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x1c) - FUNC_ID_ZW_GET_RANDOM: 0x01, 0x04, 0x00, 0x1c, 0x20, 0xc7 -2021-09-06 20:51:09.004 Detail, contrlr, Received: 0x01, 0x25, 0x01, 0x1c, 0x01, 0x20, 0x8c, 0xf8, 0xa3, 0xec, 0xf5, 0x9f, 0x7d, 0x01, 0xb4, 0x2d, 0x86, 0xb7, 0x62, 0xf6, 0x75, 0x5a, 0x9b, 0xd8, 0x0e, 0xab, 0xa9, 0xae, 0x7a, 0xf6, 0xc3, 0xc2, 0xd1, 0x9a, 0xa9, 0xf6, 0x79, 0xa7, 0x7e -2021-09-06 20:51:09.004 Detail, -2021-09-06 20:51:09.004 Info, contrlr, Received reply to FUNC_ID_ZW_GET_RANDOM: true -2021-09-06 20:51:09.004 Detail, Node032, Expected reply was received -2021-09-06 20:51:09.004 Detail, Node032, Message transaction complete -2021-09-06 20:51:09.005 Detail, -2021-09-06 20:51:09.005 Detail, contrlr, Removing current message -2021-09-06 20:51:09.005 Detail, -2021-09-06 20:51:09.005 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x02) - FUNC_ID_SERIAL_API_GET_INIT_DATA: 0x01, 0x03, 0x00, 0x02, 0xfe -2021-09-06 20:51:09.062 Detail, contrlr, Received: 0x01, 0x25, 0x01, 0x02, 0x05, 0x08, 0x1d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xcf -2021-09-06 20:51:09.062 Detail, -2021-09-06 20:51:09.062 Info, mgr, Driver with Home ID of 0xf9bd3698 is now ready. -2021-09-06 20:51:09.062 Info, -2021-09-06 20:51:09.071 Info, contrlr, Received reply to FUNC_ID_SERIAL_API_GET_INIT_DATA: -2021-09-06 20:51:09.071 Info, contrlr, Node 001 - Known -2021-09-06 20:51:09.071 Detail, Node001, AdvanceQueries queryPending=0 queryRetries=0 queryStage=CacheLoad live=1 -2021-09-06 20:51:09.071 Detail, Node001, QueryStage_CacheLoad -2021-09-06 20:51:09.071 Info, Node001, Node Identity Codes: 0000:0001:0001 -2021-09-06 20:51:09.071 Detail, Node001, QueryStage_Associations -2021-09-06 20:51:09.071 Detail, Node001, QueryStage_Neighbors -2021-09-06 20:51:09.071 Detail, contrlr, Requesting routing info (neighbor list) for Node 1 -2021-09-06 20:51:09.071 Detail, Node001, Queuing (Command) Get Routing Info (Node=1): 0x01, 0x07, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x7a -2021-09-06 20:51:09.071 Detail, Node001, Queuing (Query) Query Stage Complete (Neighbors) -2021-09-06 20:51:09.072 Info, contrlr, Node 002 - Known -2021-09-06 20:51:09.072 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=CacheLoad live=1 -2021-09-06 20:51:09.072 Detail, Node002, QueryStage_CacheLoad -2021-09-06 20:51:09.072 Info, Node002, Node Identity Codes: 014f:5250:3030 -2021-09-06 20:51:09.072 Info, Node002, NoOperation::Set - Routing=true -2021-09-06 20:51:09.072 Detail, Node002, Queuing (NoOp) NoOperation_Set (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x00, 0x00, 0x25, 0x0a, 0xca -2021-09-06 20:51:09.072 Detail, Node002, Queuing (Query) Query Stage Complete (CacheLoad) -2021-09-06 20:51:09.072 Detail, Node008, Expected reply was received -2021-09-06 20:51:09.072 Detail, Node008, Message transaction complete -2021-09-06 20:51:09.073 Detail, -2021-09-06 20:51:09.073 Detail, contrlr, Removing current message -2021-09-06 20:51:09.073 Detail, Node001, Notification: DriverReady -2021-09-06 20:51:09.075 Detail, Node001, Notification: NodeAdded -2021-09-06 20:51:09.081 Detail, Node001, Notification: NodeProtocolInfo -2021-09-06 20:51:09.084 Detail, Node001, Notification: EssentialNodeQueriesComplete -2021-09-06 20:51:09.085 Detail, Node001, Notification: ValueAdded -2021-09-06 20:51:09.087 Detail, Node002, Notification: NodeAdded -2021-09-06 20:51:09.092 Detail, Node002, Notification: NodeProtocolInfo -2021-09-06 20:51:09.095 Detail, Node002, Notification: EssentialNodeQueriesComplete -2021-09-06 20:51:09.096 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.104 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.107 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.109 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.111 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.113 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.115 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.118 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.126 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.133 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.153 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.163 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.172 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.180 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.193 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.201 Detail, Node002, Notification: ValueAdded -2021-09-06 20:51:09.210 Detail, Node002, Notification: NodeNaming -2021-09-06 20:51:09.234 Detail, -2021-09-06 20:51:09.234 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x06) - FUNC_ID_SERIAL_API_SET_TIMEOUTS: 0x01, 0x05, 0x00, 0x06, 0x64, 0x0f, 0x97 -2021-09-06 20:51:09.237 Detail, contrlr, Received: 0x01, 0x05, 0x01, 0x06, 0x64, 0x0f, 0x96 -2021-09-06 20:51:09.237 Detail, -2021-09-06 20:51:09.237 Info, contrlr, Received reply to FUNC_ID_SERIAL_API_SET_TIMEOUTS -2021-09-06 20:51:09.237 Detail, Node015, Expected reply was received -2021-09-06 20:51:09.237 Detail, Node015, Message transaction complete -2021-09-06 20:51:09.237 Detail, -2021-09-06 20:51:09.237 Detail, contrlr, Removing current message -2021-09-06 20:51:09.238 Detail, -2021-09-06 20:51:09.238 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x00) - FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION: 0x01, 0x07, 0x00, 0x03, 0x01, 0x02, 0x01, 0x00, 0xf9 -2021-09-06 20:51:09.240 Detail, contrlr, Removing current message -2021-09-06 20:51:09.240 Detail, -2021-09-06 20:51:09.241 Info, Node001, Sending (Command) message (Callback ID=0x00, Expected Reply=0x80) - Get Routing Info (Node=1): 0x01, 0x07, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x7a -2021-09-06 20:51:09.247 Detail, Node001, Received: 0x01, 0x20, 0x01, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c -2021-09-06 20:51:09.248 Detail, -2021-09-06 20:51:09.248 Info, Node001, Received reply to FUNC_ID_ZW_GET_ROUTING_INFO -2021-09-06 20:51:09.248 Info, Node001, Neighbors of this node are: -2021-09-06 20:51:09.248 Info, Node001, Node 2 -2021-09-06 20:51:09.248 Detail, Expected reply was received -2021-09-06 20:51:09.248 Detail, Message transaction complete -2021-09-06 20:51:09.248 Detail, -2021-09-06 20:51:09.248 Detail, Node001, Removing current message -2021-09-06 20:51:09.249 Detail, -2021-09-06 20:51:09.249 Info, Node002, Sending (NoOp) message (Callback ID=0x0a, Expected Reply=0x13) - NoOperation_Set (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x00, 0x00, 0x25, 0x0a, 0xca -2021-09-06 20:51:09.256 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-06 20:51:09.257 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-06 20:51:09.271 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0a, 0x00, 0xe3 -2021-09-06 20:51:09.271 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0a received (expected 0x0a) -2021-09-06 20:51:09.272 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-06 20:51:09.272 Detail, Expected callbackId was received -2021-09-06 20:51:09.272 Detail, Expected reply was received -2021-09-06 20:51:09.272 Detail, Message transaction complete -2021-09-06 20:51:09.272 Detail, -2021-09-06 20:51:09.272 Detail, Node002, Removing current message -2021-09-06 20:51:09.273 Detail, Node002, Notification: Notification - NoOperation -2021-09-06 20:51:09.278 Detail, Node001, Query Stage Complete (Neighbors) -2021-09-06 20:51:09.278 Detail, Node001, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Session live=1 -2021-09-06 20:51:09.278 Detail, Node001, QueryStage_Session -2021-09-06 20:51:09.278 Detail, Node001, QueryStage_Dynamic -2021-09-06 20:51:09.279 Detail, Node001, QueryStage_Configuration -2021-09-06 20:51:09.279 Detail, Node001, QueryStage_Complete -2021-09-06 20:51:09.279 Warning, CheckCompletedNodeQueries m_allNodesQueried=0 m_awakeNodesQueried=0 -2021-09-06 20:51:09.279 Warning, CheckCompletedNodeQueries all=0, deadFound=0 sleepingOnly=0 -2021-09-06 20:51:09.279 Detail, Node001, Notification: NodeQueriesComplete -2021-09-06 20:51:09.288 Detail, Node002, Query Stage Complete (CacheLoad) -2021-09-06 20:51:09.288 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Associations live=1 -2021-09-06 20:51:09.288 Detail, Node002, QueryStage_Associations -2021-09-06 20:51:09.288 Detail, Node002, QueryStage_Neighbors -2021-09-06 20:51:09.288 Detail, Requesting routing info (neighbor list) for Node 2 -2021-09-06 20:51:09.288 Detail, Node002, Queuing (Command) Get Routing Info (Node=2): 0x01, 0x07, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x79 -2021-09-06 20:51:09.288 Detail, Node002, Queuing (Query) Query Stage Complete (Neighbors) -2021-09-06 20:51:09.288 Detail, -2021-09-06 20:51:09.289 Info, Node002, Sending (Command) message (Callback ID=0x00, Expected Reply=0x80) - Get Routing Info (Node=2): 0x01, 0x07, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x79 -2021-09-06 20:51:09.296 Detail, Node002, Received: 0x01, 0x20, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f -2021-09-06 20:51:09.296 Detail, -2021-09-06 20:51:09.296 Info, Node002, Received reply to FUNC_ID_ZW_GET_ROUTING_INFO -2021-09-06 20:51:09.296 Info, Node002, Neighbors of this node are: -2021-09-06 20:51:09.297 Info, Node002, Node 1 -2021-09-06 20:51:09.297 Detail, Expected reply was received -2021-09-06 20:51:09.297 Detail, Message transaction complete -2021-09-06 20:51:09.297 Detail, -2021-09-06 20:51:09.297 Detail, Node002, Removing current message -2021-09-06 20:51:09.297 Detail, Node002, Query Stage Complete (Neighbors) -2021-09-06 20:51:09.297 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Session live=1 -2021-09-06 20:51:09.297 Detail, Node002, QueryStage_Session -2021-09-06 20:51:09.297 Detail, Node002, Queuing (Query) SwitchAllCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x27, 0x02, 0x25, 0x0b, 0xee -2021-09-06 20:51:09.297 Detail, Node002, Queuing (Query) PowerlevelCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x73, 0x02, 0x25, 0x0c, 0xbd -2021-09-06 20:51:09.298 Detail, Node002, Queuing (Query) ProtectionCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x75, 0x02, 0x25, 0x0d, 0xba -2021-09-06 20:51:09.298 Detail, Node002, Queuing (Query) Query Stage Complete (Session) -2021-09-06 20:51:09.298 Detail, -2021-09-06 20:51:09.298 Info, Node002, Sending (Query) message (Callback ID=0x0b, Expected Reply=0x04) - SwitchAllCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x27, 0x02, 0x25, 0x0b, 0xee -2021-09-06 20:51:09.305 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-06 20:51:09.306 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-06 20:51:09.321 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0b, 0x00, 0xe2 -2021-09-06 20:51:09.321 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0b received (expected 0x0b) -2021-09-06 20:51:09.321 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-06 20:51:09.321 Detail, Expected callbackId was received -2021-09-06 20:51:09.329 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x27, 0x03, 0xff, 0x28 -2021-09-06 20:51:09.330 Detail, -2021-09-06 20:51:09.330 Info, Node002, Response RTT 31 Average Response RTT 31 -2021-09-06 20:51:09.330 Detail, Node002, Initial read of value -2021-09-06 20:51:09.330 Info, Node002, Received SwitchAll report from node 2: On and Off Enabled -2021-09-06 20:51:09.330 Detail, Node002, Expected reply and command class was received -2021-09-06 20:51:09.330 Detail, Node002, Message transaction complete -2021-09-06 20:51:09.330 Detail, -2021-09-06 20:51:09.330 Detail, Node002, Removing current message -2021-09-06 20:51:09.330 Detail, Node002, Notification: ValueChanged -2021-09-06 20:51:09.341 Detail, -2021-09-06 20:51:09.341 Info, Node002, Sending (Query) message (Callback ID=0x0c, Expected Reply=0x04) - PowerlevelCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x73, 0x02, 0x25, 0x0c, 0xbd -2021-09-06 20:51:09.348 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-06 20:51:09.349 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-06 20:51:09.364 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0c, 0x00, 0xe5 -2021-09-06 20:51:09.364 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0c received (expected 0x0c) -2021-09-06 20:51:09.364 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-06 20:51:09.364 Detail, Expected callbackId was received -2021-09-06 20:51:09.374 Detail, Node002, Received: 0x01, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x04, 0x73, 0x03, 0x00, 0x00, 0x87 -2021-09-06 20:51:09.374 Detail, -2021-09-06 20:51:09.374 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-06 20:51:09.374 Info, Node002, Received a PowerLevel report: PowerLevel=Normal, Timeout=0 -2021-09-06 20:51:09.374 Detail, Node002, Initial read of value -2021-09-06 20:51:09.374 Detail, Node002, Initial read of value -2021-09-06 20:51:09.374 Detail, Node002, Expected reply and command class was received -2021-09-06 20:51:09.375 Detail, Node002, Message transaction complete -2021-09-06 20:51:09.375 Detail, -2021-09-06 20:51:09.375 Detail, Node002, Removing current message -2021-09-06 20:51:09.375 Detail, Node002, Notification: ValueChanged -2021-09-06 20:51:09.378 Detail, Node002, Notification: ValueChanged -2021-09-06 20:51:09.393 Detail, -2021-09-06 20:51:09.393 Info, Node002, Sending (Query) message (Callback ID=0x0d, Expected Reply=0x04) - ProtectionCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x75, 0x02, 0x25, 0x0d, 0xba -2021-09-06 20:51:09.400 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-06 20:51:09.400 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-06 20:51:09.417 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0d, 0x00, 0xe4 -2021-09-06 20:51:09.417 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0d received (expected 0x0d) -2021-09-06 20:51:09.417 Info, Node002, Request RTT 23 Average Request RTT 22 -2021-09-06 20:51:09.417 Detail, Expected callbackId was received -2021-09-06 20:51:09.425 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x75, 0x03, 0x00, 0x85 -2021-09-06 20:51:09.426 Detail, -2021-09-06 20:51:09.426 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-06 20:51:09.426 Info, Node002, Received a Protection report: Unprotected -2021-09-06 20:51:09.426 Detail, Node002, Initial read of value -2021-09-06 20:51:09.426 Detail, Node002, Expected reply and command class was received -2021-09-06 20:51:09.426 Detail, Node002, Message transaction complete -2021-09-06 20:51:09.426 Detail, -2021-09-06 20:51:09.426 Detail, Node002, Removing current message -2021-09-06 20:51:09.426 Detail, Node002, Notification: ValueChanged -2021-09-06 20:51:09.449 Detail, Node002, Query Stage Complete (Session) -2021-09-06 20:51:09.450 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Dynamic live=1 -2021-09-06 20:51:09.450 Detail, Node002, QueryStage_Dynamic -2021-09-06 20:51:09.450 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x0e, 0xe9 -2021-09-06 20:51:09.450 Detail, Node002, Queuing (Query) Query Stage Complete (Dynamic) -2021-09-06 20:51:09.450 Detail, -2021-09-06 20:51:09.451 Info, Node002, Sending (Send) message (Callback ID=0x0e, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x0e, 0xe9 -2021-09-06 20:51:09.457 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-06 20:51:09.457 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-06 20:51:09.473 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0e, 0x00, 0xe7 -2021-09-06 20:51:09.474 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0e received (expected 0x0e) -2021-09-06 20:51:09.474 Info, Node002, Request RTT 23 Average Request RTT 22 -2021-09-06 20:51:09.474 Detail, Expected callbackId was received -2021-09-06 20:51:09.482 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-06 20:51:09.483 Detail, -2021-09-06 20:51:09.483 Info, Node002, Response RTT 31 Average Response RTT 31 -2021-09-06 20:51:09.483 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-06 20:51:09.483 Detail, Node002, Initial read of value -2021-09-06 20:51:09.483 Detail, Node002, Expected reply and command class was received -2021-09-06 20:51:09.483 Detail, Node002, Message transaction complete -2021-09-06 20:51:09.483 Detail, -2021-09-06 20:51:09.483 Detail, Node002, Removing current message -2021-09-06 20:51:09.483 Detail, Node002, Notification: ValueChanged -2021-09-06 20:51:09.510 Detail, Node002, Query Stage Complete (Dynamic) -2021-09-06 20:51:09.510 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Configuration live=1 -2021-09-06 20:51:09.510 Detail, Node002, QueryStage_Configuration -2021-09-06 20:51:09.510 Detail, Node002, QueryStage_Complete -2021-09-06 20:51:09.510 Warning, CheckCompletedNodeQueries m_allNodesQueried=0 m_awakeNodesQueried=0 -2021-09-06 20:51:09.510 Warning, CheckCompletedNodeQueries all=1, deadFound=0 sleepingOnly=1 -2021-09-06 20:51:09.510 Info, Node query processing complete. -2021-09-06 20:51:09.511 Detail, Node002, Notification: NodeQueriesComplete -2021-09-06 20:51:09.534 Detail, contrlr, Notification: AllNodesQueried -2021-09-07 00:00:48.739 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - False -2021-09-07 00:00:48.742 Info, Node002, SwitchBinary::Set - Setting node 2 to Off -2021-09-07 00:00:48.742 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x0f, 0xe9 -2021-09-07 00:00:48.742 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x10, 0xf7 -2021-09-07 00:00:48.743 Detail, -2021-09-07 00:00:48.743 Info, Node002, Sending (Send) message (Callback ID=0x0f, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x0f, 0xe9 -2021-09-07 00:00:48.750 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-07 00:00:48.750 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-07 00:00:48.766 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0f, 0x00, 0xe6 -2021-09-07 00:00:48.766 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0f received (expected 0x0f) -2021-09-07 00:00:48.767 Info, Node002, Request RTT 23 Average Request RTT 22 -2021-09-07 00:00:48.767 Detail, Expected callbackId was received -2021-09-07 00:00:48.767 Detail, Expected reply was received -2021-09-07 00:00:48.767 Detail, Message transaction complete -2021-09-07 00:00:48.767 Detail, -2021-09-07 00:00:48.767 Detail, Node002, Removing current message -2021-09-07 00:00:48.767 Detail, -2021-09-07 00:00:48.767 Info, Node002, Sending (Send) message (Callback ID=0x10, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x10, 0xf7 -2021-09-07 00:00:48.774 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-07 00:00:48.774 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-07 00:00:48.789 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x10, 0x00, 0xf9 -2021-09-07 00:00:48.789 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x10 received (expected 0x10) -2021-09-07 00:00:48.790 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-07 00:00:48.790 Detail, Expected callbackId was received -2021-09-07 00:00:48.798 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 -2021-09-07 00:00:48.798 Detail, -2021-09-07 00:00:48.798 Info, Node002, Response RTT 30 Average Response RTT 30 -2021-09-07 00:00:48.798 Info, Node002, Received SwitchBinary report from node 2: level=Off -2021-09-07 00:00:48.798 Detail, Node002, Refreshed Value: old value=true, new value=false, type=bool -2021-09-07 00:00:48.798 Detail, Node002, Changes to this value are not verified -2021-09-07 00:00:48.799 Detail, Node002, Expected reply and command class was received -2021-09-07 00:00:48.799 Detail, Node002, Message transaction complete -2021-09-07 00:00:48.799 Detail, -2021-09-07 00:00:48.799 Detail, Node002, Removing current message -2021-09-07 00:00:48.799 Detail, Node002, Notification: ValueChanged -2021-09-07 19:13:51.753 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-07 19:13:51.753 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-07 19:13:51.753 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x11, 0x08 -2021-09-07 19:13:51.754 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x12, 0xf5 -2021-09-07 19:13:51.754 Detail, -2021-09-07 19:13:51.754 Info, Node002, Sending (Send) message (Callback ID=0x11, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x11, 0x08 -2021-09-07 19:13:51.760 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-07 19:13:51.761 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-07 19:13:51.777 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x11, 0x00, 0xf8 -2021-09-07 19:13:51.777 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x11 received (expected 0x11) -2021-09-07 19:13:51.777 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-07 19:13:51.777 Detail, Expected callbackId was received -2021-09-07 19:13:51.777 Detail, Expected reply was received -2021-09-07 19:13:51.777 Detail, Message transaction complete -2021-09-07 19:13:51.777 Detail, -2021-09-07 19:13:51.777 Detail, Node002, Removing current message -2021-09-07 19:13:51.778 Detail, -2021-09-07 19:13:51.778 Info, Node002, Sending (Send) message (Callback ID=0x12, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x12, 0xf5 -2021-09-07 19:13:51.784 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-07 19:13:51.785 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-07 19:13:51.800 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x12, 0x00, 0xfb -2021-09-07 19:13:51.800 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x12 received (expected 0x12) -2021-09-07 19:13:51.800 Info, Node002, Request RTT 21 Average Request RTT 21 -2021-09-07 19:13:51.800 Detail, Expected callbackId was received -2021-09-07 19:13:51.810 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-07 19:13:51.810 Detail, -2021-09-07 19:13:51.810 Info, Node002, Response RTT 31 Average Response RTT 30 -2021-09-07 19:13:51.810 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-07 19:13:51.810 Detail, Node002, Refreshed Value: old value=false, new value=true, type=bool -2021-09-07 19:13:51.810 Detail, Node002, Changes to this value are not verified -2021-09-07 19:13:51.810 Detail, Node002, Expected reply and command class was received -2021-09-07 19:13:51.810 Detail, Node002, Message transaction complete -2021-09-07 19:13:51.810 Detail, -2021-09-07 19:13:51.811 Detail, Node002, Removing current message -2021-09-07 19:13:51.811 Detail, Node002, Notification: ValueChanged -2021-09-08 00:00:52.014 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - False -2021-09-08 00:00:52.014 Info, Node002, SwitchBinary::Set - Setting node 2 to Off -2021-09-08 00:00:52.014 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x13, 0xf5 -2021-09-08 00:00:52.014 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x14, 0xf3 -2021-09-08 00:00:52.014 Detail, -2021-09-08 00:00:52.015 Info, Node002, Sending (Send) message (Callback ID=0x13, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x13, 0xf5 -2021-09-08 00:00:52.022 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-08 00:00:52.022 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-08 00:00:52.037 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x13, 0x00, 0xfa -2021-09-08 00:00:52.037 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x13 received (expected 0x13) -2021-09-08 00:00:52.037 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-08 00:00:52.037 Detail, Expected callbackId was received -2021-09-08 00:00:52.038 Detail, Expected reply was received -2021-09-08 00:00:52.038 Detail, Message transaction complete -2021-09-08 00:00:52.038 Detail, -2021-09-08 00:00:52.038 Detail, Node002, Removing current message -2021-09-08 00:00:52.038 Detail, -2021-09-08 00:00:52.038 Info, Node002, Sending (Send) message (Callback ID=0x14, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x14, 0xf3 -2021-09-08 00:00:52.045 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-08 00:00:52.045 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-08 00:00:52.060 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x14, 0x00, 0xfd -2021-09-08 00:00:52.060 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x14 received (expected 0x14) -2021-09-08 00:00:52.060 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-08 00:00:52.060 Detail, Expected callbackId was received -2021-09-08 00:00:52.068 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 -2021-09-08 00:00:52.068 Detail, -2021-09-08 00:00:52.068 Info, Node002, Response RTT 29 Average Response RTT 29 -2021-09-08 00:00:52.068 Info, Node002, Received SwitchBinary report from node 2: level=Off -2021-09-08 00:00:52.068 Detail, Node002, Refreshed Value: old value=true, new value=false, type=bool -2021-09-08 00:00:52.068 Detail, Node002, Changes to this value are not verified -2021-09-08 00:00:52.068 Detail, Node002, Expected reply and command class was received -2021-09-08 00:00:52.068 Detail, Node002, Message transaction complete -2021-09-08 00:00:52.069 Detail, -2021-09-08 00:00:52.069 Detail, Node002, Removing current message -2021-09-08 00:00:52.069 Detail, Node002, Notification: ValueChanged -2021-09-08 19:12:53.815 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-08 19:12:53.815 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-08 19:12:53.815 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x15, 0x0c -2021-09-08 19:12:53.815 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x16, 0xf1 -2021-09-08 19:12:53.815 Detail, -2021-09-08 19:12:53.816 Info, Node002, Sending (Send) message (Callback ID=0x15, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x15, 0x0c -2021-09-08 19:12:53.822 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-08 19:12:53.822 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-08 19:12:53.838 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x15, 0x00, 0xfc -2021-09-08 19:12:53.839 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x15 received (expected 0x15) -2021-09-08 19:12:53.839 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-08 19:12:53.839 Detail, Expected callbackId was received -2021-09-08 19:12:53.839 Detail, Expected reply was received -2021-09-08 19:12:53.839 Detail, Message transaction complete -2021-09-08 19:12:53.839 Detail, -2021-09-08 19:12:53.839 Detail, Node002, Removing current message -2021-09-08 19:12:53.839 Detail, -2021-09-08 19:12:53.839 Info, Node002, Sending (Send) message (Callback ID=0x16, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x16, 0xf1 -2021-09-08 19:12:53.846 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-08 19:12:53.846 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-08 19:12:53.861 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x16, 0x00, 0xff -2021-09-08 19:12:53.862 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x16 received (expected 0x16) -2021-09-08 19:12:53.862 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-08 19:12:53.862 Detail, Expected callbackId was received -2021-09-08 19:12:53.870 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-08 19:12:53.870 Detail, -2021-09-08 19:12:53.871 Info, Node002, Response RTT 31 Average Response RTT 30 -2021-09-08 19:12:53.871 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-08 19:12:53.871 Detail, Node002, Refreshed Value: old value=false, new value=true, type=bool -2021-09-08 19:12:53.871 Detail, Node002, Changes to this value are not verified -2021-09-08 19:12:53.871 Detail, Node002, Expected reply and command class was received -2021-09-08 19:12:53.871 Detail, Node002, Message transaction complete -2021-09-08 19:12:53.871 Detail, -2021-09-08 19:12:53.871 Detail, Node002, Removing current message -2021-09-08 19:12:53.871 Detail, Node002, Notification: ValueChanged -2021-09-09 00:00:54.393 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - False -2021-09-09 00:00:54.393 Info, Node002, SwitchBinary::Set - Setting node 2 to Off -2021-09-09 00:00:54.393 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x17, 0xf1 -2021-09-09 00:00:54.393 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x18, 0xff -2021-09-09 00:00:54.394 Detail, -2021-09-09 00:00:54.394 Info, Node002, Sending (Send) message (Callback ID=0x17, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x17, 0xf1 -2021-09-09 00:00:54.401 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-09 00:00:54.401 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-09 00:00:54.416 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x17, 0x00, 0xfe -2021-09-09 00:00:54.416 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x17 received (expected 0x17) -2021-09-09 00:00:54.416 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-09 00:00:54.416 Detail, Expected callbackId was received -2021-09-09 00:00:54.416 Detail, Expected reply was received -2021-09-09 00:00:54.416 Detail, Message transaction complete -2021-09-09 00:00:54.416 Detail, -2021-09-09 00:00:54.416 Detail, Node002, Removing current message -2021-09-09 00:00:54.417 Detail, -2021-09-09 00:00:54.417 Info, Node002, Sending (Send) message (Callback ID=0x18, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x18, 0xff -2021-09-09 00:00:54.424 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-09 00:00:54.424 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-09 00:00:54.439 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x18, 0x00, 0xf1 -2021-09-09 00:00:54.439 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x18 received (expected 0x18) -2021-09-09 00:00:54.439 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-09 00:00:54.439 Detail, Expected callbackId was received -2021-09-09 00:00:54.448 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 -2021-09-09 00:00:54.448 Detail, -2021-09-09 00:00:54.448 Info, Node002, Response RTT 31 Average Response RTT 30 -2021-09-09 00:00:54.448 Info, Node002, Received SwitchBinary report from node 2: level=Off -2021-09-09 00:00:54.448 Detail, Node002, Refreshed Value: old value=true, new value=false, type=bool -2021-09-09 00:00:54.448 Detail, Node002, Changes to this value are not verified -2021-09-09 00:00:54.448 Detail, Node002, Expected reply and command class was received -2021-09-09 00:00:54.448 Detail, Node002, Message transaction complete -2021-09-09 00:00:54.449 Detail, -2021-09-09 00:00:54.449 Detail, Node002, Removing current message -2021-09-09 00:00:54.449 Detail, Node002, Notification: ValueChanged -2021-09-09 19:10:56.664 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-09 19:10:56.665 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-09 19:10:56.665 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x19, 0x00 -2021-09-09 19:10:56.665 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x1a, 0xfd -2021-09-09 19:10:56.666 Detail, -2021-09-09 19:10:56.666 Info, Node002, Sending (Send) message (Callback ID=0x19, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x19, 0x00 -2021-09-09 19:10:56.672 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-09 19:10:56.673 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-09 19:10:56.689 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x19, 0x00, 0xf0 -2021-09-09 19:10:56.689 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x19 received (expected 0x19) -2021-09-09 19:10:56.689 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-09 19:10:56.689 Detail, Expected callbackId was received -2021-09-09 19:10:56.689 Detail, Expected reply was received -2021-09-09 19:10:56.689 Detail, Message transaction complete -2021-09-09 19:10:56.689 Detail, -2021-09-09 19:10:56.689 Detail, Node002, Removing current message -2021-09-09 19:10:56.689 Detail, -2021-09-09 19:10:56.689 Info, Node002, Sending (Send) message (Callback ID=0x1a, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x1a, 0xfd -2021-09-09 19:10:56.696 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-09 19:10:56.697 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-09 19:10:56.711 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x1a, 0x00, 0xf3 -2021-09-09 19:10:56.712 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x1a received (expected 0x1a) -2021-09-09 19:10:56.712 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-09 19:10:56.712 Detail, Expected callbackId was received -2021-09-09 19:10:56.720 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-09 19:10:56.721 Detail, -2021-09-09 19:10:56.721 Info, Node002, Response RTT 31 Average Response RTT 30 -2021-09-09 19:10:56.721 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-09 19:10:56.721 Detail, Node002, Refreshed Value: old value=false, new value=true, type=bool -2021-09-09 19:10:56.721 Detail, Node002, Changes to this value are not verified -2021-09-09 19:10:56.721 Detail, Node002, Expected reply and command class was received -2021-09-09 19:10:56.721 Detail, Node002, Message transaction complete -2021-09-09 19:10:56.721 Detail, -2021-09-09 19:10:56.721 Detail, Node002, Removing current message -2021-09-09 19:10:56.721 Detail, Node002, Notification: ValueChanged -2021-09-10 00:00:57.232 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - False -2021-09-10 00:00:57.232 Info, Node002, SwitchBinary::Set - Setting node 2 to Off -2021-09-10 00:00:57.232 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x1b, 0xfd -2021-09-10 00:00:57.233 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x1c, 0xfb -2021-09-10 00:00:57.233 Detail, -2021-09-10 00:00:57.233 Info, Node002, Sending (Send) message (Callback ID=0x1b, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x1b, 0xfd -2021-09-10 00:00:57.241 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-10 00:00:57.241 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-10 00:00:57.256 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x1b, 0x00, 0xf2 -2021-09-10 00:00:57.256 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x1b received (expected 0x1b) -2021-09-10 00:00:57.256 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-10 00:00:57.256 Detail, Expected callbackId was received -2021-09-10 00:00:57.256 Detail, Expected reply was received -2021-09-10 00:00:57.256 Detail, Message transaction complete -2021-09-10 00:00:57.256 Detail, -2021-09-10 00:00:57.256 Detail, Node002, Removing current message -2021-09-10 00:00:57.256 Detail, -2021-09-10 00:00:57.257 Info, Node002, Sending (Send) message (Callback ID=0x1c, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x1c, 0xfb -2021-09-10 00:00:57.263 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-10 00:00:57.264 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-10 00:00:57.279 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x1c, 0x00, 0xf5 -2021-09-10 00:00:57.279 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x1c received (expected 0x1c) -2021-09-10 00:00:57.279 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-10 00:00:57.279 Detail, Expected callbackId was received -2021-09-10 00:00:57.287 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 -2021-09-10 00:00:57.288 Detail, -2021-09-10 00:00:57.288 Info, Node002, Response RTT 31 Average Response RTT 30 -2021-09-10 00:00:57.288 Info, Node002, Received SwitchBinary report from node 2: level=Off -2021-09-10 00:00:57.288 Detail, Node002, Refreshed Value: old value=true, new value=false, type=bool -2021-09-10 00:00:57.288 Detail, Node002, Changes to this value are not verified -2021-09-10 00:00:57.288 Detail, Node002, Expected reply and command class was received -2021-09-10 00:00:57.288 Detail, Node002, Message transaction complete -2021-09-10 00:00:57.288 Detail, -2021-09-10 00:00:57.288 Detail, Node002, Removing current message -2021-09-10 00:00:57.289 Detail, Node002, Notification: ValueChanged -2021-09-10 19:08:59.075 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-10 19:08:59.075 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-10 19:08:59.076 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x1d, 0x04 -2021-09-10 19:08:59.076 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x1e, 0xf9 -2021-09-10 19:08:59.076 Detail, -2021-09-10 19:08:59.076 Info, Node002, Sending (Send) message (Callback ID=0x1d, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x1d, 0x04 -2021-09-10 19:08:59.083 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-10 19:08:59.083 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-10 19:08:59.099 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x1d, 0x00, 0xf4 -2021-09-10 19:08:59.099 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x1d received (expected 0x1d) -2021-09-10 19:08:59.099 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-10 19:08:59.099 Detail, Expected callbackId was received -2021-09-10 19:08:59.099 Detail, Expected reply was received -2021-09-10 19:08:59.100 Detail, Message transaction complete -2021-09-10 19:08:59.100 Detail, -2021-09-10 19:08:59.100 Detail, Node002, Removing current message -2021-09-10 19:08:59.100 Detail, -2021-09-10 19:08:59.100 Info, Node002, Sending (Send) message (Callback ID=0x1e, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x1e, 0xf9 -2021-09-10 19:08:59.107 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-10 19:08:59.107 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-10 19:08:59.122 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x1e, 0x00, 0xf7 -2021-09-10 19:08:59.122 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x1e received (expected 0x1e) -2021-09-10 19:08:59.122 Info, Node002, Request RTT 22 Average Request RTT 21 -2021-09-10 19:08:59.122 Detail, Expected callbackId was received -2021-09-10 19:08:59.131 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-10 19:08:59.131 Detail, -2021-09-10 19:08:59.131 Info, Node002, Response RTT 31 Average Response RTT 30 -2021-09-10 19:08:59.131 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-10 19:08:59.131 Detail, Node002, Refreshed Value: old value=false, new value=true, type=bool -2021-09-10 19:08:59.131 Detail, Node002, Changes to this value are not verified -2021-09-10 19:08:59.132 Detail, Node002, Expected reply and command class was received -2021-09-10 19:08:59.132 Detail, Node002, Message transaction complete -2021-09-10 19:08:59.132 Detail, -2021-09-10 19:08:59.132 Detail, Node002, Removing current message -2021-09-10 19:08:59.132 Detail, Node002, Notification: ValueChanged -2021-09-11 00:00:59.716 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - False -2021-09-11 00:00:59.717 Info, Node002, SwitchBinary::Set - Setting node 2 to Off -2021-09-11 00:00:59.717 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x1f, 0xf9 -2021-09-11 00:00:59.717 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x20, 0xc7 -2021-09-11 00:00:59.717 Detail, -2021-09-11 00:00:59.718 Info, Node002, Sending (Send) message (Callback ID=0x1f, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x1f, 0xf9 -2021-09-11 00:00:59.725 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-11 00:00:59.725 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-11 00:00:59.741 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x1f, 0x00, 0xf6 -2021-09-11 00:00:59.741 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x1f received (expected 0x1f) -2021-09-11 00:00:59.741 Info, Node002, Request RTT 23 Average Request RTT 22 -2021-09-11 00:00:59.742 Detail, Expected callbackId was received -2021-09-11 00:00:59.742 Detail, Expected reply was received -2021-09-11 00:00:59.742 Detail, Message transaction complete -2021-09-11 00:00:59.742 Detail, -2021-09-11 00:00:59.742 Detail, Node002, Removing current message -2021-09-11 00:00:59.742 Detail, -2021-09-11 00:00:59.742 Info, Node002, Sending (Send) message (Callback ID=0x20, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x20, 0xc7 -2021-09-11 00:00:59.749 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-11 00:00:59.749 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-11 00:00:59.764 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x20, 0x00, 0xc9 -2021-09-11 00:00:59.764 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x20 received (expected 0x20) -2021-09-11 00:00:59.764 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-11 00:00:59.764 Detail, Expected callbackId was received -2021-09-11 00:00:59.774 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 -2021-09-11 00:00:59.774 Detail, -2021-09-11 00:00:59.775 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-11 00:00:59.775 Info, Node002, Received SwitchBinary report from node 2: level=Off -2021-09-11 00:00:59.775 Detail, Node002, Refreshed Value: old value=true, new value=false, type=bool -2021-09-11 00:00:59.775 Detail, Node002, Changes to this value are not verified -2021-09-11 00:00:59.775 Detail, Node002, Expected reply and command class was received -2021-09-11 00:00:59.775 Detail, Node002, Message transaction complete -2021-09-11 00:00:59.775 Detail, -2021-09-11 00:00:59.775 Detail, Node002, Removing current message -2021-09-11 00:00:59.775 Detail, Node002, Notification: ValueChanged -2021-09-11 19:08:01.521 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-11 19:08:01.521 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-11 19:08:01.521 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x21, 0x38 -2021-09-11 19:08:01.522 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x22, 0xc5 -2021-09-11 19:08:01.522 Detail, -2021-09-11 19:08:01.522 Info, Node002, Sending (Send) message (Callback ID=0x21, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x21, 0x38 -2021-09-11 19:08:01.529 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-11 19:08:01.529 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-11 19:08:01.545 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x21, 0x00, 0xc8 -2021-09-11 19:08:01.545 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x21 received (expected 0x21) -2021-09-11 19:08:01.545 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-11 19:08:01.546 Detail, Expected callbackId was received -2021-09-11 19:08:01.546 Detail, Expected reply was received -2021-09-11 19:08:01.546 Detail, Message transaction complete -2021-09-11 19:08:01.546 Detail, -2021-09-11 19:08:01.546 Detail, Node002, Removing current message -2021-09-11 19:08:01.546 Detail, -2021-09-11 19:08:01.546 Info, Node002, Sending (Send) message (Callback ID=0x22, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x22, 0xc5 -2021-09-11 19:08:01.553 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-11 19:08:01.553 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-11 19:08:01.568 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x22, 0x00, 0xcb -2021-09-11 19:08:01.568 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x22 received (expected 0x22) -2021-09-11 19:08:01.568 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-11 19:08:01.569 Detail, Expected callbackId was received -2021-09-11 19:08:01.578 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-11 19:08:01.578 Detail, -2021-09-11 19:08:01.579 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-11 19:08:01.579 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-11 19:08:01.579 Detail, Node002, Refreshed Value: old value=false, new value=true, type=bool -2021-09-11 19:08:01.579 Detail, Node002, Changes to this value are not verified -2021-09-11 19:08:01.579 Detail, Node002, Expected reply and command class was received -2021-09-11 19:08:01.579 Detail, Node002, Message transaction complete -2021-09-11 19:08:01.579 Detail, -2021-09-11 19:08:01.579 Detail, Node002, Removing current message -2021-09-11 19:08:01.579 Detail, Node002, Notification: ValueChanged -2021-09-12 00:00:01.790 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - False -2021-09-12 00:00:01.791 Info, Node002, SwitchBinary::Set - Setting node 2 to Off -2021-09-12 00:00:01.791 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x23, 0xc5 -2021-09-12 00:00:01.791 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x24, 0xc3 -2021-09-12 00:00:01.791 Detail, -2021-09-12 00:00:01.792 Info, Node002, Sending (Send) message (Callback ID=0x23, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x23, 0xc5 -2021-09-12 00:00:01.799 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-12 00:00:01.799 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-12 00:00:01.814 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x23, 0x00, 0xca -2021-09-12 00:00:01.814 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x23 received (expected 0x23) -2021-09-12 00:00:01.814 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-12 00:00:01.814 Detail, Expected callbackId was received -2021-09-12 00:00:01.814 Detail, Expected reply was received -2021-09-12 00:00:01.814 Detail, Message transaction complete -2021-09-12 00:00:01.814 Detail, -2021-09-12 00:00:01.814 Detail, Node002, Removing current message -2021-09-12 00:00:01.815 Detail, -2021-09-12 00:00:01.815 Info, Node002, Sending (Send) message (Callback ID=0x24, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x24, 0xc3 -2021-09-12 00:00:01.822 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-12 00:00:01.822 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-12 00:00:01.837 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x24, 0x00, 0xcd -2021-09-12 00:00:01.837 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x24 received (expected 0x24) -2021-09-12 00:00:01.837 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-12 00:00:01.837 Detail, Expected callbackId was received -2021-09-12 00:00:01.847 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 -2021-09-12 00:00:01.847 Detail, -2021-09-12 00:00:01.847 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-12 00:00:01.847 Info, Node002, Received SwitchBinary report from node 2: level=Off -2021-09-12 00:00:01.847 Detail, Node002, Refreshed Value: old value=true, new value=false, type=bool -2021-09-12 00:00:01.847 Detail, Node002, Changes to this value are not verified -2021-09-12 00:00:01.848 Detail, Node002, Expected reply and command class was received -2021-09-12 00:00:01.848 Detail, Node002, Message transaction complete -2021-09-12 00:00:01.848 Detail, -2021-09-12 00:00:01.848 Detail, Node002, Removing current message -2021-09-12 00:00:01.848 Detail, Node002, Notification: ValueChanged -2021-09-13 19:04:06.264 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-13 19:04:06.265 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-13 19:04:06.265 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x25, 0x3c -2021-09-13 19:04:06.265 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x26, 0xc1 -2021-09-13 19:04:06.266 Detail, -2021-09-13 19:04:06.266 Info, Node002, Sending (Send) message (Callback ID=0x25, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x25, 0x3c -2021-09-13 19:04:06.272 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-13 19:04:06.273 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-13 19:04:06.289 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x25, 0x00, 0xcc -2021-09-13 19:04:06.289 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x25 received (expected 0x25) -2021-09-13 19:04:06.289 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-13 19:04:06.289 Detail, Expected callbackId was received -2021-09-13 19:04:06.289 Detail, Expected reply was received -2021-09-13 19:04:06.289 Detail, Message transaction complete -2021-09-13 19:04:06.289 Detail, -2021-09-13 19:04:06.289 Detail, Node002, Removing current message -2021-09-13 19:04:06.290 Detail, -2021-09-13 19:04:06.290 Info, Node002, Sending (Send) message (Callback ID=0x26, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x26, 0xc1 -2021-09-13 19:04:06.296 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-13 19:04:06.297 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-13 19:04:06.312 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x26, 0x00, 0xcf -2021-09-13 19:04:06.312 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x26 received (expected 0x26) -2021-09-13 19:04:06.312 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-13 19:04:06.312 Detail, Expected callbackId was received -2021-09-13 19:04:06.322 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-13 19:04:06.322 Detail, -2021-09-13 19:04:06.322 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-13 19:04:06.322 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-13 19:04:06.322 Detail, Node002, Refreshed Value: old value=false, new value=true, type=bool -2021-09-13 19:04:06.322 Detail, Node002, Changes to this value are not verified -2021-09-13 19:04:06.323 Detail, Node002, Expected reply and command class was received -2021-09-13 19:04:06.323 Detail, Node002, Message transaction complete -2021-09-13 19:04:06.323 Detail, -2021-09-13 19:04:06.323 Detail, Node002, Removing current message -2021-09-13 19:04:06.323 Detail, Node002, Notification: ValueChanged -2021-09-14 00:00:06.733 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - False -2021-09-14 00:00:06.734 Info, Node002, SwitchBinary::Set - Setting node 2 to Off -2021-09-14 00:00:06.734 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x27, 0xc1 -2021-09-14 00:00:06.734 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x28, 0xcf -2021-09-14 00:00:06.735 Detail, -2021-09-14 00:00:06.735 Info, Node002, Sending (Send) message (Callback ID=0x27, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0x00, 0x25, 0x27, 0xc1 -2021-09-14 00:00:06.741 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 00:00:06.742 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 00:00:06.758 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x27, 0x00, 0xce -2021-09-14 00:00:06.758 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x27 received (expected 0x27) -2021-09-14 00:00:06.758 Info, Node002, Request RTT 23 Average Request RTT 22 -2021-09-14 00:00:06.758 Detail, Expected callbackId was received -2021-09-14 00:00:06.758 Detail, Expected reply was received -2021-09-14 00:00:06.758 Detail, Message transaction complete -2021-09-14 00:00:06.758 Detail, -2021-09-14 00:00:06.758 Detail, Node002, Removing current message -2021-09-14 00:00:06.759 Detail, -2021-09-14 00:00:06.759 Info, Node002, Sending (Send) message (Callback ID=0x28, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x28, 0xcf -2021-09-14 00:00:06.766 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 00:00:06.766 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 00:00:06.781 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x28, 0x00, 0xc1 -2021-09-14 00:00:06.781 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x28 received (expected 0x28) -2021-09-14 00:00:06.781 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 00:00:06.781 Detail, Expected callbackId was received -2021-09-14 00:00:06.791 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 -2021-09-14 00:00:06.791 Detail, -2021-09-14 00:00:06.791 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-14 00:00:06.791 Info, Node002, Received SwitchBinary report from node 2: level=Off -2021-09-14 00:00:06.791 Detail, Node002, Refreshed Value: old value=true, new value=false, type=bool -2021-09-14 00:00:06.791 Detail, Node002, Changes to this value are not verified -2021-09-14 00:00:06.792 Detail, Node002, Expected reply and command class was received -2021-09-14 00:00:06.792 Detail, Node002, Message transaction complete -2021-09-14 00:00:06.792 Detail, -2021-09-14 00:00:06.792 Detail, Node002, Removing current message -2021-09-14 00:00:06.792 Detail, Node002, Notification: ValueChanged -2021-09-14 19:02:09.000 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-14 19:02:09.000 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-14 19:02:09.000 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x29, 0x30 -2021-09-14 19:02:09.000 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x2a, 0xcd -2021-09-14 19:02:09.000 Detail, -2021-09-14 19:02:09.000 Info, Node002, Sending (Send) message (Callback ID=0x29, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x29, 0x30 -2021-09-14 19:02:09.008 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 19:02:09.008 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 19:02:09.023 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x29, 0x00, 0xc0 -2021-09-14 19:02:09.023 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x29 received (expected 0x29) -2021-09-14 19:02:09.023 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 19:02:09.023 Detail, Expected callbackId was received -2021-09-14 19:02:09.023 Detail, Expected reply was received -2021-09-14 19:02:09.024 Detail, Message transaction complete -2021-09-14 19:02:09.024 Detail, -2021-09-14 19:02:09.024 Detail, Node002, Removing current message -2021-09-14 19:02:09.024 Detail, -2021-09-14 19:02:09.024 Info, Node002, Sending (Send) message (Callback ID=0x2a, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x2a, 0xcd -2021-09-14 19:02:09.031 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 19:02:09.031 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 19:02:09.047 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x2a, 0x00, 0xc3 -2021-09-14 19:02:09.047 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x2a received (expected 0x2a) -2021-09-14 19:02:09.047 Info, Node002, Request RTT 23 Average Request RTT 22 -2021-09-14 19:02:09.048 Detail, Expected callbackId was received -2021-09-14 19:02:09.056 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-14 19:02:09.056 Detail, -2021-09-14 19:02:09.056 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-14 19:02:09.056 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-14 19:02:09.057 Detail, Node002, Refreshed Value: old value=false, new value=true, type=bool -2021-09-14 19:02:09.057 Detail, Node002, Changes to this value are not verified -2021-09-14 19:02:09.057 Detail, Node002, Expected reply and command class was received -2021-09-14 19:02:09.057 Detail, Node002, Message transaction complete -2021-09-14 19:02:09.057 Detail, -2021-09-14 19:02:09.057 Detail, Node002, Removing current message -2021-09-14 19:02:09.057 Detail, Node002, Notification: ValueChanged -2021-09-14 20:21:01.887 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-14 20:21:01.887 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-14 20:21:01.887 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x2b, 0x32 -2021-09-14 20:21:01.887 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x2c, 0xcb -2021-09-14 20:21:01.887 Detail, -2021-09-14 20:21:01.887 Info, Node002, Sending (Send) message (Callback ID=0x2b, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x2b, 0x32 -2021-09-14 20:21:01.895 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 20:21:01.895 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 20:21:01.910 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x2b, 0x00, 0xc2 -2021-09-14 20:21:01.910 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x2b received (expected 0x2b) -2021-09-14 20:21:01.910 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 20:21:01.910 Detail, Expected callbackId was received -2021-09-14 20:21:01.910 Detail, Expected reply was received -2021-09-14 20:21:01.910 Detail, Message transaction complete -2021-09-14 20:21:01.910 Detail, -2021-09-14 20:21:01.910 Detail, Node002, Removing current message -2021-09-14 20:21:01.911 Detail, -2021-09-14 20:21:01.911 Info, Node002, Sending (Send) message (Callback ID=0x2c, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x2c, 0xcb -2021-09-14 20:21:01.918 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 20:21:01.918 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 20:21:01.933 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x2c, 0x00, 0xc5 -2021-09-14 20:21:01.933 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x2c received (expected 0x2c) -2021-09-14 20:21:01.933 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 20:21:01.933 Detail, Expected callbackId was received -2021-09-14 20:21:01.943 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-14 20:21:01.943 Detail, -2021-09-14 20:21:01.943 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-14 20:21:01.943 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-14 20:21:01.943 Detail, Node002, Refreshed Value: old value=true, new value=true, type=bool -2021-09-14 20:21:01.943 Detail, Node002, Changes to this value are not verified -2021-09-14 20:21:01.944 Detail, Node002, Expected reply and command class was received -2021-09-14 20:21:01.944 Detail, Node002, Message transaction complete -2021-09-14 20:21:01.944 Detail, -2021-09-14 20:21:01.944 Detail, Node002, Removing current message -2021-09-14 20:21:01.944 Detail, Node002, Notification: ValueChanged -2021-09-14 22:57:38.642 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-14 22:57:38.643 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-14 22:57:38.643 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x2d, 0x34 -2021-09-14 22:57:38.643 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x2e, 0xc9 -2021-09-14 22:57:38.643 Detail, -2021-09-14 22:57:38.643 Info, Node002, Sending (Send) message (Callback ID=0x2d, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x2d, 0x34 -2021-09-14 22:57:38.651 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 22:57:38.651 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 22:57:38.666 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x2d, 0x00, 0xc4 -2021-09-14 22:57:38.666 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x2d received (expected 0x2d) -2021-09-14 22:57:38.666 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 22:57:38.666 Detail, Expected callbackId was received -2021-09-14 22:57:38.666 Detail, Expected reply was received -2021-09-14 22:57:38.666 Detail, Message transaction complete -2021-09-14 22:57:38.666 Detail, -2021-09-14 22:57:38.666 Detail, Node002, Removing current message -2021-09-14 22:57:38.667 Detail, -2021-09-14 22:57:38.667 Info, Node002, Sending (Send) message (Callback ID=0x2e, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x2e, 0xc9 -2021-09-14 22:57:38.673 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 22:57:38.674 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 22:57:38.689 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x2e, 0x00, 0xc7 -2021-09-14 22:57:38.689 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x2e received (expected 0x2e) -2021-09-14 22:57:38.689 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 22:57:38.689 Detail, Expected callbackId was received -2021-09-14 22:57:38.699 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-14 22:57:38.699 Detail, -2021-09-14 22:57:38.699 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-14 22:57:38.699 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-14 22:57:38.699 Detail, Node002, Refreshed Value: old value=true, new value=true, type=bool -2021-09-14 22:57:38.699 Detail, Node002, Changes to this value are not verified -2021-09-14 22:57:38.699 Detail, Node002, Expected reply and command class was received -2021-09-14 22:57:38.700 Detail, Node002, Message transaction complete -2021-09-14 22:57:38.700 Detail, -2021-09-14 22:57:38.700 Detail, Node002, Removing current message -2021-09-14 22:57:38.700 Detail, Node002, Notification: ValueChanged -2021-09-14 23:00:04.517 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-14 23:00:04.518 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-14 23:00:04.518 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x2f, 0x36 -2021-09-14 23:00:04.518 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x30, 0xd7 -2021-09-14 23:00:04.518 Detail, -2021-09-14 23:00:04.518 Info, Node002, Sending (Send) message (Callback ID=0x2f, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x2f, 0x36 -2021-09-14 23:00:04.525 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 23:00:04.525 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 23:00:04.541 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x2f, 0x00, 0xc6 -2021-09-14 23:00:04.541 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x2f received (expected 0x2f) -2021-09-14 23:00:04.542 Info, Node002, Request RTT 23 Average Request RTT 22 -2021-09-14 23:00:04.542 Detail, Expected callbackId was received -2021-09-14 23:00:04.542 Detail, Expected reply was received -2021-09-14 23:00:04.542 Detail, Message transaction complete -2021-09-14 23:00:04.542 Detail, -2021-09-14 23:00:04.542 Detail, Node002, Removing current message -2021-09-14 23:00:04.542 Detail, -2021-09-14 23:00:04.542 Info, Node002, Sending (Send) message (Callback ID=0x30, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x30, 0xd7 -2021-09-14 23:00:04.549 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 23:00:04.549 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 23:00:04.564 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x30, 0x00, 0xd9 -2021-09-14 23:00:04.564 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x30 received (expected 0x30) -2021-09-14 23:00:04.564 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 23:00:04.564 Detail, Expected callbackId was received -2021-09-14 23:00:04.573 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-14 23:00:04.573 Detail, -2021-09-14 23:00:04.573 Info, Node002, Response RTT 31 Average Response RTT 31 -2021-09-14 23:00:04.573 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-14 23:00:04.573 Detail, Node002, Refreshed Value: old value=true, new value=true, type=bool -2021-09-14 23:00:04.574 Detail, Node002, Changes to this value are not verified -2021-09-14 23:00:04.574 Detail, Node002, Expected reply and command class was received -2021-09-14 23:00:04.574 Detail, Node002, Message transaction complete -2021-09-14 23:00:04.574 Detail, -2021-09-14 23:00:04.574 Detail, Node002, Removing current message -2021-09-14 23:00:04.574 Detail, Node002, Notification: ValueChanged -2021-09-14 23:04:19.172 Info, Node002, Value::Set - COMMAND_CLASS_SWITCH_BINARY - Switch - 0 - 1 - True -2021-09-14 23:04:19.173 Info, Node002, SwitchBinary::Set - Setting node 2 to On -2021-09-14 23:04:19.173 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x31, 0x28 -2021-09-14 23:04:19.173 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x32, 0xd5 -2021-09-14 23:04:19.173 Detail, -2021-09-14 23:04:19.173 Info, Node002, Sending (Send) message (Callback ID=0x31, Expected Reply=0x13) - SwitchBinaryCmd_Set (Node=2): 0x01, 0x0a, 0x00, 0x13, 0x02, 0x03, 0x25, 0x01, 0xff, 0x25, 0x31, 0x28 -2021-09-14 23:04:19.180 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 23:04:19.180 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 23:04:19.196 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x31, 0x00, 0xd8 -2021-09-14 23:04:19.197 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x31 received (expected 0x31) -2021-09-14 23:04:19.197 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 23:04:19.197 Detail, Expected callbackId was received -2021-09-14 23:04:19.197 Detail, Expected reply was received -2021-09-14 23:04:19.197 Detail, Message transaction complete -2021-09-14 23:04:19.197 Detail, -2021-09-14 23:04:19.197 Detail, Node002, Removing current message -2021-09-14 23:04:19.197 Detail, -2021-09-14 23:04:19.197 Info, Node002, Sending (Send) message (Callback ID=0x32, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x32, 0xd5 -2021-09-14 23:04:19.204 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 -2021-09-14 23:04:19.204 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack -2021-09-14 23:04:19.219 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x32, 0x00, 0xdb -2021-09-14 23:04:19.220 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x32 received (expected 0x32) -2021-09-14 23:04:19.220 Info, Node002, Request RTT 22 Average Request RTT 22 -2021-09-14 23:04:19.220 Detail, Expected callbackId was received -2021-09-14 23:04:19.229 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0xff, 0x2a -2021-09-14 23:04:19.230 Detail, -2021-09-14 23:04:19.230 Info, Node002, Response RTT 32 Average Response RTT 31 -2021-09-14 23:04:19.230 Info, Node002, Received SwitchBinary report from node 2: level=On -2021-09-14 23:04:19.230 Detail, Node002, Refreshed Value: old value=true, new value=true, type=bool -2021-09-14 23:04:19.230 Detail, Node002, Changes to this value are not verified -2021-09-14 23:04:19.230 Detail, Node002, Expected reply and command class was received -2021-09-14 23:04:19.230 Detail, Node002, Message transaction complete -2021-09-14 23:04:19.230 Detail, -2021-09-14 23:04:19.230 Detail, Node002, Removing current message -2021-09-14 23:04:19.230 Detail, Node002, Notification: ValueChanged +2021-09-16 15:12:31.001 Always, OpenZwave Version 1.4.3469 Starting Up +2021-09-16 15:12:43.568 Info, Setting Up Provided Network Key for Secure Communications +2021-09-16 15:12:43.569 Info, mgr, Added driver for controller /dev/ttyUSB0 +2021-09-16 15:12:43.569 Info, Opening controller /dev/ttyUSB0 +2021-09-16 15:12:43.570 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) +2021-09-16 15:12:43.574 Info, Serial port /dev/ttyUSB0 opened (attempt 1) +2021-09-16 15:12:43.575 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9 +2021-09-16 15:12:43.575 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_MEMORY_GET_ID: 0x01, 0x03, 0x00, 0x20, 0xdc +2021-09-16 15:12:43.575 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: 0x01, 0x03, 0x00, 0x05, 0xf9 +2021-09-16 15:12:43.575 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_GET_CAPABILITIES: 0x01, 0x03, 0x00, 0x07, 0xfb +2021-09-16 15:12:43.575 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_SUC_NODE_ID: 0x01, 0x03, 0x00, 0x56, 0xaa +2021-09-16 15:12:43.576 Detail, +2021-09-16 15:12:43.576 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x15) - FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, 0x15, 0xe9 +2021-09-16 15:12:43.580 Detail, contrlr, Received: 0x01, 0x10, 0x01, 0x15, 0x5a, 0x2d, 0x57, 0x61, 0x76, 0x65, 0x20, 0x34, 0x2e, 0x30, 0x35, 0x00, 0x01, 0x97 +2021-09-16 15:12:43.580 Detail, +2021-09-16 15:12:43.580 Info, contrlr, Received reply to FUNC_ID_ZW_GET_VERSION: +2021-09-16 15:12:43.580 Info, contrlr, Static Controller library, version Z-Wave 4.05 +2021-09-16 15:12:43.580 Detail, Node045, Expected reply was received +2021-09-16 15:12:43.580 Detail, Node045, Message transaction complete +2021-09-16 15:12:43.580 Detail, +2021-09-16 15:12:43.580 Detail, contrlr, Removing current message +2021-09-16 15:12:43.581 Detail, +2021-09-16 15:12:43.581 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x20) - FUNC_ID_ZW_MEMORY_GET_ID: 0x01, 0x03, 0x00, 0x20, 0xdc +2021-09-16 15:12:43.590 Detail, contrlr, Received: 0x01, 0x08, 0x01, 0x20, 0xf9, 0xbd, 0x36, 0x98, 0x01, 0x3d +2021-09-16 15:12:43.590 Detail, +2021-09-16 15:12:43.590 Info, contrlr, Received reply to FUNC_ID_ZW_MEMORY_GET_ID. Home ID = 0xf9bd3698. Our node ID = 1 +2021-09-16 15:12:43.590 Detail, Node189, Expected reply was received +2021-09-16 15:12:43.590 Detail, Node189, Message transaction complete +2021-09-16 15:12:43.590 Detail, +2021-09-16 15:12:43.590 Detail, contrlr, Removing current message +2021-09-16 15:12:43.590 Detail, +2021-09-16 15:12:43.590 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x05) - FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: 0x01, 0x03, 0x00, 0x05, 0xf9 +2021-09-16 15:12:43.593 Detail, contrlr, Received: 0x01, 0x04, 0x01, 0x05, 0x1c, 0xe3 +2021-09-16 15:12:43.594 Detail, +2021-09-16 15:12:43.594 Info, contrlr, Received reply to FUNC_ID_ZW_GET_CONTROLLER_CAPABILITIES: +2021-09-16 15:12:43.594 Info, contrlr, There is a SUC ID Server (SIS) in this network. +2021-09-16 15:12:43.594 Info, contrlr, The PC controller is an inclusion static update controller (SUC) and was the original primary before the SIS was added. +2021-09-16 15:12:43.594 Detail, Node227, Expected reply was received +2021-09-16 15:12:43.594 Detail, Node227, Message transaction complete +2021-09-16 15:12:43.594 Detail, +2021-09-16 15:12:43.594 Detail, contrlr, Removing current message +2021-09-16 15:12:43.594 Detail, +2021-09-16 15:12:43.594 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x07) - FUNC_ID_SERIAL_API_GET_CAPABILITIES: 0x01, 0x03, 0x00, 0x07, 0xfb +2021-09-16 15:12:43.602 Detail, contrlr, Received: 0x01, 0x2b, 0x01, 0x07, 0x04, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xfe, 0x81, 0xff, 0x88, 0xcf, 0x1f, 0x00, 0x00, 0xfb, 0x9f, 0x7d, 0xa0, 0x67, 0x00, 0x80, 0x80, 0x00, 0x80, 0x86, 0x00, 0x00, 0x00, 0xe8, 0x73, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03 +2021-09-16 15:12:43.602 Detail, +2021-09-16 15:12:43.602 Info, contrlr, Received reply to FUNC_ID_SERIAL_API_GET_CAPABILITIES +2021-09-16 15:12:43.602 Info, contrlr, Serial API Version: 4.32 +2021-09-16 15:12:43.603 Info, contrlr, Manufacturer ID: 0x0000 +2021-09-16 15:12:43.603 Info, contrlr, Product Type: 0x0001 +2021-09-16 15:12:43.603 Info, contrlr, Product ID: 0x0001 +2021-09-16 15:12:43.603 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_RANDOM: 0x01, 0x04, 0x00, 0x1c, 0x20, 0xc7 +2021-09-16 15:12:43.603 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_GET_INIT_DATA: 0x01, 0x03, 0x00, 0x02, 0xfe +2021-09-16 15:12:43.603 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_SET_TIMEOUTS: 0x01, 0x05, 0x00, 0x06, 0x64, 0x0f, 0x97 +2021-09-16 15:12:43.604 Detail, contrlr, Queuing (Command) FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION: 0x01, 0x07, 0x00, 0x03, 0x01, 0x02, 0x01, 0x00, 0xf9 +2021-09-16 15:12:43.604 Detail, Node032, Expected reply was received +2021-09-16 15:12:43.604 Detail, Node032, Message transaction complete +2021-09-16 15:12:43.604 Detail, +2021-09-16 15:12:43.604 Detail, contrlr, Removing current message +2021-09-16 15:12:43.604 Detail, +2021-09-16 15:12:43.604 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x56) - FUNC_ID_ZW_GET_SUC_NODE_ID: 0x01, 0x03, 0x00, 0x56, 0xaa +2021-09-16 15:12:43.607 Detail, contrlr, Received: 0x01, 0x04, 0x01, 0x56, 0x01, 0xad +2021-09-16 15:12:43.608 Detail, +2021-09-16 15:12:43.608 Info, contrlr, Received reply to GET_SUC_NODE_ID. Node ID = 1 +2021-09-16 15:12:43.608 Detail, Node173, Expected reply was received +2021-09-16 15:12:43.608 Detail, Node173, Message transaction complete +2021-09-16 15:12:43.608 Detail, +2021-09-16 15:12:43.608 Detail, contrlr, Removing current message +2021-09-16 15:12:43.608 Detail, +2021-09-16 15:12:43.608 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x1c) - FUNC_ID_ZW_GET_RANDOM: 0x01, 0x04, 0x00, 0x1c, 0x20, 0xc7 +2021-09-16 15:12:43.663 Detail, contrlr, Received: 0x01, 0x25, 0x01, 0x1c, 0x01, 0x20, 0xdb, 0xa7, 0xa9, 0xfb, 0xc6, 0xb5, 0x6c, 0xe2, 0x53, 0x4d, 0xf7, 0x0e, 0x4d, 0x33, 0xb2, 0x03, 0xa8, 0x69, 0x03, 0x4b, 0x87, 0x9b, 0x2d, 0xff, 0xe1, 0x08, 0x03, 0x3d, 0x44, 0xb4, 0xa4, 0xb0, 0x69 +2021-09-16 15:12:43.663 Detail, +2021-09-16 15:12:43.663 Info, contrlr, Received reply to FUNC_ID_ZW_GET_RANDOM: true +2021-09-16 15:12:43.663 Detail, Node032, Expected reply was received +2021-09-16 15:12:43.664 Detail, Node032, Message transaction complete +2021-09-16 15:12:43.664 Detail, +2021-09-16 15:12:43.664 Detail, contrlr, Removing current message +2021-09-16 15:12:43.664 Detail, +2021-09-16 15:12:43.664 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x02) - FUNC_ID_SERIAL_API_GET_INIT_DATA: 0x01, 0x03, 0x00, 0x02, 0xfe +2021-09-16 15:12:43.721 Detail, contrlr, Received: 0x01, 0x25, 0x01, 0x02, 0x05, 0x08, 0x1d, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0xcf +2021-09-16 15:12:43.721 Detail, +2021-09-16 15:12:43.721 Info, mgr, Driver with Home ID of 0xf9bd3698 is now ready. +2021-09-16 15:12:43.721 Info, +2021-09-16 15:12:43.725 Info, contrlr, Received reply to FUNC_ID_SERIAL_API_GET_INIT_DATA: +2021-09-16 15:12:43.726 Info, contrlr, Node 001 - Known +2021-09-16 15:12:43.726 Detail, Node001, AdvanceQueries queryPending=0 queryRetries=0 queryStage=CacheLoad live=1 +2021-09-16 15:12:43.726 Detail, Node001, QueryStage_CacheLoad +2021-09-16 15:12:43.726 Info, Node001, Node Identity Codes: 0000:0001:0001 +2021-09-16 15:12:43.726 Detail, Node001, QueryStage_Associations +2021-09-16 15:12:43.726 Detail, Node001, QueryStage_Neighbors +2021-09-16 15:12:43.726 Detail, contrlr, Requesting routing info (neighbor list) for Node 1 +2021-09-16 15:12:43.726 Detail, Node001, Queuing (Command) Get Routing Info (Node=1): 0x01, 0x07, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x7a +2021-09-16 15:12:43.726 Detail, Node001, Queuing (Query) Query Stage Complete (Neighbors) +2021-09-16 15:12:43.726 Info, contrlr, Node 002 - Known +2021-09-16 15:12:43.726 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=CacheLoad live=1 +2021-09-16 15:12:43.726 Detail, Node002, QueryStage_CacheLoad +2021-09-16 15:12:43.726 Info, Node002, Node Identity Codes: 014f:5250:3030 +2021-09-16 15:12:43.726 Info, Node002, NoOperation::Set - Routing=true +2021-09-16 15:12:43.727 Detail, Node002, Queuing (NoOp) NoOperation_Set (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x00, 0x00, 0x25, 0x0a, 0xca +2021-09-16 15:12:43.727 Detail, Node002, Queuing (Query) Query Stage Complete (CacheLoad) +2021-09-16 15:12:43.727 Detail, Node008, Expected reply was received +2021-09-16 15:12:43.727 Detail, Node008, Message transaction complete +2021-09-16 15:12:43.727 Detail, +2021-09-16 15:12:43.727 Detail, contrlr, Removing current message +2021-09-16 15:12:43.727 Detail, Node001, Notification: DriverReady +2021-09-16 15:12:43.730 Detail, Node001, Notification: NodeAdded +2021-09-16 15:12:43.735 Detail, Node001, Notification: NodeProtocolInfo +2021-09-16 15:12:43.753 Detail, Node001, Notification: EssentialNodeQueriesComplete +2021-09-16 15:12:43.757 Detail, Node001, Notification: ValueAdded +2021-09-16 15:12:43.765 Detail, Node002, Notification: NodeAdded +2021-09-16 15:12:43.768 Detail, Node002, Notification: NodeProtocolInfo +2021-09-16 15:12:43.771 Detail, Node002, Notification: EssentialNodeQueriesComplete +2021-09-16 15:12:43.788 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.832 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.834 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.836 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.849 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.851 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.854 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.862 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.864 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.869 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.872 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.893 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.901 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.903 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.905 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.913 Detail, Node002, Notification: ValueAdded +2021-09-16 15:12:43.915 Detail, Node002, Notification: NodeNaming +2021-09-16 15:12:43.917 Detail, +2021-09-16 15:12:43.917 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x06) - FUNC_ID_SERIAL_API_SET_TIMEOUTS: 0x01, 0x05, 0x00, 0x06, 0x64, 0x0f, 0x97 +2021-09-16 15:12:43.921 Detail, contrlr, Received: 0x01, 0x05, 0x01, 0x06, 0x64, 0x0f, 0x96 +2021-09-16 15:12:43.921 Detail, +2021-09-16 15:12:43.921 Info, contrlr, Received reply to FUNC_ID_SERIAL_API_SET_TIMEOUTS +2021-09-16 15:12:43.921 Detail, Node015, Expected reply was received +2021-09-16 15:12:43.921 Detail, Node015, Message transaction complete +2021-09-16 15:12:43.921 Detail, +2021-09-16 15:12:43.921 Detail, contrlr, Removing current message +2021-09-16 15:12:43.921 Detail, +2021-09-16 15:12:43.922 Info, contrlr, Sending (Command) message (Callback ID=0x00, Expected Reply=0x00) - FUNC_ID_SERIAL_API_APPL_NODE_INFORMATION: 0x01, 0x07, 0x00, 0x03, 0x01, 0x02, 0x01, 0x00, 0xf9 +2021-09-16 15:12:43.924 Detail, contrlr, Removing current message +2021-09-16 15:12:43.925 Detail, +2021-09-16 15:12:43.925 Info, Node001, Sending (Command) message (Callback ID=0x00, Expected Reply=0x80) - Get Routing Info (Node=1): 0x01, 0x07, 0x00, 0x80, 0x01, 0x00, 0x00, 0x03, 0x7a +2021-09-16 15:12:43.931 Detail, Node001, Received: 0x01, 0x20, 0x01, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c +2021-09-16 15:12:43.931 Detail, +2021-09-16 15:12:43.931 Info, Node001, Received reply to FUNC_ID_ZW_GET_ROUTING_INFO +2021-09-16 15:12:43.932 Info, Node001, Neighbors of this node are: +2021-09-16 15:12:43.932 Info, Node001, Node 2 +2021-09-16 15:12:43.932 Detail, Expected reply was received +2021-09-16 15:12:43.932 Detail, Message transaction complete +2021-09-16 15:12:43.932 Detail, +2021-09-16 15:12:43.932 Detail, Node001, Removing current message +2021-09-16 15:12:43.932 Detail, +2021-09-16 15:12:43.932 Info, Node002, Sending (NoOp) message (Callback ID=0x0a, Expected Reply=0x13) - NoOperation_Set (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x00, 0x00, 0x25, 0x0a, 0xca +2021-09-16 15:12:43.939 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 +2021-09-16 15:12:43.939 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack +2021-09-16 15:12:43.955 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0a, 0x00, 0xe3 +2021-09-16 15:12:43.955 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0a received (expected 0x0a) +2021-09-16 15:12:43.955 Info, Node002, Request RTT 23 Average Request RTT 23 +2021-09-16 15:12:43.956 Detail, Expected callbackId was received +2021-09-16 15:12:43.956 Detail, Expected reply was received +2021-09-16 15:12:43.956 Detail, Message transaction complete +2021-09-16 15:12:43.956 Detail, +2021-09-16 15:12:43.956 Detail, Node002, Removing current message +2021-09-16 15:12:43.956 Detail, Node002, Notification: Notification - NoOperation +2021-09-16 15:12:43.994 Detail, Node001, Query Stage Complete (Neighbors) +2021-09-16 15:12:43.994 Detail, Node001, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Session live=1 +2021-09-16 15:12:43.994 Detail, Node001, QueryStage_Session +2021-09-16 15:12:43.994 Detail, Node001, QueryStage_Dynamic +2021-09-16 15:12:43.994 Detail, Node001, QueryStage_Configuration +2021-09-16 15:12:43.994 Detail, Node001, QueryStage_Complete +2021-09-16 15:12:43.994 Warning, CheckCompletedNodeQueries m_allNodesQueried=0 m_awakeNodesQueried=0 +2021-09-16 15:12:43.994 Warning, CheckCompletedNodeQueries all=0, deadFound=0 sleepingOnly=0 +2021-09-16 15:12:43.994 Detail, Node001, Notification: NodeQueriesComplete +2021-09-16 15:12:44.008 Detail, Node002, Query Stage Complete (CacheLoad) +2021-09-16 15:12:44.008 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Associations live=1 +2021-09-16 15:12:44.008 Detail, Node002, QueryStage_Associations +2021-09-16 15:12:44.008 Detail, Node002, QueryStage_Neighbors +2021-09-16 15:12:44.008 Detail, Requesting routing info (neighbor list) for Node 2 +2021-09-16 15:12:44.009 Detail, Node002, Queuing (Command) Get Routing Info (Node=2): 0x01, 0x07, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x79 +2021-09-16 15:12:44.009 Detail, Node002, Queuing (Query) Query Stage Complete (Neighbors) +2021-09-16 15:12:44.009 Detail, +2021-09-16 15:12:44.010 Info, Node002, Sending (Command) message (Callback ID=0x00, Expected Reply=0x80) - Get Routing Info (Node=2): 0x01, 0x07, 0x00, 0x80, 0x02, 0x00, 0x00, 0x03, 0x79 +2021-09-16 15:12:44.018 Detail, Node002, Received: 0x01, 0x20, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f +2021-09-16 15:12:44.018 Detail, +2021-09-16 15:12:44.018 Info, Node002, Received reply to FUNC_ID_ZW_GET_ROUTING_INFO +2021-09-16 15:12:44.018 Info, Node002, Neighbors of this node are: +2021-09-16 15:12:44.018 Info, Node002, Node 1 +2021-09-16 15:12:44.018 Detail, Expected reply was received +2021-09-16 15:12:44.018 Detail, Message transaction complete +2021-09-16 15:12:44.018 Detail, +2021-09-16 15:12:44.018 Detail, Node002, Removing current message +2021-09-16 15:12:44.019 Detail, Node002, Query Stage Complete (Neighbors) +2021-09-16 15:12:44.019 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Session live=1 +2021-09-16 15:12:44.019 Detail, Node002, QueryStage_Session +2021-09-16 15:12:44.019 Detail, Node002, Queuing (Query) SwitchAllCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x27, 0x02, 0x25, 0x0b, 0xee +2021-09-16 15:12:44.019 Detail, Node002, Queuing (Query) PowerlevelCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x73, 0x02, 0x25, 0x0c, 0xbd +2021-09-16 15:12:44.019 Detail, Node002, Queuing (Query) ProtectionCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x75, 0x02, 0x25, 0x0d, 0xba +2021-09-16 15:12:44.019 Detail, Node002, Queuing (Query) Query Stage Complete (Session) +2021-09-16 15:12:44.019 Detail, +2021-09-16 15:12:44.019 Info, Node002, Sending (Query) message (Callback ID=0x0b, Expected Reply=0x04) - SwitchAllCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x27, 0x02, 0x25, 0x0b, 0xee +2021-09-16 15:12:44.026 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 +2021-09-16 15:12:44.026 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack +2021-09-16 15:12:44.042 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0b, 0x00, 0xe2 +2021-09-16 15:12:44.042 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0b received (expected 0x0b) +2021-09-16 15:12:44.043 Info, Node002, Request RTT 22 Average Request RTT 22 +2021-09-16 15:12:44.043 Detail, Expected callbackId was received +2021-09-16 15:12:44.051 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x27, 0x03, 0xff, 0x28 +2021-09-16 15:12:44.051 Detail, +2021-09-16 15:12:44.051 Info, Node002, Response RTT 31 Average Response RTT 31 +2021-09-16 15:12:44.051 Detail, Node002, Initial read of value +2021-09-16 15:12:44.051 Info, Node002, Received SwitchAll report from node 2: On and Off Enabled +2021-09-16 15:12:44.051 Detail, Node002, Expected reply and command class was received +2021-09-16 15:12:44.052 Detail, Node002, Message transaction complete +2021-09-16 15:12:44.052 Detail, +2021-09-16 15:12:44.052 Detail, Node002, Removing current message +2021-09-16 15:12:44.052 Detail, Node002, Notification: ValueChanged +2021-09-16 15:12:44.066 Detail, +2021-09-16 15:12:44.066 Info, Node002, Sending (Query) message (Callback ID=0x0c, Expected Reply=0x04) - PowerlevelCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x73, 0x02, 0x25, 0x0c, 0xbd +2021-09-16 15:12:44.074 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 +2021-09-16 15:12:44.074 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack +2021-09-16 15:12:44.089 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0c, 0x00, 0xe5 +2021-09-16 15:12:44.089 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0c received (expected 0x0c) +2021-09-16 15:12:44.089 Info, Node002, Request RTT 22 Average Request RTT 22 +2021-09-16 15:12:44.089 Detail, Expected callbackId was received +2021-09-16 15:12:44.098 Detail, Node002, Received: 0x01, 0x0a, 0x00, 0x04, 0x00, 0x02, 0x04, 0x73, 0x03, 0x00, 0x00, 0x87 +2021-09-16 15:12:44.098 Detail, +2021-09-16 15:12:44.098 Info, Node002, Response RTT 31 Average Response RTT 31 +2021-09-16 15:12:44.098 Info, Node002, Received a PowerLevel report: PowerLevel=Normal, Timeout=0 +2021-09-16 15:12:44.098 Detail, Node002, Initial read of value +2021-09-16 15:12:44.098 Detail, Node002, Initial read of value +2021-09-16 15:12:44.099 Detail, Node002, Expected reply and command class was received +2021-09-16 15:12:44.099 Detail, Node002, Message transaction complete +2021-09-16 15:12:44.099 Detail, +2021-09-16 15:12:44.099 Detail, Node002, Removing current message +2021-09-16 15:12:44.099 Detail, Node002, Notification: ValueChanged +2021-09-16 15:12:44.121 Detail, Node002, Notification: ValueChanged +2021-09-16 15:12:44.125 Detail, +2021-09-16 15:12:44.125 Info, Node002, Sending (Query) message (Callback ID=0x0d, Expected Reply=0x04) - ProtectionCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x75, 0x02, 0x25, 0x0d, 0xba +2021-09-16 15:12:44.132 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 +2021-09-16 15:12:44.132 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack +2021-09-16 15:12:44.148 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0d, 0x00, 0xe4 +2021-09-16 15:12:44.148 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0d received (expected 0x0d) +2021-09-16 15:12:44.148 Info, Node002, Request RTT 23 Average Request RTT 22 +2021-09-16 15:12:44.149 Detail, Expected callbackId was received +2021-09-16 15:12:44.157 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x75, 0x03, 0x00, 0x85 +2021-09-16 15:12:44.157 Detail, +2021-09-16 15:12:44.157 Info, Node002, Response RTT 32 Average Response RTT 31 +2021-09-16 15:12:44.157 Info, Node002, Received a Protection report: Unprotected +2021-09-16 15:12:44.157 Detail, Node002, Initial read of value +2021-09-16 15:12:44.158 Detail, Node002, Expected reply and command class was received +2021-09-16 15:12:44.158 Detail, Node002, Message transaction complete +2021-09-16 15:12:44.158 Detail, +2021-09-16 15:12:44.158 Detail, Node002, Removing current message +2021-09-16 15:12:44.158 Detail, Node002, Notification: ValueChanged +2021-09-16 15:12:44.169 Detail, Node002, Query Stage Complete (Session) +2021-09-16 15:12:44.169 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Dynamic live=1 +2021-09-16 15:12:44.169 Detail, Node002, QueryStage_Dynamic +2021-09-16 15:12:44.170 Detail, Node002, Queuing (Send) SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x0e, 0xe9 +2021-09-16 15:12:44.170 Detail, Node002, Queuing (Query) Query Stage Complete (Dynamic) +2021-09-16 15:12:44.170 Detail, +2021-09-16 15:12:44.170 Info, Node002, Sending (Send) message (Callback ID=0x0e, Expected Reply=0x04) - SwitchBinaryCmd_Get (Node=2): 0x01, 0x09, 0x00, 0x13, 0x02, 0x02, 0x25, 0x02, 0x25, 0x0e, 0xe9 +2021-09-16 15:12:44.177 Detail, Node002, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8 +2021-09-16 15:12:44.177 Detail, Node002, ZW_SEND_DATA delivered to Z-Wave stack +2021-09-16 15:12:44.192 Detail, Node002, Received: 0x01, 0x05, 0x00, 0x13, 0x0e, 0x00, 0xe7 +2021-09-16 15:12:44.193 Detail, Node002, ZW_SEND_DATA Request with callback ID 0x0e received (expected 0x0e) +2021-09-16 15:12:44.193 Info, Node002, Request RTT 22 Average Request RTT 22 +2021-09-16 15:12:44.193 Detail, Expected callbackId was received +2021-09-16 15:12:44.201 Detail, Node002, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x02, 0x03, 0x25, 0x03, 0x00, 0xd5 +2021-09-16 15:12:44.201 Detail, +2021-09-16 15:12:44.202 Info, Node002, Response RTT 31 Average Response RTT 31 +2021-09-16 15:12:44.202 Info, Node002, Received SwitchBinary report from node 2: level=Off +2021-09-16 15:12:44.202 Detail, Node002, Initial read of value +2021-09-16 15:12:44.202 Detail, Node002, Expected reply and command class was received +2021-09-16 15:12:44.202 Detail, Node002, Message transaction complete +2021-09-16 15:12:44.202 Detail, +2021-09-16 15:12:44.202 Detail, Node002, Removing current message +2021-09-16 15:12:44.202 Detail, Node002, Notification: ValueChanged +2021-09-16 15:12:44.207 Detail, Node002, Query Stage Complete (Dynamic) +2021-09-16 15:12:44.207 Detail, Node002, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Configuration live=1 +2021-09-16 15:12:44.207 Detail, Node002, QueryStage_Configuration +2021-09-16 15:12:44.207 Detail, Node002, QueryStage_Complete +2021-09-16 15:12:44.207 Warning, CheckCompletedNodeQueries m_allNodesQueried=0 m_awakeNodesQueried=0 +2021-09-16 15:12:44.208 Warning, CheckCompletedNodeQueries all=1, deadFound=0 sleepingOnly=1 +2021-09-16 15:12:44.208 Info, Node query processing complete. +2021-09-16 15:12:44.208 Detail, Node002, Notification: NodeQueriesComplete +2021-09-16 15:12:44.220 Detail, contrlr, Notification: AllNodesQueried +2021-09-16 16:48:44.778 Info, mgr, Manager::WriteConfig completed for driver with home ID of 0xf9bd3698 +2021-09-16 16:48:45.783 Info, mgr, Driver for controller /dev/ttyUSB0 pending removal +2021-09-16 16:48:45.784 Detail, Notification: DriverRemoved +2021-09-16 16:48:45.784 Always, *************************************************************************** +2021-09-16 16:48:45.784 Always, ********************* Cumulative Network Statistics ********************* +2021-09-16 16:48:45.784 Always, *** General +2021-09-16 16:48:45.784 Always, Driver run time: . . . 0 days, 1 hours, 36 minutes +2021-09-16 16:48:45.784 Always, Frames processed: . . . . . . . . . . . . . . . . . . . . 24 +2021-09-16 16:48:45.784 Always, Total messages successfully received: . . . . . . . . . . 24 +2021-09-16 16:48:45.784 Always, Total Messages successfully sent: . . . . . . . . . . . . 16 +2021-09-16 16:48:45.784 Always, ACKs received from controller: . . . . . . . . . . . . . 16 +2021-09-16 16:48:45.784 Always, *** Errors +2021-09-16 16:48:45.784 Always, Unsolicited messages received while waiting for ACK: . . 0 +2021-09-16 16:48:45.784 Always, Reads aborted due to timeouts: . . . . . . . . . . . . . 0 +2021-09-16 16:48:45.784 Always, Bad checksum errors: . . . . . . . . . . . . . . . . . . 0 +2021-09-16 16:48:45.784 Always, CANs received from controller: . . . . . . . . . . . . . 0 +2021-09-16 16:48:45.785 Always, NAKs received from controller: . . . . . . . . . . . . . 0 +2021-09-16 16:48:45.785 Always, Out of frame data flow errors: . . . . . . . . . . . . . 0 +2021-09-16 16:48:45.785 Always, Messages retransmitted: . . . . . . . . . . . . . . . . . 0 +2021-09-16 16:48:45.785 Always, Messages dropped and not delivered: . . . . . . . . . . . 0 +2021-09-16 16:48:45.785 Always, *************************************************************************** +2021-09-16 16:48:47.796 Info, mgr, Driver for controller /dev/ttyUSB0 removed +2021-09-16 16:48:48.800 Error, mgr, Manager::GetDriver failed - Home ID 0xf9bd3698 is unknown +2021-09-16 16:48:48.800 Warning, Exception: Manager.cpp:373 - 100 - Invalid HomeId passed to GetDriver +2021-09-16 16:48:48.800 Info, mgr, GetSendQueueCount() failed - _homeId -105040232 not found diff --git a/appdaemon/appdaemon.yaml b/appdaemon/appdaemon.yaml new file mode 100644 index 0000000..46b9a7a --- /dev/null +++ b/appdaemon/appdaemon.yaml @@ -0,0 +1,15 @@ +--- +secrets: /config/secrets.yaml +appdaemon: + latitude: 52.379189 + longitude: 4.899431 + elevation: 2 + time_zone: Europe/Amsterdam + plugins: + HASS: + type: hass +http: + url: http://127.0.0.1:5050 +admin: +api: +hadashboard: diff --git a/appdaemon/apps/__pycache__/hello.cpython-39.pyc b/appdaemon/apps/__pycache__/hello.cpython-39.pyc new file mode 100644 index 0000000..27ea7a6 Binary files /dev/null and b/appdaemon/apps/__pycache__/hello.cpython-39.pyc differ diff --git a/appdaemon/apps/apps.yaml b/appdaemon/apps/apps.yaml new file mode 100644 index 0000000..bcd0b39 --- /dev/null +++ b/appdaemon/apps/apps.yaml @@ -0,0 +1,4 @@ +--- +hello_world: + module: hello + class: HelloWorld diff --git a/appdaemon/apps/hello.py b/appdaemon/apps/hello.py new file mode 100644 index 0000000..6e8f1a3 --- /dev/null +++ b/appdaemon/apps/hello.py @@ -0,0 +1,13 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Hellow World App +# +# Args: +# + +class HelloWorld(hass.Hass): + + def initialize(self): + self.log("Hello from AppDaemon") + self.log("You are now ready to run Apps!") diff --git a/appdaemon/compiled/css/default/hello_application.css b/appdaemon/compiled/css/default/hello_application.css new file mode 100644 index 0000000..02f3c26 --- /dev/null +++ b/appdaemon/compiled/css/default/hello_application.css @@ -0,0 +1,250 @@ + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + padding: 0; +} + +body { + margin: 0; + background-color: #222; + font-size: 15px; + color: #fff; + padding: 0; + line-height: 1; + font-family: 'Helvetica Neue', 'Helvetica', 'Open Sans', 'Arial' +} + +b, strong { + font-weight: bold; +} + +a { + text-decoration: none; + color: inherit; +} + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; +} + +img, object { + max-width: 100%; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px;} + +iframe { + max-width: 100%; +} + +table { + border-collapse: collapse; + border-spacing: 0; + width: 100%; +} + +td { + vertical-align: middle; +} + +ul, ol { + padding: 0; + margin: 0; +} + +h1, h2, h3, h4, h5, p { + padding: 0; + margin: 0; +} +h1 { + margin-bottom: 6px; + text-align: center; + font-size: 100%; + font-weight: 200; +} +h2 { + font-size: 300%; + font-weight: 400; + color: #fff; +} +h3 { + font-size: 125%; + font-weight: 300; + color: #fff; +} + +input { + background-color: #444; + border: none; +} + +.dashboard_main { + margin: 0px auto; +} + +.gridster { + margin: 0px auto; +} + +.icon-background { + pointer-events: none; + width: 100%!important; + height: 100%; + position: absolute; + left: 0; + top: 0; + opacity: 0.1; + font-size: 1375%; + text-align: center; + margin-top: 82px; +} + +.list-nostyle { + list-style: none; +} + +.gridster ul { + list-style: none; +} + +.gs-w { + width: 100%; + display: table; + cursor: pointer; + z-index: auto !important; +} + +.iframe { + position: relative; + overflow: hidden; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px;} + +.widget { + padding: 0px 0px; + text-align: center; + width: 100%; + display: table-cell; + vertical-align: middle; + background-color: #444444; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px;} + +.title { + color: #fff; +} + +.icon-inactive { + color: #888; +} + +.icon-active { + color: #aaff00; +} + + +#container { + padding-top: 0px; +} + +.modalDialog { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: rgba(0,0,0,0.8); + z-index: 9999; + opacity:0; + -webkit-transition: opacity 400ms ease-in; + -moz-transition: opacity 400ms ease-in; + transition: opacity 400ms ease-in; + pointer-events: none; +} + +.modalDialogOpen { + opacity:0.95; + pointer-events: auto; +} + +.modalDialogClose { + opacity:0; + pointer-events: none; +} + +.modalDialog > div { + width: 275px; + position: relative; + margin: 3% auto; + padding: 5px 20px 13px 20px; + border-radius: 10px; +} + +.modalDialogCloseButton { + line-height: 50px; + position: absolute; + right: -25px; + text-align: center; + top: -20px; + width: 50px; + text-decoration: none; + font-weight: bold; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; +} + +.modalDialogCloseButton:hover { background: #444; } + +.widget-basedisplay-default-label .unit { + font-size: 225%; + font-weight: 400; + display: inline-block; + vertical-align: top; + margin-left: 5px; + margin-top: 5px; +} + +.widget-basedisplay-default-label .value { + display: inline-block; + vertical-align: middle; +} + +.widget-basedisplay-default-label .valueunit { + width: 100%; + vertical-align: middle; +} + +.widget-basedisplay-default-label .title { + position: absolute; + top: 5px; + width: 100%; +} + +.widget-basedisplay-default-label .title2 { + position: absolute; + top: 23px; + width: 100%; +} + +.widget-basedisplay-default-label .state_text { + position: absolute; + bottom: -3px; + width: 100%; +} +.widget-baseclock-default-clock-clock.date { + position: absolute; + top: 5px; + width: 100%; +} +.widget-baseclock-default-clock-clock.time { + position: absolute; + top: 45px; + width: 100%; +} diff --git a/appdaemon/compiled/css/default/house_application.css b/appdaemon/compiled/css/default/house_application.css new file mode 100644 index 0000000..8cc940a --- /dev/null +++ b/appdaemon/compiled/css/default/house_application.css @@ -0,0 +1,324 @@ + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + padding: 0; +} + +body { + margin: 0; + background-color: #222; + font-size: 15px; + color: #fff; + padding: 0; + line-height: 1; + font-family: 'Helvetica Neue', 'Helvetica', 'Open Sans', 'Arial' +} + +b, strong { + font-weight: bold; +} + +a { + text-decoration: none; + color: inherit; +} + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; +} + +img, object { + max-width: 100%; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px;} + +iframe { + max-width: 100%; +} + +table { + border-collapse: collapse; + border-spacing: 0; + width: 100%; +} + +td { + vertical-align: middle; +} + +ul, ol { + padding: 0; + margin: 0; +} + +h1, h2, h3, h4, h5, p { + padding: 0; + margin: 0; +} +h1 { + margin-bottom: 6px; + text-align: center; + font-size: 100%; + font-weight: 200; +} +h2 { + font-size: 300%; + font-weight: 400; + color: #fff; +} +h3 { + font-size: 125%; + font-weight: 300; + color: #fff; +} + +input { + background-color: #444; + border: none; +} + +.dashboard_main { + margin: 0px auto; +} + +.gridster { + margin: 0px auto; +} + +.icon-background { + pointer-events: none; + width: 100%!important; + height: 100%; + position: absolute; + left: 0; + top: 0; + opacity: 0.1; + font-size: 1375%; + text-align: center; + margin-top: 82px; +} + +.list-nostyle { + list-style: none; +} + +.gridster ul { + list-style: none; +} + +.gs-w { + width: 100%; + display: table; + cursor: pointer; + z-index: auto !important; +} + +.iframe { + position: relative; + overflow: hidden; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px;} + +.widget { + padding: 0px 0px; + text-align: center; + width: 100%; + display: table-cell; + vertical-align: middle; + background-color: #444444; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px;} + +.title { + color: #fff; +} + +.icon-inactive { + color: #888; +} + +.icon-active { + color: #aaff00; +} + + +#container { + padding-top: 0px; +} + +.modalDialog { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background: rgba(0,0,0,0.8); + z-index: 9999; + opacity:0; + -webkit-transition: opacity 400ms ease-in; + -moz-transition: opacity 400ms ease-in; + transition: opacity 400ms ease-in; + pointer-events: none; +} + +.modalDialogOpen { + opacity:0.95; + pointer-events: auto; +} + +.modalDialogClose { + opacity:0; + pointer-events: none; +} + +.modalDialog > div { + width: 275px; + position: relative; + margin: 3% auto; + padding: 5px 20px 13px 20px; + border-radius: 10px; +} + +.modalDialogCloseButton { + line-height: 50px; + position: absolute; + right: -25px; + text-align: center; + top: -20px; + width: 50px; + text-decoration: none; + font-weight: bold; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; +} + +.modalDialogCloseButton:hover { background: #444; } + +.widget-baseclock-default-clock-clock.date { + position: absolute; + top: 5px; + width: 100%; +} +.widget-baseclock-default-clock-clock.time { + position: absolute; + top: 45px; + width: 100%; +} +.widget-basedisplay-default-outside-temp .unit { + font-size: 225%; + font-weight: 400; + display: inline-block; + vertical-align: top; + margin-left: 5px; + margin-top: 5px; +} + +.widget-basedisplay-default-outside-temp .value { + display: inline-block; + vertical-align: middle; +} + +.widget-basedisplay-default-outside-temp .valueunit { + width: 100%; + vertical-align: middle; +} + +.widget-basedisplay-default-outside-temp .title { + position: absolute; + top: 5px; + width: 100%; +} + +.widget-basedisplay-default-outside-temp .title2 { + position: absolute; + top: 23px; + width: 100%; +} + +.widget-basedisplay-default-outside-temp .state_text { + position: absolute; + bottom: -3px; + width: 100%; +} +.widget-baseclimate-default-inside-temp .title { + position: absolute; + top: 5px; + width: 100%; +} + +.widget-baseclimate-default-inside-temp .title2 { + position: absolute; + top: 23px; + width: 100%; +} + +.widget-baseclimate-default-inside-temp .level { + font-size: 250%; + display: inline-block; +} + +.widget-baseclimate-default-inside-temp .units { + font-size: 100%; + font-weight: 400; + display: inline-block; + vertical-align: top; + margin-left: 5px; + margin-top: 5px; +} + +.widget-baseclimate-default-inside-temp .levelunits { + position: absolute; + top: 43px; + width: 100%; +} + +.widget-baseclimate-default-inside-temp .secondary-icon { + position: absolute; + bottom: 0px; + font-size: 20px; + width: 32px; + color: white; +} + +.widget-baseclimate-default-inside-temp .level2 { + display: inline-block; +} + +.widget-baseclimate-default-inside-temp .units2 { + font-size: 65%; + font-weight: 400; + display: inline-block; + vertical-align: top; + +} + +.widget-baseclimate-default-inside-temp .levelunits2 { + position: absolute; + bottom: 5px; + width: 100%; +} +.widget-baseclimate-default-inside-temp .secondary-icon.plus { + right: 24px; +} + +.widget-baseclimate-default-inside-temp .secondary-icon.plus i { + padding-top: 10px; + padding-left: 30px; +} + +.widget-baseclimate-default-inside-temp .secondary-icon.minus { + left: 8px; +} + +.widget-baseclimate-default-inside-temp .secondary-icon.minus i { + padding-top: 10px; + padding-right: 30px; +} diff --git a/appdaemon/compiled/html/default/hello_body.html b/appdaemon/compiled/html/default/hello_body.html new file mode 100644 index 0000000..20458d0 --- /dev/null +++ b/appdaemon/compiled/html/default/hello_body.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/appdaemon/compiled/html/default/hello_head.html b/appdaemon/compiled/html/default/hello_head.html new file mode 100644 index 0000000..f3d270b --- /dev/null +++ b/appdaemon/compiled/html/default/hello_head.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/appdaemon/compiled/html/default/house_body.html b/appdaemon/compiled/html/default/house_body.html new file mode 100644 index 0000000..20458d0 --- /dev/null +++ b/appdaemon/compiled/html/default/house_body.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/appdaemon/compiled/html/default/house_head.html b/appdaemon/compiled/html/default/house_head.html new file mode 100644 index 0000000..f3d270b --- /dev/null +++ b/appdaemon/compiled/html/default/house_head.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/appdaemon/compiled/javascript/application.js b/appdaemon/compiled/javascript/application.js new file mode 100644 index 0000000..5c82734 --- /dev/null +++ b/appdaemon/compiled/javascript/application.js @@ -0,0 +1,3115 @@ +function basetemperature(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters + + var callbacks = [] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + drawChart(self, state) + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + set_value(self, state) + } + + function set_value(self, state) + { + self.gauge.value = state.state + //self.gauge.update() + } + function drawChart(self, state) + { + self.gauge = new LinearGauge({ + renderTo: document.getElementById(self.widget_id).getElementsByClassName('gaugeclass')[0], + type: 'linear-gauge', + width: '120', + height: '120', + valueInt: 2, + valueDec: 1, + colorTitle: '#333', + minValue: 17, + maxValue: 25, + //majorTicks: [0, 5, 10, 15, 20, 25, 30, 35], + minorTicks: 2, + strokeTicks: true + }); + self.gauge.value = state.state + self.gauge.update(self.parameters.settings) + } +} + +function baseradial(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters + + var callbacks = [] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + activateChart(self, state) + } + + function OnStateUpdate(self, state) + { + set_value(self, state) + } + + function set_value(self, state) + { + self.gauge.value = state.state + // self.gauge.update() + } + + function activateChart(self, state) { + self.gauge = new RadialGauge({ + renderTo: document.getElementById(self.widget_id).getElementsByClassName('gaugeclass')[0], + type: 'radial-gauge', + width: '120', + height: '120', + //valueInt: 2, + //valueDec: 1, + colorTitle: '#333', + //minValue: 17, + //maxValue: 25, + //minorTicks: 2, + //strokeTicks: true, + }) + self.gauge.value = state.state + self.gauge.update(self.parameters.settings) + //self.gauge.draw() + } +} + +function basefan(widget_id, url, skin, parameters) +{ + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Parameters may come in useful later on + + self.parameters = parameters; + + self.OnPowerButtonClick = OnPowerButtonClick; + self.On1ButtonClick = On1ButtonClick; + self.On2ButtonClick = On2ButtonClick; + self.On3ButtonClick = On3ButtonClick; + + var callbacks = + [ + + {"selector": '#' + widget_id + ' #power', "action": "click", "callback": self.OnPowerButtonClick}, + {"selector": '#' + widget_id + ' #speed1', "action": "click", "callback": self.On1ButtonClick}, + {"selector": '#' + widget_id + ' #speed2', "action": "click", "callback": self.On2ButtonClick}, + {"selector": '#' + widget_id + ' #speed3', "action": "click", "callback": self.On3ButtonClick} + ]; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ]; + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + function OnStateAvailable(self, state) + { + self.state = state; + set_view(self, state) + } + + // The OnStateUpdate function will be called when the specific entity + // receives a state update - its new values will be available + // in self.state[] and returned in the state parameter + + function OnStateUpdate(self, state) + { + self.state = state ; + set_view(self, state) + } + + function OnPowerButtonClick(self) { + + if (self.state.state=="off"){ + args = self.parameters.post_service_active; + } + else{ + args = self.parameters.post_service_inactive; + } + self.call_service(self, args); + } + + function On1ButtonClick(self) { + args = self.parameters.post_service_speed; + args["speed"] = self.parameters.fields.low_speed; + self.call_service(self, args); + } + function On2ButtonClick(self) { + args = self.parameters.post_service_speed; + args["speed"]= self.parameters.fields.medium_speed; + self.call_service(self, args); + } + function On3ButtonClick(self) { + args = self.parameters.post_service_speed; + args["speed"] = self.parameters.fields.high_speed; + self.call_service(self, args); + } + + + function set_view(self, state) + { + + if (state.state != "on") + { + self.set_icon(self, "icon", self.icons.icon_inactive) + self.set_field(self, "icon_style", self.css.icon_style_inactive) + self.set_field(self,"speed1_style", self.css.speed1_style_inactive) + self.set_field(self,"speed2_style", self.css.speed2_style_inactive) + self.set_field(self,"speed3_style", self.css.speed3_style_inactive) + self.set_icon(self, "icon1", self.icons.icon1_inactive) + self.set_icon(self, "icon2", self.icons.icon2_inactive) + self.set_icon(self, "icon3", self.icons.icon3_inactive) + } + else + //Fan is on + { + //turn main icon on & dispay speed selector + self.set_icon(self, "icon", self.icons.icon_active) + self.set_field(self, "icon_style", self.css.icon_style_active) + + //decide which icon to mark as selected + if (state.attributes.speed == self.parameters.fields.low_speed){ + self.set_field(self,"speed1_style", self.css.speed1_style_active) + self.set_field(self,"speed2_style", self.css.speed2_style_inactive) + self.set_field(self,"speed3_style", self.css.speed3_style_inactive) + self.set_icon(self, "icon1", self.icons.icon1_active) + self.set_icon(self, "icon2", self.icons.icon2_inactive) + self.set_icon(self, "icon3", self.icons.icon3_inactive) + } + else if (state.attributes.speed == self.parameters.fields.medium_speed){ + self.set_field(self,"speed1_style", self.css.speed1_style_inactive) + self.set_field(self,"speed2_style", self.css.speed2_style_active) + self.set_field(self,"speed3_style", self.css.speed3_style_inactive) + self.set_icon(self, "icon1", self.icons.icon1_inactive) + self.set_icon(self, "icon2", self.icons.icon2_active) + self.set_icon(self, "icon3", self.icons.icon3_inactive) + } + else if (state.attributes.speed == self.parameters.fields.high_speed){ + self.set_field(self,"speed1_style", self.css.speed1_style_inactive) + self.set_field(self,"speed2_style", self.css.speed2_style_inactive) + self.set_field(self,"speed3_style", self.css.speed3_style_active) + self.set_icon(self, "icon1", self.icons.icon1_inactive) + self.set_icon(self, "icon2", self.icons.icon2_inactive) + self.set_icon(self, "icon3", self.icons.icon3_active) + } + } + } + +} + +function baselight(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Parameters may come in useful later on + + self.parameters = parameters + + // Parameter handling + + if ("monitored_entity" in self.parameters) + { + entity = self.parameters.monitored_entity + } + else + { + entity = self.parameters.entity + } + + if ("on_brightness" in self.parameters) + { + self.on_brightness = self.parameters.on_brightness + } + else + { + self.on_brightness = 127 + } + + // Define callbacks for on click events + // They are defined as functions below and can be any name as long as the + // 'self'variables match the callbacks array below + // We need to add them into the object for later reference + + self.OnButtonClick = OnButtonClick + self.OnRaiseLevelClick = OnRaiseLevelClick + self.OnLowerLevelClick = OnLowerLevelClick + + var callbacks = + [ + {"selector": '#' + widget_id + ' > span', "action": "click", "callback": self.OnButtonClick}, + {"selector": '#' + widget_id + ' #level-up', "action": "click", "callback": self.OnRaiseLevelClick}, + {"selector": '#' + widget_id + ' #level-down', "action": "click", "callback": self.OnLowerLevelClick}, + ] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + var monitored_entities = + [ + {"entity": entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + function OnStateAvailable(self, state) + { + self.state = state.state; + if ("brightness" in state.attributes) + { + self.level = state.attributes.brightness + } + else + { + self.level = 0 + } + set_view(self, self.state, self.level) + } + + // The OnStateUpdate function will be called when the specific entity + // receives a state update - its new values will be available + // in self.state[] and returned in the state parameter + + function OnStateUpdate(self, state) + { + self.state = state.state; + if ("brightness" in state.attributes) + { + self.level = state.attributes.brightness + } + else + { + self.level = 0 + } + + set_view(self, self.state, self.level) + } + + function OnButtonClick(self) + { + if (self.state == "off") + { + args = jQuery.extend(true, {}, self.parameters.post_service_active) + if ("on_attributes" in self.parameters) + { + for (var attr in self.parameters.on_attributes) + { + args[attr] = self.parameters.on_attributes[attr] + } + } + } + else + { + args = jQuery.extend(true, {}, self.parameters.post_service_inactive) + } + self.call_service(self, args) + toggle(self) + } + + function OnRaiseLevelClick(self) + { + self.level = self.level + 255/10; + self.level = parseInt(self.level) + if (self.level > 255) + { + self.level = 255 + } + args = jQuery.extend(true, {}, self.parameters.post_service_active); + args["brightness"] = self.level + self.call_service(self, args) + } + + function OnLowerLevelClick(self) + { + self.level = self.level - 255/10; + if (self.level < 0) + { + self.level = 0; + } + self.level = parseInt(self.level) + if (self.level == 0) + { + args = jQuery.extend(true, {}, self.parameters.post_service_inactive) + } + else + { + args = jQuery.extend(true, {}, self.parameters.post_service_active) + args["brightness"] = self.level + } + self.call_service(self, args) + } + + function toggle(self) + { + if (self.state == "on") + { + self.state = "off"; + self.level = 0 + } + else + { + self.state = "on"; + } + set_view(self, self.state, self.level) + } + + // Set view is a helper function to set all aspects of the widget to its + // current state - it is called by widget code when an update occurs + // or some other event that requires a an update of the view + + function set_view(self, state, level) + { + + if (state == "on") + { + // Set Icon will set the style correctly for an icon + self.set_icon(self, "icon", self.icons.icon_on) + // Set view will set the view for the appropriate field + self.set_field(self, "icon_style", self.css.icon_style_active) + } + else + { + self.set_icon(self, "icon", self.icons.icon_off) + self.set_field(self, "icon_style", self.css.icon_style_inactive) + } + if (typeof level == 'undefined') + { + self.set_field(self, "level", 0) + } + else + { + self.set_field(self, "level", Math.ceil((level*100/255) / 10) * 10) + } + } +} + +function baseheater(widget_id, url, skin, parameters) +{ + self = this + self.widget_id = widget_id + self.parameters = parameters + + if ("monitored_entity" in self.parameters) + { + entity = self.parameters.monitored_entity + } + else + { + icon_entity = self.parameters.icon_entity + slider_entity = self.parameters.slider_entity + } + + + self.onChange = onChange + self.OnButtonClick = OnButtonClick + + var callbacks = [ + {"selector": '#' + widget_id + ' > span', "action": "click", "callback": self.OnButtonClick}, + {"observable": "Temperature", "action": "change", "callback": self.onChange}, + ] + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("icon_entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.icon_entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate}, + {"entity": parameters.slider_entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate}, + ] + } + else + { + var monitored_entities = [] + } + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + + function OnStateAvailable(self, state) + { + if ("min" in state.attributes) + { + self.minvalue = state.attributes.min + self.maxvalue = state.attributes.max + self.stepvalue = state.attributes.step + self.thermovalue = state.state + set_options(self, self.minvalue, self.maxvalue, self.stepvalue, self.thermovalue) + } + else + { + self.state = state.state + set_iconview(self, self.state) + } + } + + function OnStateUpdate(self, state) + { + if ("min" in state.attributes) + { + self.thermovalue = state.state + set_sliderview(self, self.thermovalue) + } + else + { + self.state = state.state + set_iconview(self, self.state) + } + } + + function OnButtonClick(self) + { + if (self.state == "off") + { + args = self.parameters.post_service_active + } + else + { + args = self.parameters.post_service_inactive + } + //alert(args) + self.call_service(self, args) + toggle(self) + } + + function onChange(self, state) + { + if (self.thermovalue != self.ViewModel.Temperature()) + { + self.thermovalue = self.ViewModel.Temperature() + args = self.parameters.post_service_slider_change + args["value"] = self.thermovalue + self.call_service(self, args) + } + } + + function toggle(self) + { + if (self.state == "on") + { + self.state = "off"; + } + else + { + self.state = "on"; + } + set_iconview(self, self.state) + } + + function set_options(self, minvalue, maxvalue, stepvalue, state) + { + self.set_field(self, "MinValue", minvalue) + self.set_field(self, "MaxValue", maxvalue) + self.set_field(self, "StepValue", stepvalue) + self.set_field(self, "Temperature", state) + } + + function set_iconview(self, state) + { + if (state == "on") + { + self.set_icon(self, "icon", self.icons.icon_on) + self.set_field(self, "icon_style", self.css.icon_style_active) + } + else + { + self.set_icon(self, "icon", self.icons.icon_off) + self.set_field(self, "icon_style", self.css.icon_style_inactive) + } + } + + function set_sliderview(self, state) + { + if (typeof state == 'undefined') + { + self.set_field(self, "Temperature", 0) + } + else + { + self.set_field(self, "Temperature", state) + } + } + +} + +function baseentitypicture(widget_id, url, skin, parameters) +{ + self = this + + // Initialization + + self.parameters = parameters; + + var callbacks = [] + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ]; + + if ("base_url" in parameters && parameters.base_url != "") { + self.base_url = parameters.base_url; + }else{ + self.base_url = ""; + } + + // Call the parent constructor to get things moving + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + function OnStateAvailable(self, state) + { + set_view(self, state) + } + + // The OnStateUpdate function will be called when the specific entity + // receives a state update - its new values will be available + // in self.state[] and returned in the state parameter + + function OnStateUpdate(self, state) + { + set_view(self, state) + } + + function set_view(self, state) + { + if("entity_picture" in state.attributes){ + self.set_field(self, "img_inernal_src", self.base_url + state.attributes["entity_picture"]); + self.set_field(self, "img_internal_style", ""); + }else{ + self.set_field(self, "img_inernal_src", ""); + self.set_field(self, "img_internal_style", "display: none;"); + } + } +} + +function basemedia(widget_id, url, skin, parameters) +{ + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Parameters may come in useful later on + + self.parameters = parameters; + + self.OnPlayButtonClick = OnPlayButtonClick; + self.OnPreviousButtonClick = OnPreviousButtonClick; + self.OnNextButtonClick = OnNextButtonClick; + self.OnRaiseLevelClick = OnRaiseLevelClick; + self.OnLowerLevelClick = OnLowerLevelClick; + + self.min_level = 0; + self.max_level = 1; + + if ("step" in self.parameters) + { + self.step = self.parameters.step / 100; + } + else + { + self.step = 0.1; + } + + var callbacks = + [ + {"selector": '#' + widget_id + ' #play', "action": "click", "callback": self.OnPlayButtonClick}, + {"selector": '#' + widget_id + ' #level-up', "action": "click", "callback": self.OnRaiseLevelClick}, + {"selector": '#' + widget_id + ' #level-down', "action": "click", "callback": self.OnLowerLevelClick}, + {"selector": '#' + widget_id + ' #previous', "action": "click", "callback": self.OnPreviousButtonClick}, + {"selector": '#' + widget_id + ' #next', "action": "click", "callback": self.OnNextButtonClick} + ]; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ]; + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + function OnStateAvailable(self, state) + { + self.entity = state.entity_id; + self.level = state.attributes.volume_level; + self.state = state; + set_view(self, state) + if ("dump_capabilities" in self.parameters && self.parameters["dump_capabilities"] == "1") + { + display_supported_functions(self) + } + } + + // The OnStateUpdate function will be called when the specific entity + // receives a state update - its new values will be available + // in self.state[] and returned in the state parameter + + function OnStateUpdate(self, state) + { + self.level = state.attributes.volume_level; + self.state = state; + set_view(self, state) + } + + function OnPlayButtonClick(self) + { + if (self.entity_state[self.entity].state !== "playing") + { + if (is_supported(self, "PLAY_MEDIA")) + { + args = self.parameters.post_service_play_pause; + self.call_service(self, args) + } + else + { + console.log("Play attribute not supported") + } + } + else + { + if (is_supported(self, "PAUSE")) + { + args = self.parameters.post_service_pause; + self.call_service(self, args) + } + else if (is_supported(self, "STOP")) + { + args = self.parameters.post_service_stop; + self.call_service(self, args) + } + else + { + // Try Play/Pause + args = self.parameters.post_service_play_pause; + self.call_service(self, args) + } + } + } + + function OnPreviousButtonClick(self) + { + if (is_supported(self, "PREVIOUS_TRACK")) + { + args = self.parameters.post_service_previous; + self.call_service(self, args) + } + else + { + console.log("NEXT_TRACK attribute not supported") + } + } + + function OnNextButtonClick(self) + { + if (is_supported(self, "NEXT_TRACK")) + { + args = self.parameters.post_service_next; + self.call_service(self, args) + } + else + { + console.log("NEXT_TRACK attribute not supported") + } + } + + + + function OnRaiseLevelClick(self) + { + self.level = Math.round((self.level + self.step) * 100) / 100; + if (self.level > self.max_level) + { + self.level = self.max_level + } + + args = self.parameters.post_service_level; + args["volume_level"] = self.level; + self.call_service(self, args) + + } + + function OnLowerLevelClick(self) + { + self.level = Math.round((self.level - self.step) * 100) / 100; + if (self.level < self.min_level) + { + self.level = self.min_level + } + + args = self.parameters.post_service_level; + args["volume_level"] = self.level; + self.call_service(self, args) + + + } + + function set_view(self, state) + { + if (state.state === "playing") + { + self.set_field(self, "play_icon_style", self.css.icon_style_active) + self.set_icon(self, "play_icon", self.icons.pause_icon) + } + else + { + self.set_field(self, "play_icon_style", self.css.icon_style_inactive) + self.set_icon(self, "play_icon", self.icons.play_icon) + } + + if ("media_artist" in state.attributes) + { + self.set_field(self, "artist", state.attributes.media_artist); + } + + if ("media_album_name" in state.attributes) + { + self.set_field(self, "album", state.attributes.media_album_name) + } + if ("media_title" in state.attributes) + { + if ("truncate_name" in self.parameters) + { + name = state.attributes.media_title.substring(0, self.parameters.truncate_name); + } + else + { + name = state.attributes.media_title + } + self.set_field(self, "media_title", name); + } + if ("volume_level" in state.attributes) + { + self.set_field(self, "level", Math.round(state.attributes.volume_level * 100)) + } + else + { + self.set_field(self, "level", 0) + } + + } + + function is_supported(self, attr) + { + var support = + { + "PAUSE": 1, + "SEEK": 2, + "VOLUME_SET": 4, + "VOLUME_MUTE": 8, + "PREVIOUS_TRACK": 16, + "NEXT_TRACK": 32, + "TURN_ON": 128, + "TURN_OFF": 256, + "PLAY_MEDIA": 512, + "VOLUME_STEP": 1024, + "SELECT_SOURCE": 2048, + "STOP": 4096, + "CLEAR_PLAYLIST": 8192, + "PLAY": 16384, + "SHUFFLE_SET": 32768 + }; + + var supported = self.state.attributes.supported_features; + + if (attr in support) + { + var attr_value = support[attr]; + if ((supported & attr_value) == attr_value) + { + return true + } + else + { + return false + } + } + else + { + console.log("Unknown media player attribute: " + attr) + return false + } + } + + function display_supported_functions(self) + { + console.log(self.parameters.entity); + console.log("Supported Features: " + self.state.attributes.supported_features); + console.log("PAUSE: " + is_supported(self, "PAUSE")) + console.log("SEEK: " + is_supported(self, "SEEK")) + console.log("VOLUME_SET: " + is_supported(self, "VOLUME_SET")) + console.log("VOLUME_MUTE: " + is_supported(self, "VOLUME_MUTE")) + console.log("PREVIOUS_TRACK: " + is_supported(self, "PREVIOUS_TRACK")) + console.log("NEXT_TRACK: " + is_supported(self, "NEXT_TRACK")) + console.log("TURN_ON: " + is_supported(self, "TURN_ON")) + console.log("TURN_OFF: " + is_supported(self, "TURN_OFF")) + console.log("PLAY_MEDIA: " + is_supported(self, "PLAY_MEDIA")) + console.log("VOLUME_STEP: " + is_supported(self, "VOLUME_STEP")) + console.log("SELECT_SOURCE: " + is_supported(self, "SELECT_SOURCE")) + console.log("STOP: " + is_supported(self, "STOP")) + console.log("CLEAR_PLAYLIST: " + is_supported(self, "CLEAR_PLAYLIST")) + console.log("PLAY: " + is_supported(self, "PLAY")) + console.log("SHUFFLE_SET: " + is_supported(self, "SHUFFLE_SET")) + } +} + +function baserss(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters; + + // + // RSS Info is always in the admin namespace + // + self.parameters.namespace = "admin"; + + var callbacks = []; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + set_value(self, state) + } + + function set_value(self, state) + { + self.story = 0; + clearTimeout(self.timer); + show_next_story(self); + self.timer = setInterval(show_next_story, self.parameters.interval * 1000, self); + } + + function show_next_story(self) + { + var stories = self.entity_state[parameters.entity].state.feed.entries; + self.set_field(self, "text", stories[self.story].title); + if ("show_description" in self.parameters && self.parameters.show_description === 1) + { + if ("summary" in stories[self.story]) + { + self.set_field(self, "description", stories[self.story].summary) + } + if ("description" in stories[self.story]) + { + self.set_field(self, "description", stories[self.story].description) + } + } + self.story = self.story + 1; + if ((self.story >= stories.length) || ("recent" in parameters && self.story >= parameters.recent)) + { + self.story = 0; + } + } +} + +function basecamera(widget_id, url, skin, parameters) +{ + self = this + + // Initialization + + self.parameters = parameters; + + var callbacks = [] + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate}, + ]; + + // Call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Set the url + + self.index = 0; + refresh_frame(self) + self.timeout = undefined + + function refresh_frame(self) + { + if ("base_url" in self.parameters && "access_token" in self) { + var endpoint = '/api/camera_proxy/' + if ('stream' in self.parameters && self.parameters.stream) { + endpoint = '/api/camera_proxy_stream/' + } + + var url = self.parameters.base_url + endpoint + self.parameters.entity + '?token=' + self.access_token + } + else + { + var url = '/images/Blank.gif' + } + + if (url.indexOf('?') > -1) + { + url = url + "&time=" + Math.floor((new Date).getTime()/1000); + } + else + { + url = url + "?time=" + Math.floor((new Date).getTime()/1000); + } + self.set_field(self, "img_src", url); + self.index = 0 + + var refresh = 10 + if ('stream' in self.parameters && self.parameters.stream == "on") { + refresh = 0 + } + if ("refresh" in self.parameters) + { + refresh = self.parameters.refresh + } + + if (refresh > 0) + { + clearTimeout(self.timeout) + self.timeout = setTimeout(function() {refresh_frame(self)}, refresh * 1000); + } + + } + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + function OnStateAvailable(self, state) + { + self.state = state.state; + self.access_token = state.attributes.access_token + refresh_frame(self) + } + + // The OnStateUpdate function will be called when the specific entity + // receives a state update - its new values will be available + // in self.state[] and returned in the state parameter + + function OnStateUpdate(self, state) + { + self.state = state.state; + self.access_token = state.attributes.access_token + refresh_frame(self) + } + + } + +function basegauge(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters + + var callbacks = [] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + + self.gauge = new JustGage({ + parentNode: $('#' + widget_id + ' > div')[0], + //id: "graph", + value: 0, + nogradient: true, + levelColors: [self.parameters.low_color, self.parameters.med_color, self.parameters.high_color], + labelFontColor: self.parameters.color, + valueFontColor: self.parameters.color, + levelColorsGradient: false, + gaugeColor: self.parameters.bgcolor, + symbol: self.parameters.units, + min: self.parameters.min, + max: self.parameters.max, + }); + + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + set_value(self, state) + } + + function set_value(self, state) + { + self.gauge.refresh(state.state) + } +} + +function baseicon(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Parameters may come in useful later on + + self.parameters = parameters; + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + self.OnIconClick = OnIconClick; + + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ]; + + var callbacks = [ + {"selector": '#' + widget_id, "action": "click", "callback": self.OnIconClick}, + ] + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + function OnStateAvailable(self, state) + { + self.state = state.state; + set_view(self, self.state) + } + + // The OnStateUpdate function will be called when the specific entity + // receives a state update - its new values will be available + // in self.state[] and returned in the state parameter + + function OnStateUpdate(self, state) + { + self.state = state.state; + + delay_time = self.parameters.update_delay; + if (delay_time !== undefined) { + if (self.timeout !== undefined) { + clearTimeout(self.timeout); + } + + self.timeout = setTimeout(function() {set_view(self, self.state)}, delay_time * 1000); + } else { + set_view(self, self.state); + } + } + + function OnIconClick(self) { + if (self.post_service_active !== undefined) { + self.call_service(self, self.post_service_active); + } + } + + // Set view is a helper function to set all aspects of the widget to its + // current state - it is called by widget code when an update occurs + // or some other event that requires a an update of the view + + function set_view(self, state, level) + { + if ("icons" in self.parameters) + { + if (state in self.parameters.icons) + { + self.set_icon(self, "icon", self.parameters.icons[state].icon); + self.set_field(self, "icon_style", self.parameters.icons[state].style); + set_service_call(self, self.parameters.icons[state]); + } + else if ("default" in self.parameters.icons) + { + self.set_icon(self, "icon", self.parameters.icons.default.icon); + self.set_field(self, "icon_style", self.parameters.icons.default.style); + set_service_call(self, self.parameters.default); + } + else + { + self.set_icon(self, "icon", "fa-circle-thin"); + self.set_field(self, "icon_style", "color: white"); + set_service_call(self, {}); + } + + } + + if ("state_text" in self.parameters && self.parameters.state_text == 1) + { + self.set_field(self, "state_text", self.map_state(self, state)) + } + } + + function set_service_call(self, data) { + if (data !== undefined) { + if (data.post_service_active !== undefined) { + self.post_service_active = data.post_service_active; + if (self.post_service_active["namespace"] === undefined) { + self.post_service_active["namespace"] = self.parameters.namespace; + } + } else { + self.post_service_active = undefined; + } + } + } +} + +function basejavascript(widget_id, url, skin, parameters) +{ + // Store Args + this.widget_id = widget_id + this.parameters = parameters + this.skin = skin + + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters + + // Define callbacks for on click events + // They are defined as functions below and can be any name as long as the + // 'self'variables match the callbacks array below + // We need to add them into the object for later reference + + self.OnButtonClick = OnButtonClick + + var callbacks = + [ + {"selector": '#' + widget_id + ' > span', "action": "click","callback": self.OnButtonClick}, + ] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + var monitored_entities = + [] + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + + if ("command" in parameters) + { + command = parameters.command + } + else if ("url" in parameters || "dashboard" in parameters) + { + var append = ""; + + if ("url" in parameters) + { + url = parameters.url + } + else + { + url = "/" + parameters.dashboard + if ("forward_parameters" in parameters) + { + append = appendURL(parameters.forward_parameters); + } + } + var i = 0; + + if ("args" in parameters) + { + + url = url + "?"; + + for (var key in parameters.args) + { + if (i != 0) + { + url = url + "&" + } + url = url + key + "=" + parameters.args[key]; + i++ + } + } + if ("skin" in parameters) + { + theskin = parameters.skin + } + else + { + theskin = skin + } + + if (i == 0) + { + url = url + "?skin=" + theskin; + i++ + } + else + { + url = url + "&skin=" + theskin; + i++ + } + + if ("sticky" in parameters) + { + if (i == 0) + { + url = url + "?sticky=" + parameters.sticky; + i++ + } + else + { + url = url + "&sticky=" + parameters.sticky; + i++ + } + } + + if ("return" in parameters) + { + if (i == 0) + { + url = url + "?return=" + parameters.return; + i++ + } + else + { + url = url + "&return=" + parameters.return; + i++ + } + } + else + { + if ("timeout" in parameters) + { + try { + current_dash = location.pathname.split('/')[1]; + if (i == 0) + { + url = url + "?return=" + current_dash; + i++ + } + else + { + url = url + "&return=" + current_dash; + i++ + } + } + catch + { + console.log('failled to auto-set return dashboard') + } + } + } + if ("timeout" in parameters) + { + if (i == 0) + { + url = url + "?timeout=" + parameters.timeout; + i++ + } + else + { + url = url + "&timeout=" + parameters.timeout; + i++ + } + } + if ( append != "" ) + { + if (i == 0) + { + url = url + "?" + append; + i++ + } + else + { + url = url + "&" + append; + i++ + } + } + + command = "window.location.href = '" + url + "'" + } + + self.set_icon(self, "icon", self.icons.icon_inactive); + self.set_field(self, "icon_style", self.css.icon_inactive_style); + + self.command = command; + + function appendURL(forward_list) + { + var append = ""; + if (location.search != "") + { + var query = location.search.substr(1); + var result = {}; + query.split("&").forEach(function(part) { + var item = part.split("="); + result[item[0]] = decodeURIComponent(item[1]); + }); + + var useand = false; + for (arg in result) + { + if (arg != "timeout" && arg != "return" && arg != "sticky" && arg != "skin" && + (forward_list.includes(arg) || forward_list.includes("all")) ) + { + if (useand) + { + append += "&"; + } + useand = true; + append += arg + if (result[arg] != "undefined" ) + { + append += "=" + result[arg] + } + } + } + } + return append + } + + function OnButtonClick(self) + { + self.set_icon(self, "icon", self.icons.icon_active); + self.set_field(self, "icon_style", self.css.icon_active_style); + eval(self.command); + } +} + +function baseerror(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters + + var callbacks = [] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + var monitored_entities = [] + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + +} + +function baseslider(widget_id, url, skin, parameters) +{ + + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Parameters may come in useful later on + + self.parameters = parameters + + self.OnRaiseLevelClick = OnRaiseLevelClick + self.OnLowerLevelClick = OnLowerLevelClick + + var callbacks = + [ + {"selector": '#' + widget_id + ' #level-up', "action": "click", "callback": self.OnRaiseLevelClick}, + {"selector": '#' + widget_id + ' #level-down', "action": "click", "callback": self.OnLowerLevelClick}, + ] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + self.min = state.attributes.min + self.max = state.attributes.max + self.step = state.attributes.step + self.level = state.state + if ("units" in self.parameters) + { + self.set_field(self, "unit", self.parameters.units) + } + set_view(self, state) + } + + function OnStateUpdate(self, state) + { + self.level = state.state + set_view(self, state) + } + + function OnRaiseLevelClick(self) + { + self.level = parseFloat(self.level) + self.step; + if (self.level > self.max) + { + self.level = self.max + } + args = self.parameters.post_service + args["value"] = self.level + self.call_service(self, args) + } + + function OnLowerLevelClick(self, args) + { + self.level = parseFloat(self.level) - self.step; + if (self.level < self.min) + { + self.level = self.min + } + args = self.parameters.post_service + args["value"] = self.level + self.call_service(self, args) + } + + function set_view(self, state) + { + self.set_field(self, "level", self.format_number(self, state.state)) + } +} + +function basetext(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters; + + self.OnChange = OnChange; + + var callbacks = [ + {"observable": "TextValue", "action": "change", "callback": self.OnChange}, + ]; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnChange(self, state) + { + if (self.state != self.ViewModel.TextValue()) + { + self.state = self.ViewModel.TextValue() + args = self.parameters.post_service + args["value"] = self.state + self.call_service(self, args) + } + + } + + function OnStateAvailable(self, state) + { + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + set_value(self, state) + } + + function set_value(self, state) + { + value = self.map_state(self, state.state) + self.set_field(self, "TextValue", value) + } + +} + +function baseinputnumber(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters + + self.onChange = onChange + + var callbacks = [ + {"observable": "SliderValue", "action": "change", "callback": self.onChange}, + ] + + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + self.state = state.state + self.minvalue = state.attributes.min + self.maxvalue = state.attributes.max + self.stepvalue = state.attributes.step + set_options(self, self.minvalue, self.maxvalue, self.stepvalue, state) + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + self.state = state.state + set_value(self, state) + } + + function set_value(self, state) + { + value = self.map_state(self, state.state) + self.set_field(self, "SliderValue", value) + self.set_field(self, "sliderValue", self.format_number(self,value)) + } + + function onChange(self, state) + { + if (self.state != self.ViewModel.SliderValue()) + { + self.state = self.ViewModel.SliderValue() + args = self.parameters.post_service + args["value"] = self.state + self.call_service(self, args) + } + } + + function set_options(self, minvalue, maxvalue, stepvalue, state) + { + //alert(self.maxvalue) + self.set_field(self, "MinValue", minvalue) + self.set_field(self, "MaxValue", maxvalue) + self.set_field(self, "minValue", self.format_number(self,minvalue)) + self.set_field(self, "maxValue", self.format_number(self,maxvalue)) + self.set_field(self, "StepValue", stepvalue) + } + +} + +function baseclock(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Parameters may come in useful later on + + self.parameters = parameters + + // Define callbacks for on click events + // They are defined as functions below and can be any name as long as the + // 'self'variables match the callbacks array below + // We need to add them into the object for later reference + + var callbacks = [] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + var monitored_entities = [] + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + updateTime(self) + + setInterval(updateTime, 500, self); + + function updateTime(self) + { + var today = new Date(); + h = today.getHours(); + m = today.getMinutes(); + s = today.getSeconds(); + m = formatTime(m); + + if ("date_format_country" in self.parameters) + { + if ("date_format_options" in self.parameters) + { + self.set_field(self, "date", today.toLocaleDateString(self.parameters.date_format_country, self.parameters.date_format_options)); + } + else + { + self.set_field(self, "date", today.toLocaleDateString(self.parameters.date_format_country)); + } + } + else + { + self.set_field(self, "date", today.toLocaleDateString()); + } + + if ("time_format" in self.parameters && self.parameters.time_format == "24hr") + { + time = h + ":" + m; + pm = "" + } + else + { + time = formatHours(h) + ":" + m; + pm = " " + formatAmPm(h) + } + + if ("show_seconds" in self.parameters && self.parameters.show_seconds == 1) + { + time = time + ":" + formatTime(s) + } + + time = time + pm + self.set_field(self, "time", time); + } + + function formatTime(i) + { + if (i < 10 ) + { + return "0" + i; + } + else + { + return i; + } + } + + function formatAmPm(h) + { + if (h >= 12) + { + return "PM"; + } + else + { + return "AM"; + } + } + + function formatHours(h) + { + if (h > 12) + { + return h - 12; + } + else if (h == 0) + { + return 12; + } + else + { + return h; + } + } +} + +function baseweather(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Parameters may come in useful later on + + self.parameters = parameters; + + var callbacks = []; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + // Map will be used to know what field are we going to update from what sensor + self.entities_map = {} + + var monitored_entities = [] + + var entities = $.extend({}, parameters.entities, parameters.sensors); + for (var key in entities) + { + var entity = entities[key] + if (entity != '' && check_if_forecast_sensor(parameters.show_forecast, entity)) + { + monitored_entities.push({ + "entity": entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate + }) + self.entities_map[entity] = key + } + } + + // If forecast is disabled - don't monitor the forecast sensors + function check_if_forecast_sensor(show_forecast, entity) + { + if (show_forecast) + { + return true + } + else if(entity.substring(entity.length - 2) === "_1") + { + return false + } + else + { + return true + } + } + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The OnStateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateUpdate(self, state) + { + set_view(self, state) + } + + function OnStateAvailable(self, state) + { + field = self.entities_map[state.entity_id] + if (field == 'temperature') + { + self.set_field(self, "unit", state.attributes.unit_of_measurement) + } + else if (field == 'wind_speed') + { + self.set_field(self, "wind_unit", state.attributes.unit_of_measurement) + } + else if (field == 'pressure') + { + self.set_field(self, "pressure_unit", state.attributes.unit_of_measurement) + } + else if (field == 'precip_intensity') + { + self.set_field(self, "rain_unit", state.attributes.unit_of_measurement) + } + set_view(self, state) + } + + function set_view(self, state) + { + field = self.entities_map[state.entity_id] + if (field) + { + if (field == 'icon' || field == 'forecast_icon') + { + self.set_field(self, field, state.state) + return + } + + if (field == 'precip_type') + { + self.set_field(self, "precip_type_icon", self.parameters.icons[state.state]) + } + else if (field == 'forecast_precip_type') + { + self.set_field(self, "forecast_precip_type_icon", self.parameters.icons[state.state]) + } + else if (field == 'wind_bearing') + { + var counts = [45, 90, 135, 180, 225, 270, 315] + var goal = (parseInt(state.state) + 270) % 360 + var closest = counts.reduce(function(prev, curr) { + return (Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev); + }); + self.set_field(self, "bearing_icon", "mdi-rotate-" + closest) + } + self.set_field(self, field, self.format_number(self, state.state)) + } + } +} + +function baseswitch(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters; + + // Toggle needs to be referenced from self for the timeout function + + self.toggle = toggle; + + // Define callbacks for on click events + // They are defined as functions below and can be any name as long as the + // 'self'variables match the callbacks array below + // We need to add them into the object for later reference + + self.OnButtonClick = OnButtonClick; + + if ("enable" in self.parameters && self.parameters.enable === 1) + { + var callbacks = + [ + {"selector": '#' + widget_id + ' > span', "action": "click", "callback": self.OnButtonClick}, + ] + } + else + { + var callbacks = [] + } + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate}, + ]; + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + + function OnStateAvailable(self, state) + { + self.state = state.state; + set_view(self, self.state) + } + + // The OnStateUpdate function will be called when the specific entity + // receives a state update - its new values will be available + // in self.state[] and returned in the state parameter + + function OnStateUpdate(self, state) + { + if (!("ignore_state" in self.parameters) || self.parameters.ignore_state === 0) + { + self.state = state.state; + set_view(self, self.state) + } + } + + function OnButtonClick(self) + { + if (self.state === self.parameters.state_active) + { + args = self.parameters.post_service_inactive + } + else + { + args = self.parameters.post_service_active + } + args["namespace"] = self.parameters.namespace + + self.call_service(self, args); + toggle(self); + if ("momentary" in self.parameters) + { + setTimeout(function() { self.toggle(self) }, self.parameters["momentary"]) + } + } + + function toggle(self) + { + if (self.state === self.parameters.state_active) + { + self.state = self.parameters.state_inactive; + } + else + { + self.state = self.parameters.state_active; + } + set_view(self, self.state) + } + + // Set view is a helper function to set all aspects of the widget to its + // current state - it is called by widget code when an update occurs + // or some other event that requires a an update of the view + + function set_view(self, state, level) + { + if (state === self.parameters.state_active || ("active_map" in self.parameters && self.parameters.active_map.includes(state))) + { + self.set_icon(self, "icon", self.icons.icon_on); + self.set_field(self, "icon_style", self.css.icon_style_active) + } + else + { + self.set_icon(self, "icon", self.icons.icon_off); + self.set_field(self, "icon_style", self.css.icon_style_inactive) + } + if ("state_text" in self.parameters && self.parameters.state_text === 1) + { + self.set_field(self, "state_text", self.map_state(self, state)) + } + } +} + +function basedatetime(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters; + + self.OnChange = OnChange; + + var callbacks = [ + {"observable": "DateValue", "action": "change", "callback": self.OnChange}, + {"observable": "TimeValue", "action": "change", "callback": self.OnChange}, + ]; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnChange(self, state) + { + date = self.ViewModel.DateValue() + time = self.ViewModel.TimeValue() + args = self.parameters.post_service + if (self.has_date && self.has_time) { + args["datetime"] = self.state + datetime = new Date(self.state); + args["date"] = date; + args["time"] = time; + } + else if (self.has_date) { + args["date"] = date; + } + else { + args["time"] = time; + } + self.call_service(self, args); + } + + function OnStateAvailable(self, state) + { + self.has_date = state.attributes.has_date + self.has_time = state.attributes.has_time + fields = document.getElementById(self.widget_id).childNodes[2]; + datefield = document.getElementById(self.widget_id).childNodes[2].childNodes[0]; + timefield = document.getElementById(self.widget_id).childNodes[2].childNodes[1]; + if(self.has_date && self.has_time) + { + // do nothing + } + else if(self.has_time) + { + fields.removeChild(datefield) + } + else if(self.has_date) + { + fields.removeChild(timefield) + } + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + set_value(self, state) + } + + + function set_value(self, state) + { + datetime = new Date(state.state); + if (self.has_date && self.has_time) + { + datevalue = datetime.getFullYear() + "-" + pad(datetime.getMonth()+1) + "-" + pad(datetime.getDate()); + timevalue = pad(datetime.getHours()) + ":" + pad(datetime.getMinutes()) + ":" + pad(datetime.getSeconds()); + self.set_field(self, "TimeValue", timevalue); + self.set_field(self, "DateValue", datevalue); + } + else if (self.has_date) + { + datevalue = datetime.getFullYear() + "-" + pad(datetime.getMonth()+1) + "-" + pad(datetime.getDate()); + self.set_field(self, "DateValue", datevalue); + } + else + { + timevalue = pad(datetime.getHours()) + ":" + pad(datetime.getMinutes()) + ":" + pad(datetime.getSeconds()); + self.set_field(self, "TimeValue", state.state); + } + + } + + function pad(n) + { + return n<10 ? '0'+n : n; + } +} + +function baseclimate(widget_id, url, skin, parameters) +{ + + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Parameters may come in useful later on + + self.parameters = parameters + + self.OnRaiseLevelClick = OnRaiseLevelClick + self.OnLowerLevelClick = OnLowerLevelClick + + var callbacks = + [ + {"selector": '#' + widget_id + ' #level-up', "action": "click", "callback": self.OnRaiseLevelClick}, + {"selector": '#' + widget_id + ' #level-down', "action": "click", "callback": self.OnLowerLevelClick}, + ] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + + if( "step" in parameters && ! isNaN(self.parameters.step)) + { + self.step = parseFloat(parameters.step) + } + else + { + self.step = 1 + } + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + self.min = state.attributes.min_temp + self.max = state.attributes.max_temp + self.level = state.attributes.temperature + if ("units" in self.parameters) + { + self.set_field(self, "units", self.parameters.units) + } + else + { + self.set_field(self, "units", state.attributes["unit_of_measurement"]) + } + set_view(self, state) + } + + function OnStateUpdate(self, state) + { + self.level = state.attributes.temperature + set_view(self, state) + } + + function OnRaiseLevelClick(self) + { + self.level = parseFloat(self.level) + self.step; + if (self.level > self.max) + { + self.level = self.max + } + args = self.parameters.post_service + args["temperature"] = self.level + self.call_service(self, args) + } + + function OnLowerLevelClick(self, args) + { + self.level = parseFloat(self.level) - self.step; + if (self.level < self.min) + { + self.level = self.min + } + args = self.parameters.post_service; + args["temperature"] = self.level; + self.call_service(self, args) + } + + function set_view(self, state) + { + self.set_field(self, "level", self.format_number(self, state.attributes.current_temperature)); + if ("temperature" in state.attributes && state.attributes.temperature != null) + { + self.set_field(self, "level2", self.format_number(self, state.attributes.temperature)) + } + else + { + self.set_field(self, "level2", "auto") + } + } +} + +function baseselect(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters; + + self.initial = 1 + + self.onChange = onChange; + + var callbacks = [ + {"observable": "selectedoption", "action": "change", "callback": self.onChange} + ]; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + self.state = state; + self.options = state.attributes.options; + set_options(self, self.options, state); + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + if (self.options != state.attributes.options) + { + self.options = state.attributes.options; + set_options(self, self.options, state); + } + if (self.state != state.state) + { + self.state = state.state; + set_value(self, state); + } + } + + function set_value(self, state) + { + value = self.map_state(self, state.state); + self.set_field(self, "selectedoption", value) + } + + function onChange(self, state) + { + if (self.state != self.ViewModel.selectedoption()) + { + self.state = self.ViewModel.selectedoption(); + if (self.initial != 1) + { + args = self.parameters.post_service; + args["option"] = self.state; + self.call_service(self, args) + } + else + { + self.initial = 0 + } + } + } + + function set_options(self, options, state) + { + self.set_field(self, "inputoptions", options) + } + +} + +function baseiframe(widget_id, url, skin, parameters) +{ + self = this + + // Initialization + + self.parameters = parameters; + + var callbacks = [] + + var monitored_entities = [] + + // Call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Set the url + + if ("url_list" in parameters || "img_list" in parameters || "entity_picture" in parameters) + { + self.index = 0; + refresh_frame(self) + } + + function refresh_frame(self) + { + if ("url_list" in self.parameters) + { + self.set_field(self, "frame_src", self.parameters.url_list[self.index]); + self.set_field(self, "img_src", "/images/Blank.gif"); + size = self.parameters.url_list.length + } + else if ("img_list" in self.parameters) + { + var url = self.parameters.img_list[self.index]; + if (url.indexOf('?') > -1) + { + url = url + "&time=" + Math.floor((new Date).getTime()/1000); + } + else + { + url = url + "?time=" + Math.floor((new Date).getTime()/1000); + } + self.set_field(self, "img_src", url); + size = self.parameters.img_list.length + } + else if ("entity_picture" in self.parameters) + { + var url = self.parameters.entity_picture; + if (url.indexOf('?') > -1) + { + url = url + "&time=" + Math.floor((new Date).getTime()/1000); + } + else + { + url = url + "?time=" + Math.floor((new Date).getTime()/1000); + } + self.set_field(self, "img_src", url); + size = 1 + } + + if ("refresh" in self.parameters) + { + self.index = self.index + 1; + if (self.index == size) + { + self.index = 0; + } + setTimeout(function() {refresh_frame(self)}, self.parameters.refresh * 1000); + } + } +} + +function basedisplay(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this; + + // Initialization + + self.widget_id = widget_id; + + // Store on brightness or fallback to a default + + // Parameters may come in useful later on + + self.parameters = parameters; + + var callbacks = []; + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable; + self.OnStateUpdate = OnStateUpdate; + self.OnSubStateAvailable = OnSubStateAvailable; + self.OnSubStateUpdate = OnSubStateUpdate; + + var monitored_entities = []; + + if ("entity" in parameters && parameters.entity != "") + { + // Make sure that we monitor the entity, not an attribute of it + split_entity = parameters.entity.split(".") + self.entity = split_entity[0] + "." + split_entity[1] + if (split_entity.length > 2) + { + self.entity_attribute = split_entity[2] + } + // Check if the sub_entity should be created by monitoring an attribute of the entity + if ("entity_to_sub_entity_attribute" in parameters && parameters.entity_to_sub_entity_attribute != "") + { + self.sub_entity = self.entity + self.sub_entity_attribute = parameters.entity_to_sub_entity_attribute + } + } + + // Only set up the sub_entity if it was not created already with the entity + attribute + if ("sub_entity" in parameters && parameters.sub_entity != "" && !("sub_entity" in self)) + { + // Make sure that we monitor the sub_entity, not an attribute of it + split_sub_entity = parameters.sub_entity.split(".") + self.sub_entity = split_sub_entity[0] + "." + split_sub_entity[1] + if (split_sub_entity.length > 2) + { + self.sub_entity_attribute = split_sub_entity[2] + } + // Check if the entity should be created by monitoring an attribute of the sub_entity + if ("sub_entity_to_entity_attribute" in parameters && !("entity" in self)) + { + self.entity = self.sub_entity + self.entity_attribute = parameters.sub_entity_to_entity_attribute + } + } + + if ("entity" in self) + { + monitored_entities.push({"entity": self.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate}) + } + if ("sub_entity" in self) + { + monitored_entities.push({"entity": self.sub_entity, "initial": self.OnSubStateAvailable, "update": self.OnSubStateUpdate}) + } + + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks); + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + set_value(self, state) + } + + function OnStateUpdate(self, state) + { + set_value(self, state) + } + + function OnSubStateAvailable(self, state) + { + set_sub_value(self, state) + } + + function OnSubStateUpdate(self, state) + { + set_sub_value(self, state) + } + + function set_value(self, state) + { + if ("entity_attribute" in self) { + value = state.attributes[self.entity_attribute] + } + else + { + value = state.state + } + + if (isNaN(value)) + { + self.set_field(self, "value_style", self.parameters.css.text_style); + self.set_field(self, "value", self.map_state(self, value)) + } + else + { + self.set_field(self, "value_style", self.parameters.css.value_style); + self.set_field(self, "value", self.format_number(self, value)); + self.set_field(self, "unit_style", self.parameters.css.unit_style); + if ("units" in self.parameters) + { + self.set_field(self, "unit", self.parameters.units) + } + else + { + self.set_field(self, "unit", state.attributes["unit_of_measurement"]) + } + } + } + + function set_sub_value(self, state) + { + if ("sub_entity_attribute" in self && self.sub_entity_attribute != "") + { + value = state.attributes[self.sub_entity_attribute] + } + else + { + value = state.state + } + + if ("sub_entity_map" in self.parameters) + { + self.set_field(self, "state_text", self.parameters.sub_entity_map[value]) + } + else + { + self.set_field(self, "state_text", value) + } + } +} + +function basealarm(widget_id, url, skin, parameters) +{ + // Will be using "self" throughout for the various flavors of "this" + // so for consistency ... + + self = this + + // Initialization + + self.widget_id = widget_id + + // Parameters may come in useful later on + + self.parameters = parameters + + self.OnButtonClick = OnButtonClick + self.OnCloseClick = OnCloseClick + self.OnDigitClick = OnDigitClick + self.OnArmHomeClick = OnArmHomeClick + self.OnArmAwayClick = OnArmAwayClick + self.OnDisarmClick = OnDisarmClick + self.OnTriggerClick = OnTriggerClick + + + var callbacks = + [ + {"selector": '#' + widget_id + ' > span', "action": "click", "callback": self.OnButtonClick}, + {"selector": '#' + widget_id + ' #close', "action": "click", "callback": self.OnCloseClick}, + {"selector": '#' + widget_id + ' #0', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "0"}}, + {"selector": '#' + widget_id + ' #1', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "1"}}, + {"selector": '#' + widget_id + ' #2', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "2"}}, + {"selector": '#' + widget_id + ' #3', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "3"}}, + {"selector": '#' + widget_id + ' #4', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "4"}}, + {"selector": '#' + widget_id + ' #5', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "5"}}, + {"selector": '#' + widget_id + ' #6', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "6"}}, + {"selector": '#' + widget_id + ' #7', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "7"}}, + {"selector": '#' + widget_id + ' #8', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "8"}}, + {"selector": '#' + widget_id + ' #9', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "9"}}, + {"selector": '#' + widget_id + ' #BS', "action": "click", "callback": self.OnDigitClick, "parameters": {"digit" : "BS"}}, + {"selector": '#' + widget_id + ' #AH', "action": "click", "callback": self.OnArmHomeClick}, + {"selector": '#' + widget_id + ' #AA', "action": "click", "callback": self.OnArmAwayClick}, + {"selector": '#' + widget_id + ' #DA', "action": "click", "callback": self.OnDisarmClick}, + {"selector": '#' + widget_id + ' #TR', "action": "click", "callback": self.OnTriggerClick}, + + ] + + // Define callbacks for entities - this model allows a widget to monitor multiple entities if needed + // Initial will be called when the dashboard loads and state has been gathered for the entity + // Update will be called every time an update occurs for that entity + + self.OnStateAvailable = OnStateAvailable + self.OnStateUpdate = OnStateUpdate + + if ("entity" in parameters) + { + var monitored_entities = + [ + {"entity": parameters.entity, "initial": self.OnStateAvailable, "update": self.OnStateUpdate} + ] + } + else + { + var monitored_entities = [] + } + // Finally, call the parent constructor to get things moving + + WidgetBase.call(self, widget_id, url, skin, parameters, monitored_entities, callbacks) + + self.set_view = set_view + + // Function Definitions + + // The StateAvailable function will be called when + // self.state[] has valid information for the requested entity + // state is the initial state + // Methods + + function OnStateAvailable(self, state) + { + self.set_field(self, "state", self.map_state(self, state.state)) + } + + function OnStateUpdate(self, state) + { + self.set_field(self, "state", self.map_state(self, state.state)) + } + + function OnButtonClick(self) + { + self.code = self.parameters.initial_string + self.set_view(self) + + $('#' + widget_id + ' > #Dialog').removeClass("modalDialogClose") + $('#' + widget_id + ' > #Dialog').addClass("modalDialogOpen") + } + + function OnCloseClick(self) + { + $('#' + widget_id + ' > #Dialog').removeClass("modalDialogOpen") + $('#' + widget_id + ' > #Dialog').addClass("modalDialogClose") + } + + function OnDigitClick(self, parameters) + { + if (parameters.digit == "BS") + { + if (self.code != self.parameters.initial_string) + { + if (self.code.length == 1) + { + self.code = self.parameters.initial_string + } + else + { + self.code = self.code.substring(0, self.code.length - 1); + } + } + } + else + { + if (self.code == self.parameters.initial_string) + { + self.code = parameters.digit + } + else + { + self.code = self.code + parameters.digit + } + } + self.set_view(self) + } + + function OnArmHomeClick(self) + { + + args = self.parameters.post_service_ah + args["code"] = self.code + self.call_service(self, args) + + self.code = self.parameters.initial_string + self.set_view(self) + } + + function OnArmAwayClick(self) + { + args = self.parameters.post_service_aa + args["code"] = self.code + self.call_service(self, args) + + self.code = self.parameters.initial_string + self.set_view(self) + } + + function OnDisarmClick(self) + { + args = self.parameters.post_service_da + args["code"] = self.code + self.call_service(self, args) + + self.code = self.parameters.initial_string + self.set_view(self) + } + + function OnTriggerClick(self) + { + args = self.parameters.post_service_tr + args["code"] = self.code + self.call_service(self, args) + + self.code = self.parameters.initial_string + self.set_view(self) + } + + function set_view(self) + { + self.set_field(self, "code", self.code) + } +} + diff --git a/appdaemon/compiled/javascript/default/hello_init.js b/appdaemon/compiled/javascript/default/hello_init.js new file mode 100644 index 0000000..d416a91 --- /dev/null +++ b/appdaemon/compiled/javascript/default/hello_init.js @@ -0,0 +1,134 @@ +var myDeviceID; +$(function(){ //DOM Ready + + function navigate(url) + { + window.location.href = url; + } + + $(document).attr("title", "Hello Panel"); + content_width = (120 + 5) * 8 + 5 + $('.gridster').width(content_width) + $(".gridster ul").gridster({ + widget_margins: [5, 5], + widget_base_dimensions: [120, 120], + avoid_overlapped_widgets: true, + max_rows: 15, + max_size_x: 8, + shift_widgets_up: false + }).data('gridster').disable(); + + // Add Widgets + + var gridster = $(".gridster ul").gridster().data('gridster'); + + gridster.add_widget('
  • ', 2, 2, 1, 1) + + gridster.add_widget('
  • ', 1, 1, 3, 1) + + + + var widgets = {} + // Initialize Widgets + + widgets["default-label"] = new basedisplay("default-label", "", "default", {'widget_type': 'basedisplay', 'fields': {'title': '', 'title2': '', 'value': 'Hello World', 'unit': '', 'state_text': ''}, 'static_css': {'title_style': 'color: #fff;', 'title2_style': 'color: #fff;', 'unit_style': '', 'value_style': 'color: #fff;', 'state_text_style': 'color: #fff;', 'widget_style': 'background-color: #444;', 'container_style': ''}, 'css': {}, 'icons': [], 'static_icons': [], 'namespace': 'default'}) + + widgets["default-clock-clock"] = new baseclock("default-clock-clock", "", "default", {'widget_type': 'baseclock', 'fields': {'date': '', 'time': ''}, 'static_css': {'date_style': 'color: #fff;', 'time_style': 'color: #aa00ff;', 'widget_style': 'background-color: #444;'}, 'static_icons': [], 'icons': [], 'css': {}, 'entity': 'clock.clock', 'title_is_friendly_name': 1, 'namespace': 'default'}) + + + // Setup click handler to cancel timeout navigations + + $( ".gridster" ).click(function(){ + clearTimeout(myTimeout); + if (myTimeoutSticky) { + myTimeout = setTimeout(function() { navigate(myTimeoutUrl); }, myTimeoutDelay); + } + }); + + // Set up timeout + + var myTimeout; + var myTimeoutUrl; + var myTimeoutDelay; + var myTimeoutSticky = 0; + if (location.search != "") + { + console.log("begin") + var query = location.search.substr(1); + var result = {}; + query.split("&").forEach(function(part) { + var item = part.split("="); + result[item[0]] = decodeURIComponent(item[1]); + }); + + if ("deviceid" in result) + { + myDeviceID = result.deviceid; + try + { + setCookie('ADdevID', myDeviceID); + } + catch (e) + { + console.log(e); + } + } + else + { + try + { + myDeviceID = getCookie('ADdevID'); + } + catch (e) + { + console.log(e); + myDeviceID = null; + } + } + if ("timeout" in result && "return" in result) + { + url = result.return + argcount = 0 + for (arg in result) + { + if (arg != "timeout" && arg != "return" && arg != "sticky") + { + if (argcount == 0) + { + url += "?"; + } + else + { + url += "&"; + } + argcount ++; + url += arg + "=" + result[arg] + } + } + if ("sticky" in result) + { + myTimeoutSticky = (result.sticky == "1"); + } + myTimeoutUrl = url; + myTimeoutDelay = result.timeout * 1000; + myTimeout = setTimeout(function() { navigate(url); }, result.timeout * 1000); + } + } + else + { + try + { + myDeviceID = getCookie('ADdevID'); + } + catch (e) + { + console.log(e); + myDeviceID = null; + } + } + + // Start listening for AD Events + + window.dashstream = new DashStream("ws", location.protocol, document.domain, location.port, "Hello Panel", widgets); + +}); \ No newline at end of file diff --git a/appdaemon/compiled/javascript/default/house_init.js b/appdaemon/compiled/javascript/default/house_init.js new file mode 100644 index 0000000..0368385 --- /dev/null +++ b/appdaemon/compiled/javascript/default/house_init.js @@ -0,0 +1,138 @@ +var myDeviceID; +$(function(){ //DOM Ready + + function navigate(url) + { + window.location.href = url; + } + + $(document).attr("title", "Main Panel"); + content_width = (120 + 5) * 8 + 5 + $('.gridster').width(content_width) + $(".gridster ul").gridster({ + widget_margins: [5, 5], + widget_base_dimensions: [120, 120], + avoid_overlapped_widgets: true, + max_rows: 15, + max_size_x: 8, + shift_widgets_up: false + }).data('gridster').disable(); + + // Add Widgets + + var gridster = $(".gridster ul").gridster().data('gridster'); + + gridster.add_widget('
  • ', 2, 2, 1, 1) + + gridster.add_widget('
  • ', 1, 1, 3, 1) + + gridster.add_widget('
  • ', 1, 1, 4, 1) + + + + var widgets = {} + // Initialize Widgets + + widgets["default-clock-clock"] = new baseclock("default-clock-clock", "", "default", {'widget_type': 'baseclock', 'fields': {'date': '', 'time': ''}, 'static_css': {'date_style': 'color: #fff;', 'time_style': 'color: #aa00ff;', 'widget_style': 'background-color: #444;'}, 'static_icons': [], 'icons': [], 'css': {}, 'entity': 'clock.clock', 'title_is_friendly_name': 1, 'use_comma': 0, 'precision': 1, 'use_hass_icon': 1, 'namespace': 'default'}) + + widgets["default-outside-temp"] = new basedisplay("default-outside-temp", "", "default", {'widget_type': 'basedisplay', 'entity': 'sensor.thermostat_outside_temperature', 'entity_to_sub_entity_attribute': '', 'sub_entity': '', 'sub_entity_to_entity_attribute': '', 'fields': {'title': 'Outside Temperature', 'title2': '', 'value': '', 'unit': '', 'state_text': ''}, 'static_css': {'title_style': 'color: #fff;', 'title2_style': 'color: #fff;', 'state_text_style': 'color: #fff;font-size: 100%;', 'widget_style': 'background-color: #444;', 'container_style': ''}, 'css': {'value_style': 'color: #00aaff;font-size: 250%;', 'text_style': 'color: #fff;font-size: 100%;', 'unit_style': 'color: #00aaff;font-size: 100%;'}, 'icons': [], 'static_icons': [], 'units': '°F', 'precision': 1, 'use_comma': 0, 'use_hass_icon': 1, 'namespace': 'default'}) + + widgets["default-inside-temp"] = new baseclimate("default-inside-temp", "", "default", {'widget_type': 'baseclimate', 'entity': 'climate.home', 'post_service': {'service': 'climate/set_temperature', 'entity_id': 'climate.home'}, 'fields': {'title': 'Thermostat', 'title2': '', 'units': '', 'level': '', 'level2': ''}, 'icons': [], 'css': {}, 'static_icons': {'icon_up': 'fas-plus', 'icon_down': 'fas-minus'}, 'static_css': {'title_style': 'color: #fff;', 'title2_style': 'color: #fff;', 'level_style': 'color: #00aaff;', 'level2_style': 'color: #00aaff;', 'level_up_style': 'color: #888;', 'level_down_style': 'color: #888;', 'widget_style': 'background-color: #444;', 'unit_style': 'color: #00aaff;', 'unit2_style': 'color: #00aaff;'}, 'use_comma': 0, 'precision': 1, 'use_hass_icon': 1, 'namespace': 'default'}) + + + // Setup click handler to cancel timeout navigations + + $( ".gridster" ).click(function(){ + clearTimeout(myTimeout); + if (myTimeoutSticky) { + myTimeout = setTimeout(function() { navigate(myTimeoutUrl); }, myTimeoutDelay); + } + }); + + // Set up timeout + + var myTimeout; + var myTimeoutUrl; + var myTimeoutDelay; + var myTimeoutSticky = 0; + if (location.search != "") + { + console.log("begin") + var query = location.search.substr(1); + var result = {}; + query.split("&").forEach(function(part) { + var item = part.split("="); + result[item[0]] = decodeURIComponent(item[1]); + }); + + if ("deviceid" in result) + { + myDeviceID = result.deviceid; + try + { + setCookie('ADdevID', myDeviceID); + } + catch (e) + { + console.log(e); + } + } + else + { + try + { + myDeviceID = getCookie('ADdevID'); + } + catch (e) + { + console.log(e); + myDeviceID = null; + } + } + if ("timeout" in result && "return" in result) + { + url = result.return + argcount = 0 + for (arg in result) + { + if (arg != "timeout" && arg != "return" && arg != "sticky") + { + if (argcount == 0) + { + url += "?"; + } + else + { + url += "&"; + } + argcount ++; + url += arg + "=" + result[arg] + } + } + if ("sticky" in result) + { + myTimeoutSticky = (result.sticky == "1"); + } + myTimeoutUrl = url; + myTimeoutDelay = result.timeout * 1000; + myTimeout = setTimeout(function() { navigate(url); }, result.timeout * 1000); + } + } + else + { + try + { + myDeviceID = getCookie('ADdevID'); + } + catch (e) + { + console.log(e); + myDeviceID = null; + } + } + + // Start listening for AD Events + + window.dashstream = new DashStream("ws", location.protocol, document.domain, location.port, "Main Panel", widgets); + +}); \ No newline at end of file diff --git a/appdaemon/dashboards/Hello.dash b/appdaemon/dashboards/Hello.dash new file mode 100644 index 0000000..016703f --- /dev/null +++ b/appdaemon/dashboards/Hello.dash @@ -0,0 +1,14 @@ +# +# Main arguments, all optional +# +title: Hello Panel +widget_dimensions: [120, 120] +widget_margins: [5, 5] +columns: 8 + +label: + widget_type: label + text: Hello World + +layout: + - label(2x2), clock.clock diff --git a/appdaemon/dashboards/House.dash b/appdaemon/dashboards/House.dash new file mode 100644 index 0000000..959ee68 --- /dev/null +++ b/appdaemon/dashboards/House.dash @@ -0,0 +1,36 @@ +title: Main Panel +widget_dimensions: [120, 120] +widget_size: [1, 1] +widget_margins: [5, 5] +columns: 8 +global_parameters: + use_comma: 0 + precision: 1 + use_hass_icon: 1 + namespace: default +layout: + - clock.clock (2x2), outside_temp, inside_temp + # - set_temp, spacer, test + +test: + widget_type: label + title: test + +outside_temp: + widget_type: sensor + title: Outside Temperature + units: "°F" + precision: 1 + entity: sensor.thermostat_outside_temperature + +#inside_temp: +# widget_type: sensor +# title: Inside Temperature +# units: "°F" +# precision: 1 +# entity: sensor.home_temperature + +inside_temp: + widget_type: climate + title: Thermostat + entity: climate.home diff --git a/configuration.yaml b/configuration.yaml index 109d492..9900a2a 100644 --- a/configuration.yaml +++ b/configuration.yaml @@ -1,3 +1,4 @@ + frontend: lovelace: mode: yaml @@ -16,10 +17,12 @@ mobile_app: config: default_config: + http: use_x_forwarded_for: true trusted_proxies: - 192.168.86.198 +alexa: # Text to speech tts: @@ -86,5 +89,16 @@ sensor: - platform: mqtt state_topic: "DansPhone/sleepinfo" name: "sleep Info" - - + +#Alexa Intents +intent_script: + ActivateScene: + action: + service: scene.turn_on + target: + entity_id: scene.{{ Scene | replace(" ", "_") }} + speech: + type: plain + text: OK + + \ No newline at end of file diff --git a/custom_components/hacs/__init__.py b/custom_components/hacs/__init__.py new file mode 100644 index 0000000..db07e04 --- /dev/null +++ b/custom_components/hacs/__init__.py @@ -0,0 +1,68 @@ +""" +HACS gives you a powerful UI to handle downloads of all your custom needs. + +For more details about this integration, please refer to the documentation at +https://hacs.xyz/ +""" +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +import voluptuous as vol + +from .const import DOMAIN, PLATFORMS +from .enums import HacsDisabledReason +from .helpers.functions.configuration_schema import hacs_config_combined +from .operational.setup import ( + async_setup as hacs_yaml_setup, + async_setup_entry as hacs_ui_setup, +) + +if TYPE_CHECKING: + from .base import HacsBase + +CONFIG_SCHEMA = vol.Schema({DOMAIN: hacs_config_combined()}, extra=vol.ALLOW_EXTRA) + + +async def async_setup(hass: HomeAssistant, config: dict[str, Any]) -> bool: + """Set up this integration using yaml.""" + + return await hacs_yaml_setup(hass, config) + + +async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: + """Set up this integration using UI.""" + config_entry.add_update_listener(async_reload_entry) + + return await hacs_ui_setup(hass, config_entry) + + +async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: + """Handle removal of an entry.""" + hacs: HacsBase = hass.data[DOMAIN] + + for task in hacs.recuring_tasks: + # Cancel all pending tasks + task() + + try: + if hass.data.get("frontend_panels", {}).get("hacs"): + hacs.log.info("Removing sidepanel") + hass.components.frontend.async_remove_panel("hacs") + except AttributeError: + pass + + unload_ok = await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS) + + hacs.disable_hacs(HacsDisabledReason.REMOVED) + hass.data.pop(DOMAIN, None) + + return unload_ok + + +async def async_reload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> None: + """Reload the HACS config entry.""" + await async_unload_entry(hass, config_entry) + await async_setup_entry(hass, config_entry) diff --git a/custom_components/hacs/api/__init__.py b/custom_components/hacs/api/__init__.py new file mode 100644 index 0000000..f8017b3 --- /dev/null +++ b/custom_components/hacs/api/__init__.py @@ -0,0 +1 @@ +"""Initialize HACS API""" diff --git a/custom_components/hacs/api/acknowledge_critical_repository.py b/custom_components/hacs/api/acknowledge_critical_repository.py new file mode 100644 index 0000000..f0d69bd --- /dev/null +++ b/custom_components/hacs/api/acknowledge_critical_repository.py @@ -0,0 +1,25 @@ +"""API Handler for acknowledge_critical_repository""" +from homeassistant.components import websocket_api +import homeassistant.helpers.config_validation as cv +import voluptuous as vol + +from custom_components.hacs.helpers.functions.store import ( + async_load_from_store, + async_save_to_store, +) + + +@websocket_api.async_response +@websocket_api.websocket_command( + {vol.Required("type"): "hacs/critical", vol.Optional("repository"): cv.string} +) +async def acknowledge_critical_repository(hass, connection, msg): + """Handle get media player cover command.""" + repository = msg["repository"] + + critical = await async_load_from_store(hass, "critical") + for repo in critical: + if repository == repo["repository"]: + repo["acknowledged"] = True + await async_save_to_store(hass, "critical", critical) + connection.send_message(websocket_api.result_message(msg["id"], critical)) diff --git a/custom_components/hacs/api/check_local_path.py b/custom_components/hacs/api/check_local_path.py new file mode 100644 index 0000000..d45526b --- /dev/null +++ b/custom_components/hacs/api/check_local_path.py @@ -0,0 +1,24 @@ +"""API Handler for check_local_path""" +from homeassistant.components import websocket_api +import homeassistant.helpers.config_validation as cv +import voluptuous as vol + +from custom_components.hacs.helpers.functions.path_exsist import async_path_exsist + + +@websocket_api.async_response +@websocket_api.websocket_command( + {vol.Required("type"): "hacs/check_path", vol.Optional("path"): cv.string} +) +async def check_local_path(_hass, connection, msg): + """Handle get media player cover command.""" + path = msg.get("path") + exist = {"exist": False} + + if path is None: + return + + if await async_path_exsist(path): + exist["exist"] = True + + connection.send_message(websocket_api.result_message(msg["id"], exist)) diff --git a/custom_components/hacs/api/get_critical_repositories.py b/custom_components/hacs/api/get_critical_repositories.py new file mode 100644 index 0000000..23fdcf4 --- /dev/null +++ b/custom_components/hacs/api/get_critical_repositories.py @@ -0,0 +1,15 @@ +"""API Handler for get_critical_repositories""" +from homeassistant.components import websocket_api +import voluptuous as vol + +from custom_components.hacs.helpers.functions.store import async_load_from_store + + +@websocket_api.async_response +@websocket_api.websocket_command({vol.Required("type"): "hacs/get_critical"}) +async def get_critical_repositories(hass, connection, msg): + """Handle get media player cover command.""" + critical = await async_load_from_store(hass, "critical") + if not critical: + critical = [] + connection.send_message(websocket_api.result_message(msg["id"], critical)) diff --git a/custom_components/hacs/api/hacs_config.py b/custom_components/hacs/api/hacs_config.py new file mode 100644 index 0000000..35609a6 --- /dev/null +++ b/custom_components/hacs/api/hacs_config.py @@ -0,0 +1,28 @@ +"""API Handler for hacs_config""" +from homeassistant.components import websocket_api +import voluptuous as vol + +from custom_components.hacs.share import get_hacs + + +@websocket_api.async_response +@websocket_api.websocket_command({vol.Required("type"): "hacs/config"}) +async def hacs_config(_hass, connection, msg): + """Handle get media player cover command.""" + hacs = get_hacs() + config = hacs.configuration + + content = {} + content["frontend_mode"] = config.frontend_mode + content["frontend_compact"] = config.frontend_compact + content["onboarding_done"] = config.onboarding_done + content["version"] = hacs.version + content["frontend_expected"] = hacs.frontend.version_expected + content["frontend_running"] = hacs.frontend.version_running + content["dev"] = config.dev + content["debug"] = config.debug + content["country"] = config.country + content["experimental"] = config.experimental + content["categories"] = hacs.common.categories + + connection.send_message(websocket_api.result_message(msg["id"], content)) diff --git a/custom_components/hacs/api/hacs_removed.py b/custom_components/hacs/api/hacs_removed.py new file mode 100644 index 0000000..7ede24e --- /dev/null +++ b/custom_components/hacs/api/hacs_removed.py @@ -0,0 +1,15 @@ +"""API Handler for hacs_removed""" +from homeassistant.components import websocket_api +import voluptuous as vol + +from custom_components.hacs.share import list_removed_repositories + + +@websocket_api.async_response +@websocket_api.websocket_command({vol.Required("type"): "hacs/removed"}) +async def hacs_removed(_hass, connection, msg): + """Get information about removed repositories.""" + content = [] + for repo in list_removed_repositories(): + content.append(repo.to_json()) + connection.send_message(websocket_api.result_message(msg["id"], content)) diff --git a/custom_components/hacs/api/hacs_repositories.py b/custom_components/hacs/api/hacs_repositories.py new file mode 100644 index 0000000..d4d79f5 --- /dev/null +++ b/custom_components/hacs/api/hacs_repositories.py @@ -0,0 +1,65 @@ +"""API Handler for hacs_repositories""" +from homeassistant.components import websocket_api +import voluptuous as vol + +from custom_components.hacs.share import get_hacs + + +@websocket_api.async_response +@websocket_api.websocket_command({vol.Required("type"): "hacs/repositories"}) +async def hacs_repositories(_hass, connection, msg): + """Handle get media player cover command.""" + hacs = get_hacs() + repositories = hacs.repositories + content = [] + for repo in repositories: + if ( + repo.data.category in hacs.common.categories + and not repo.ignored_by_country_configuration + ): + data = { + "additional_info": repo.information.additional_info, + "authors": repo.data.authors, + "available_version": repo.display_available_version, + "beta": repo.data.show_beta, + "can_install": repo.can_install, + "category": repo.data.category, + "country": repo.data.country, + "config_flow": repo.data.config_flow, + "custom": repo.custom, + "default_branch": repo.data.default_branch, + "description": repo.data.description, + "domain": repo.data.domain, + "downloads": repo.data.downloads, + "file_name": repo.data.file_name, + "first_install": repo.status.first_install, + "full_name": repo.data.full_name, + "hide": repo.data.hide, + "hide_default_branch": repo.data.hide_default_branch, + "homeassistant": repo.data.homeassistant, + "id": repo.data.id, + "info": repo.information.info, + "installed_version": repo.display_installed_version, + "installed": repo.data.installed, + "issues": repo.data.open_issues, + "javascript_type": repo.information.javascript_type, + "last_updated": repo.data.last_updated, + "local_path": repo.content.path.local, + "main_action": repo.main_action, + "name": repo.display_name, + "new": repo.data.new, + "pending_upgrade": repo.pending_upgrade, + "releases": repo.data.published_tags, + "selected_tag": repo.data.selected_tag, + "stars": repo.data.stargazers_count, + "state": repo.state, + "status_description": repo.display_status_description, + "status": repo.display_status, + "topics": repo.data.topics, + "updated_info": repo.status.updated_info, + "version_or_commit": repo.display_version_or_commit, + } + + content.append(data) + + connection.send_message(websocket_api.result_message(msg["id"], content)) diff --git a/custom_components/hacs/api/hacs_repository.py b/custom_components/hacs/api/hacs_repository.py new file mode 100644 index 0000000..bfa0023 --- /dev/null +++ b/custom_components/hacs/api/hacs_repository.py @@ -0,0 +1,113 @@ +"""API Handler for hacs_repository""" +from aiogithubapi import AIOGitHubAPIException +from homeassistant.components import websocket_api +import homeassistant.helpers.config_validation as cv +import voluptuous as vol + +from custom_components.hacs.share import get_hacs +from custom_components.hacs.utils.logger import getLogger + + +@websocket_api.async_response +@websocket_api.websocket_command( + { + vol.Required("type"): "hacs/repository", + vol.Optional("action"): cv.string, + vol.Optional("repository"): cv.string, + } +) +async def hacs_repository(hass, connection, msg): + """Handle get media player cover command.""" + hacs = get_hacs() + logger = getLogger() + data = {} + repository = None + + repo_id = msg.get("repository") + action = msg.get("action") + if repo_id is None or action is None: + return + + try: + repository = hacs.get_by_id(repo_id) + logger.debug(f"Running {action} for {repository.data.full_name}") + + if action == "update": + await repository.update_repository(ignore_issues=True, force=True) + repository.status.updated_info = True + + elif action == "install": + repository.data.new = False + was_installed = repository.data.installed + await repository.async_install() + if not was_installed: + hass.bus.async_fire("hacs/reload", {"force": True}) + + elif action == "not_new": + repository.data.new = False + + elif action == "uninstall": + repository.data.new = False + await repository.update_repository(True) + await repository.uninstall() + + elif action == "hide": + repository.data.hide = True + + elif action == "unhide": + repository.data.hide = False + + elif action == "show_beta": + repository.data.show_beta = True + await repository.update_repository() + + elif action == "hide_beta": + repository.data.show_beta = False + await repository.update_repository() + + elif action == "toggle_beta": + repository.data.show_beta = not repository.data.show_beta + await repository.update_repository() + + elif action == "delete": + repository.data.show_beta = False + repository.remove() + + elif action == "release_notes": + data = [ + { + "name": x.attributes["name"], + "body": x.attributes["body"], + "tag": x.attributes["tag_name"], + } + for x in repository.releases.objects + ] + + elif action == "set_version": + if msg["version"] == repository.data.default_branch: + repository.data.selected_tag = None + else: + repository.data.selected_tag = msg["version"] + await repository.update_repository() + + hass.bus.async_fire("hacs/reload", {"force": True}) + + else: + logger.error(f"WS action '{action}' is not valid") + + await hacs.data.async_write() + message = None + except AIOGitHubAPIException as exception: + message = exception + except AttributeError as exception: + message = f"Could not use repository with ID {repo_id} ({exception})" + except (Exception, BaseException) as exception: # pylint: disable=broad-except + message = exception + + if message is not None: + logger.error(message) + hass.bus.async_fire("hacs/error", {"message": str(message)}) + + if repository: + repository.state = None + connection.send_message(websocket_api.result_message(msg["id"], data)) diff --git a/custom_components/hacs/api/hacs_repository_data.py b/custom_components/hacs/api/hacs_repository_data.py new file mode 100644 index 0000000..123d8dd --- /dev/null +++ b/custom_components/hacs/api/hacs_repository_data.py @@ -0,0 +1,121 @@ +"""API Handler for hacs_repository_data""" +import sys + +from aiogithubapi import AIOGitHubAPIException +from homeassistant.components import websocket_api +import homeassistant.helpers.config_validation as cv +import voluptuous as vol + +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.functions.misc import extract_repository_from_url +from custom_components.hacs.helpers.functions.register_repository import ( + register_repository, +) +from custom_components.hacs.share import get_hacs +from custom_components.hacs.utils.logger import getLogger + +_LOGGER = getLogger() + + +@websocket_api.async_response +@websocket_api.websocket_command( + { + vol.Required("type"): "hacs/repository/data", + vol.Optional("action"): cv.string, + vol.Optional("repository"): cv.string, + vol.Optional("data"): cv.string, + } +) +async def hacs_repository_data(hass, connection, msg): + """Handle get media player cover command.""" + hacs = get_hacs() + repo_id = msg.get("repository") + action = msg.get("action") + data = msg.get("data") + + if repo_id is None: + return + + if action == "add": + repo_id = extract_repository_from_url(repo_id) + if repo_id is None: + return + + if repo_id in hacs.common.skip: + hacs.common.skip.remove(repo_id) + + if not hacs.get_by_name(repo_id): + try: + registration = await register_repository(repo_id, data.lower()) + if registration is not None: + raise HacsException(registration) + except ( + Exception, + BaseException, + ) as exception: # pylint: disable=broad-except + hass.bus.async_fire( + "hacs/error", + { + "action": "add_repository", + "exception": str(sys.exc_info()[0].__name__), + "message": str(exception), + }, + ) + else: + hass.bus.async_fire( + "hacs/error", + { + "action": "add_repository", + "message": f"Repository '{repo_id}' exists in the store.", + }, + ) + + repository = hacs.get_by_name(repo_id) + else: + repository = hacs.get_by_id(repo_id) + + if repository is None: + hass.bus.async_fire("hacs/repository", {}) + return + + _LOGGER.debug("Running %s for %s", action, repository.data.full_name) + try: + if action == "set_state": + repository.state = data + + elif action == "set_version": + repository.data.selected_tag = data + await repository.update_repository() + + repository.state = None + + elif action == "install": + was_installed = repository.data.installed + repository.data.selected_tag = data + await repository.update_repository() + await repository.async_install() + repository.state = None + if not was_installed: + hass.bus.async_fire("hacs/reload", {"force": True}) + + elif action == "add": + repository.state = None + + else: + repository.state = None + _LOGGER.error("WS action '%s' is not valid", action) + + message = None + except AIOGitHubAPIException as exception: + message = exception + except AttributeError as exception: + message = f"Could not use repository with ID {repo_id} ({exception})" + except (Exception, BaseException) as exception: # pylint: disable=broad-except + message = exception + + if message is not None: + _LOGGER.error(message) + hass.bus.async_fire("hacs/error", {"message": str(message)}) + + await hacs.data.async_write() + connection.send_message(websocket_api.result_message(msg["id"], {})) diff --git a/custom_components/hacs/api/hacs_settings.py b/custom_components/hacs/api/hacs_settings.py new file mode 100644 index 0000000..7af3468 --- /dev/null +++ b/custom_components/hacs/api/hacs_settings.py @@ -0,0 +1,54 @@ +"""API Handler for hacs_settings""" +from homeassistant.components import websocket_api +import homeassistant.helpers.config_validation as cv +import voluptuous as vol + +from custom_components.hacs.share import get_hacs +from custom_components.hacs.utils.logger import getLogger + +_LOGGER = getLogger() + + +@websocket_api.async_response +@websocket_api.websocket_command( + { + vol.Required("type"): "hacs/settings", + vol.Optional("action"): cv.string, + vol.Optional("categories"): cv.ensure_list, + } +) +async def hacs_settings(hass, connection, msg): + """Handle get media player cover command.""" + hacs = get_hacs() + + action = msg["action"] + _LOGGER.debug("WS action '%s'", action) + + if action == "set_fe_grid": + hacs.configuration.frontend_mode = "Grid" + + elif action == "onboarding_done": + hacs.configuration.onboarding_done = True + + elif action == "set_fe_table": + hacs.configuration.frontend_mode = "Table" + + elif action == "set_fe_compact_true": + hacs.configuration.frontend_compact = False + + elif action == "set_fe_compact_false": + hacs.configuration.frontend_compact = True + + elif action == "clear_new": + for repo in hacs.repositories: + if repo.data.new and repo.data.category in msg.get("categories", []): + _LOGGER.debug( + "Clearing new flag from '%s'", + repo.data.full_name, + ) + repo.data.new = False + else: + _LOGGER.error("WS action '%s' is not valid", action) + hass.bus.async_fire("hacs/config", {}) + await hacs.data.async_write() + connection.send_message(websocket_api.result_message(msg["id"], {})) diff --git a/custom_components/hacs/api/hacs_status.py b/custom_components/hacs/api/hacs_status.py new file mode 100644 index 0000000..15ce85c --- /dev/null +++ b/custom_components/hacs/api/hacs_status.py @@ -0,0 +1,24 @@ +"""API Handler for hacs_status""" +from homeassistant.components import websocket_api +import voluptuous as vol + +from custom_components.hacs.share import get_hacs + + +@websocket_api.async_response +@websocket_api.websocket_command({vol.Required("type"): "hacs/status"}) +async def hacs_status(_hass, connection, msg): + """Handle get media player cover command.""" + hacs = get_hacs() + content = { + "startup": hacs.status.startup, + "background_task": hacs.status.background_task, + "lovelace_mode": hacs.core.lovelace_mode, + "reloading_data": hacs.status.reloading_data, + "upgrading_all": hacs.status.upgrading_all, + "disabled": hacs.system.disabled, + "disabled_reason": hacs.system.disabled_reason, + "has_pending_tasks": hacs.queue.has_pending_tasks, + "stage": hacs.stage, + } + connection.send_message(websocket_api.result_message(msg["id"], content)) diff --git a/custom_components/hacs/base.py b/custom_components/hacs/base.py new file mode 100644 index 0000000..457ce59 --- /dev/null +++ b/custom_components/hacs/base.py @@ -0,0 +1,236 @@ +"""Base HACS class.""" +from __future__ import annotations + +from dataclasses import asdict, dataclass, field +import json +import logging +import math +import pathlib +from typing import TYPE_CHECKING, Any + +from aiogithubapi import ( + GitHub, + GitHubAPI, + GitHubAuthenticationException, + GitHubRatelimitException, +) +from aiogithubapi.objects.repository import AIOGitHubAPIRepository +from aiohttp.client import ClientSession +from homeassistant.core import HomeAssistant +from homeassistant.loader import Integration +from queueman.manager import QueueManager + +from .const import REPOSITORY_HACS_DEFAULT +from .enums import ( + ConfigurationType, + HacsCategory, + HacsDisabledReason, + HacsStage, + LovelaceMode, +) +from .exceptions import HacsException +from .utils.decode import decode_content +from .utils.logger import getLogger + +if TYPE_CHECKING: + from .hacsbase.data import HacsData + from .helpers.classes.repository import HacsRepository + from .operational.factory import HacsTaskFactory + from .tasks.manager import HacsTaskManager + + +@dataclass +class HacsConfiguration: + """HacsConfiguration class.""" + + appdaemon_path: str = "appdaemon/apps/" + appdaemon: bool = False + config: dict[str, Any] = field(default_factory=dict) + config_entry: dict[str, str] = field(default_factory=dict) + config_type: ConfigurationType | None = None + country: str = "ALL" + debug: bool = False + dev: bool = False + experimental: bool = False + frontend_compact: bool = False + frontend_mode: str = "Grid" + frontend_repo_url: str = "" + frontend_repo: str = "" + netdaemon_path: str = "netdaemon/apps/" + netdaemon: bool = False + onboarding_done: bool = False + plugin_path: str = "www/community/" + python_script_path: str = "python_scripts/" + python_script: bool = False + release_limit: int = 5 + sidepanel_icon: str = "hacs:hacs" + sidepanel_title: str = "HACS" + theme_path: str = "themes/" + theme: bool = False + token: str = None + + def to_json(self) -> str: + """Return a json string.""" + return asdict(self) + + def update_from_dict(self, data: dict) -> None: + """Set attributes from dicts.""" + if not isinstance(data, dict): + raise HacsException("Configuration is not valid.") + + for key in data: + self.__setattr__(key, data[key]) + + +@dataclass +class HacsFrontend: + """HacsFrontend.""" + + version_running: str | None = None + version_available: str | None = None + version_expected: str | None = None + update_pending: bool = False + + +@dataclass +class HacsCore: + """HACS Core info.""" + + config_path: pathlib.Path | None = None + ha_version: str | None = None + lovelace_mode = LovelaceMode("yaml") + + +@dataclass +class HacsCommon: + """Common for HACS.""" + + categories: set[str] = field(default_factory=set) + default: list[str] = field(default_factory=list) + installed: list[str] = field(default_factory=list) + renamed_repositories: dict[str, str] = field(default_factory=dict) + archived_repositories: list[str] = field(default_factory=list) + skip: list[str] = field(default_factory=list) + + +@dataclass +class HacsStatus: + """HacsStatus.""" + + startup: bool = True + new: bool = False + background_task: bool = False + reloading_data: bool = False + upgrading_all: bool = False + + +@dataclass +class HacsSystem: + """HACS System info.""" + + disabled_reason: HacsDisabledReason | None = None + running: bool = False + stage = HacsStage.SETUP + action: bool = False + + @property + def disabled(self) -> bool: + """Return if HACS is disabled.""" + return self.disabled_reason is not None + + +class HacsBase: + """Base HACS class.""" + + _repositories = [] + _repositories_by_full_name = {} + _repositories_by_id = {} + + common = HacsCommon() + configuration = HacsConfiguration() + core = HacsCore() + data: HacsData | None = None + factory: HacsTaskFactory | None = None + frontend = HacsFrontend() + github: GitHub | None = None + githubapi: GitHubAPI | None = None + hass: HomeAssistant | None = None + integration: Integration | None = None + log: logging.Logger = getLogger() + queue: QueueManager | None = None + recuring_tasks = [] + repositories: list[HacsRepository] = [] + repository: AIOGitHubAPIRepository | None = None + session: ClientSession | None = None + stage: HacsStage | None = None + status = HacsStatus() + system = HacsSystem() + tasks: HacsTaskManager | None = None + version: str | None = None + + @property + def integration_dir(self) -> pathlib.Path: + """Return the HACS integration dir.""" + return self.integration.file_path + + async def async_set_stage(self, stage: HacsStage | None) -> None: + """Set HACS stage.""" + if stage and self.stage == stage: + return + + self.stage = stage + if stage is not None: + self.log.info("Stage changed: %s", self.stage) + self.hass.bus.async_fire("hacs/stage", {"stage": self.stage}) + await self.tasks.async_execute_runtume_tasks() + + def disable_hacs(self, reason: HacsDisabledReason) -> None: + """Disable HACS.""" + self.system.disabled_reason = reason + if reason != HacsDisabledReason.REMOVED: + self.log.error("HACS is disabled - %s", reason) + + def enable_hacs(self) -> None: + """Enable HACS.""" + self.system.disabled_reason = None + self.log.info("HACS is enabled") + + def enable_hacs_category(self, category: HacsCategory): + """Enable HACS category.""" + if category not in self.common.categories: + self.log.info("Enable category: %s", category) + self.common.categories.add(category) + + def disable_hacs_category(self, category: HacsCategory): + """Disable HACS category.""" + if category in self.common.categories: + self.log.info("Disabling category: %s", category) + self.common.categories.pop(category) + + async def async_can_update(self) -> int: + """Helper to calculate the number of repositories we can fetch data for.""" + try: + response = await self.githubapi.rate_limit() + if ((limit := response.data.resources.core.remaining or 0) - 1000) >= 15: + return math.floor((limit - 1000) / 15) + self.log.error( + "GitHub API ratelimited - %s remaining", response.data.resources.core.remaining + ) + self.disable_hacs(HacsDisabledReason.RATE_LIMIT) + except GitHubAuthenticationException as exception: + self.log.error("GitHub authentication failed - %s", exception) + self.disable_hacs(HacsDisabledReason.INVALID_TOKEN) + except GitHubRatelimitException as exception: + self.log.error("GitHub API ratelimited - %s", exception) + self.disable_hacs(HacsDisabledReason.RATE_LIMIT) + except BaseException as exception: # pylint: disable=broad-except + self.log.exception(exception) + + return 0 + + async def async_github_get_hacs_default_file(self, filename: str) -> dict[str, Any]: + """Get the content of a default file.""" + response = await self.githubapi.repos.contents.get( + repository=REPOSITORY_HACS_DEFAULT, path=filename + ) + return json.loads(decode_content(response.data.content)) diff --git a/custom_components/hacs/config_flow.py b/custom_components/hacs/config_flow.py new file mode 100644 index 0000000..d493077 --- /dev/null +++ b/custom_components/hacs/config_flow.py @@ -0,0 +1,157 @@ +"""Adds config flow for HACS.""" +from aiogithubapi import GitHubDeviceAPI, GitHubException +from aiogithubapi.common.const import OAUTH_USER_LOGIN +from awesomeversion import AwesomeVersion +from homeassistant import config_entries +from homeassistant.const import __version__ as HAVERSION +from homeassistant.core import callback +from homeassistant.helpers import aiohttp_client +from homeassistant.helpers.event import async_call_later +from homeassistant.loader import async_get_integration +import voluptuous as vol + +from custom_components.hacs.const import CLIENT_ID, DOMAIN, MINIMUM_HA_VERSION +from custom_components.hacs.enums import ConfigurationType +from custom_components.hacs.helpers.functions.configuration_schema import ( + RELEASE_LIMIT, + hacs_config_option_schema, +) +from custom_components.hacs.mixin import HacsMixin + + +class HacsFlowHandler(HacsMixin, config_entries.ConfigFlow, domain=DOMAIN): + """Config flow for HACS.""" + + VERSION = 1 + CONNECTION_CLASS = config_entries.CONN_CLASS_CLOUD_POLL + + def __init__(self): + """Initialize.""" + self._errors = {} + self.device = None + self.activation = None + self._progress_task = None + self._login_device = None + + async def async_step_user(self, user_input): + """Handle a flow initialized by the user.""" + self._errors = {} + if self._async_current_entries(): + return self.async_abort(reason="single_instance_allowed") + if self.hass.data.get(DOMAIN): + return self.async_abort(reason="single_instance_allowed") + + if user_input: + if [x for x in user_input if not user_input[x]]: + self._errors["base"] = "acc" + return await self._show_config_form(user_input) + + return await self.async_step_device(user_input) + + ## Initial form + return await self._show_config_form(user_input) + + async def async_step_device(self, _user_input): + """Handle device steps""" + + async def _wait_for_activation(_=None): + if self._login_device is None or self._login_device.expires_in is None: + async_call_later(self.hass, 1, _wait_for_activation) + return + + response = await self.device.activation(device_code=self._login_device.device_code) + self.activation = response.data + self.hass.async_create_task( + self.hass.config_entries.flow.async_configure(flow_id=self.flow_id) + ) + + if not self.activation: + integration = await async_get_integration(self.hass, DOMAIN) + if not self.device: + self.device = GitHubDeviceAPI( + client_id=CLIENT_ID, + session=aiohttp_client.async_get_clientsession(self.hass), + **{"client_name": f"HACS/{integration.version}"}, + ) + async_call_later(self.hass, 1, _wait_for_activation) + try: + response = await self.device.register() + self._login_device = response.data + return self.async_show_progress( + step_id="device", + progress_action="wait_for_device", + description_placeholders={ + "url": OAUTH_USER_LOGIN, + "code": self._login_device.user_code, + }, + ) + except GitHubException as exception: + self.hacs.log.error(exception) + return self.async_abort(reason="github") + + return self.async_show_progress_done(next_step_id="device_done") + + async def _show_config_form(self, user_input): + """Show the configuration form to edit location data.""" + if not user_input: + user_input = {} + if AwesomeVersion(HAVERSION) < MINIMUM_HA_VERSION: + return self.async_abort( + reason="min_ha_version", + description_placeholders={"version": MINIMUM_HA_VERSION}, + ) + return self.async_show_form( + step_id="user", + data_schema=vol.Schema( + { + vol.Required("acc_logs", default=user_input.get("acc_logs", False)): bool, + vol.Required("acc_addons", default=user_input.get("acc_addons", False)): bool, + vol.Required( + "acc_untested", default=user_input.get("acc_untested", False) + ): bool, + vol.Required("acc_disable", default=user_input.get("acc_disable", False)): bool, + } + ), + errors=self._errors, + ) + + async def async_step_device_done(self, _user_input): + """Handle device steps""" + return self.async_create_entry(title="", data={"token": self.activation.access_token}) + + @staticmethod + @callback + def async_get_options_flow(config_entry): + return HacsOptionsFlowHandler(config_entry) + + +class HacsOptionsFlowHandler(HacsMixin, config_entries.OptionsFlow): + """HACS config flow options handler.""" + + def __init__(self, config_entry): + """Initialize HACS options flow.""" + self.config_entry = config_entry + + async def async_step_init(self, _user_input=None): + """Manage the options.""" + return await self.async_step_user() + + async def async_step_user(self, user_input=None): + """Handle a flow initialized by the user.""" + if user_input is not None: + limit = int(user_input.get(RELEASE_LIMIT, 5)) + if limit <= 0 or limit > 100: + return self.async_abort(reason="release_limit_value") + return self.async_create_entry(title="", data=user_input) + + if self.hacs.configuration is None: + return self.async_abort(reason="not_setup") + + if self.hacs.configuration.config_type == ConfigurationType.YAML: + schema = {vol.Optional("not_in_use", default=""): str} + else: + schema = hacs_config_option_schema(self.config_entry.options) + del schema["frontend_repo"] + del schema["frontend_repo_url"] + + return self.async_show_form(step_id="user", data_schema=vol.Schema(schema)) diff --git a/custom_components/hacs/const.py b/custom_components/hacs/const.py new file mode 100644 index 0000000..5befade --- /dev/null +++ b/custom_components/hacs/const.py @@ -0,0 +1,302 @@ +"""Constants for HACS""" +from aiogithubapi.common.const import ACCEPT_HEADERS + +NAME_LONG = "HACS (Home Assistant Community Store)" +NAME_SHORT = "HACS" +DOMAIN = "hacs" +CLIENT_ID = "395a8e669c5de9f7c6e8" +MINIMUM_HA_VERSION = "2021.2.0" +PROJECT_URL = "https://github.com/hacs/integration/" + + +ISSUE_URL = f"{PROJECT_URL}issues" +DOMAIN_DATA = f"{NAME_SHORT.lower()}_data" + +PACKAGE_NAME = "custom_components.hacs" + +REPOSITORY_HACS_DEFAULT = "hacs/default" +REPOSITORY_HACS_INTEGRATION = "hacs/integration" + +PLATFORMS = ["sensor"] + +HACS_ACTION_GITHUB_API_HEADERS = { + "User-Agent": "HACS/action", + "Accept": ACCEPT_HEADERS["preview"], +} + +IFRAME = { + "title": "HACS", + "icon": "hacs:hacs", + "url": "/community_overview", + "path": "community", + "require_admin": True, +} + +VERSION_STORAGE = "6" +STORENAME = "hacs" + +# Messages +NO_ELEMENTS = "No elements to show, open the store to install some awesome stuff." + +STARTUP = """ +------------------------------------------------------------------- +HACS (Home Assistant Community Store) + +Version: {version} +This is a custom integration +If you have any issues with this you need to open an issue here: +https://github.com/hacs/integration/issues +------------------------------------------------------------------- +""" + +LOCALE = [ + "ALL", + "AF", + "AL", + "DZ", + "AS", + "AD", + "AO", + "AI", + "AQ", + "AG", + "AR", + "AM", + "AW", + "AU", + "AT", + "AZ", + "BS", + "BH", + "BD", + "BB", + "BY", + "BE", + "BZ", + "BJ", + "BM", + "BT", + "BO", + "BQ", + "BA", + "BW", + "BV", + "BR", + "IO", + "BN", + "BG", + "BF", + "BI", + "KH", + "CM", + "CA", + "CV", + "KY", + "CF", + "TD", + "CL", + "CN", + "CX", + "CC", + "CO", + "KM", + "CG", + "CD", + "CK", + "CR", + "HR", + "CU", + "CW", + "CY", + "CZ", + "CI", + "DK", + "DJ", + "DM", + "DO", + "EC", + "EG", + "SV", + "GQ", + "ER", + "EE", + "ET", + "FK", + "FO", + "FJ", + "FI", + "FR", + "GF", + "PF", + "TF", + "GA", + "GM", + "GE", + "DE", + "GH", + "GI", + "GR", + "GL", + "GD", + "GP", + "GU", + "GT", + "GG", + "GN", + "GW", + "GY", + "HT", + "HM", + "VA", + "HN", + "HK", + "HU", + "IS", + "IN", + "ID", + "IR", + "IQ", + "IE", + "IM", + "IL", + "IT", + "JM", + "JP", + "JE", + "JO", + "KZ", + "KE", + "KI", + "KP", + "KR", + "KW", + "KG", + "LA", + "LV", + "LB", + "LS", + "LR", + "LY", + "LI", + "LT", + "LU", + "MO", + "MK", + "MG", + "MW", + "MY", + "MV", + "ML", + "MT", + "MH", + "MQ", + "MR", + "MU", + "YT", + "MX", + "FM", + "MD", + "MC", + "MN", + "ME", + "MS", + "MA", + "MZ", + "MM", + "NA", + "NR", + "NP", + "NL", + "NC", + "NZ", + "NI", + "NE", + "NG", + "NU", + "NF", + "MP", + "NO", + "OM", + "PK", + "PW", + "PS", + "PA", + "PG", + "PY", + "PE", + "PH", + "PN", + "PL", + "PT", + "PR", + "QA", + "RO", + "RU", + "RW", + "RE", + "BL", + "SH", + "KN", + "LC", + "MF", + "PM", + "VC", + "WS", + "SM", + "ST", + "SA", + "SN", + "RS", + "SC", + "SL", + "SG", + "SX", + "SK", + "SI", + "SB", + "SO", + "ZA", + "GS", + "SS", + "ES", + "LK", + "SD", + "SR", + "SJ", + "SZ", + "SE", + "CH", + "SY", + "TW", + "TJ", + "TZ", + "TH", + "TL", + "TG", + "TK", + "TO", + "TT", + "TN", + "TR", + "TM", + "TC", + "TV", + "UG", + "UA", + "AE", + "GB", + "US", + "UM", + "UY", + "UZ", + "VU", + "VE", + "VN", + "VG", + "VI", + "WF", + "EH", + "YE", + "ZM", + "ZW", +] diff --git a/custom_components/hacs/enums.py b/custom_components/hacs/enums.py new file mode 100644 index 0000000..268cf5e --- /dev/null +++ b/custom_components/hacs/enums.py @@ -0,0 +1,57 @@ +"""Helper constants.""" +# pylint: disable=missing-class-docstring +from enum import Enum + + +class HacsCategory(str, Enum): + APPDAEMON = "appdaemon" + INTEGRATION = "integration" + LOVELACE = "lovelace" + PLUGIN = "plugin" # Kept for legacy purposes + NETDAEMON = "netdaemon" + PYTHON_SCRIPT = "python_script" + THEME = "theme" + REMOVED = "removed" + + def __str__(self): + return str(self.value) + + +class ConfigurationType(str, Enum): + YAML = "yaml" + CONFIG_ENTRY = "config_entry" + + +class LovelaceMode(str, Enum): + """Lovelace Modes.""" + + STORAGE = "storage" + AUTO = "auto" + AUTO_GEN = "auto-gen" + YAML = "yaml" + + +class HacsStage(str, Enum): + SETUP = "setup" + STARTUP = "startup" + WAITING = "waiting" + RUNNING = "running" + BACKGROUND = "background" + + +class HacsSetupTask(str, Enum): + WEBSOCKET = "WebSocket API" + FRONTEND = "Frontend" + SENSOR = "Sensor" + HACS_REPO = "Hacs Repository" + CATEGORIES = "Additional categories" + CLEAR_STORAGE = "Clear storage" + + +class HacsDisabledReason(str, Enum): + RATE_LIMIT = "rate_limit" + REMOVED = "removed" + INVALID_TOKEN = "invalid_token" + CONSTRAINS = "constrains" + LOAD_HACS = "load_hacs" + RESTORE = "restore" diff --git a/custom_components/hacs/exceptions.py b/custom_components/hacs/exceptions.py new file mode 100644 index 0000000..f867d3e --- /dev/null +++ b/custom_components/hacs/exceptions.py @@ -0,0 +1,21 @@ +"""Custom Exceptions for HACS.""" + + +class HacsException(Exception): + """Super basic.""" + + +class HacsRepositoryArchivedException(HacsException): + """For repositories that are archived.""" + + +class HacsNotModifiedException(HacsException): + """For responses that are not modified.""" + + +class HacsExpectedException(HacsException): + """For stuff that are expected.""" + + +class HacsRepositoryExistException(HacsException): + """For repositories that are already exist.""" diff --git a/custom_components/hacs/hacsbase/__init__.py b/custom_components/hacs/hacsbase/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/custom_components/hacs/hacsbase/data.py b/custom_components/hacs/hacsbase/data.py new file mode 100644 index 0000000..f8cb4b5 --- /dev/null +++ b/custom_components/hacs/hacsbase/data.py @@ -0,0 +1,208 @@ +"""Data handler for HACS.""" +import asyncio +import os + +from homeassistant.core import callback + +from custom_components.hacs.helpers.classes.manifest import HacsManifest +from custom_components.hacs.helpers.functions.register_repository import ( + register_repository, +) +from custom_components.hacs.helpers.functions.store import ( + async_load_from_store, + async_save_to_store, + async_save_to_store_default_encoder, + get_store_for_key, +) +from custom_components.hacs.share import get_hacs +from custom_components.hacs.utils.logger import getLogger + + +def update_repository_from_storage(repository, storage_data): + """Merge in data from storage into the repo data.""" + repository.data.memorize_storage(storage_data) + repository.data.update_data(storage_data) + if repository.data.installed: + return + + repository.logger.debug("%s Should be installed but is not... Fixing that!", repository) + repository.data.installed = True + + +class HacsData: + """HacsData class.""" + + def __init__(self): + """Initialize.""" + self.logger = getLogger() + self.hacs = get_hacs() + self.content = {} + + async def async_write(self): + """Write content to the store files.""" + if self.hacs.status.background_task or self.hacs.system.disabled: + return + + self.logger.debug("Saving data") + + # Hacs + await async_save_to_store( + self.hacs.hass, + "hacs", + { + "view": self.hacs.configuration.frontend_mode, + "compact": self.hacs.configuration.frontend_compact, + "onboarding_done": self.hacs.configuration.onboarding_done, + "archived_repositories": self.hacs.common.archived_repositories, + "renamed_repositories": self.hacs.common.renamed_repositories, + }, + ) + await self._async_store_content_and_repos() + for event in ("hacs/repository", "hacs/config"): + self.hacs.hass.bus.async_fire(event, {}) + + async def _async_store_content_and_repos(self): # bb: ignore + """Store the main repos file and each repo that is out of date.""" + # Repositories + self.content = {} + # Not run concurrently since this is bound by disk I/O + for repository in self.hacs.repositories: + await self.async_store_repository_data(repository) + + await async_save_to_store(self.hacs.hass, "repositories", self.content) + + async def async_store_repository_data(self, repository): + repository_manifest = repository.repository_manifest.manifest + data = { + "authors": repository.data.authors, + "category": repository.data.category, + "description": repository.data.description, + "domain": repository.data.domain, + "downloads": repository.data.downloads, + "etag_repository": repository.data.etag_repository, + "full_name": repository.data.full_name, + "first_install": repository.status.first_install, + "installed_commit": repository.data.installed_commit, + "installed": repository.data.installed, + "last_commit": repository.data.last_commit, + "last_release_tag": repository.data.last_version, + "last_updated": repository.data.last_updated, + "name": repository.data.name, + "new": repository.data.new, + "repository_manifest": repository_manifest, + "selected_tag": repository.data.selected_tag, + "show_beta": repository.data.show_beta, + "stars": repository.data.stargazers_count, + "topics": repository.data.topics, + "version_installed": repository.data.installed_version, + } + self.content[str(repository.data.id)] = data + + if ( + repository.data.installed + and (repository.data.installed_commit or repository.data.installed_version) + and (export := repository.data.export_data()) + ): + # export_data will return `None` if the memorized + # data is already up to date which allows us to avoid + # writing data that is already up to date or generating + # executor jobs to check the data on disk to see + # if a write is needed. + await async_save_to_store_default_encoder( + self.hacs.hass, + f"hacs/{repository.data.id}.hacs", + export, + ) + repository.data.memorize_storage(export) + + async def restore(self): + """Restore saved data.""" + hacs = await async_load_from_store(self.hacs.hass, "hacs") + repositories = await async_load_from_store(self.hacs.hass, "repositories") or {} + + if not hacs and not repositories: + # Assume new install + self.hacs.status.new = True + return True + self.logger.info("Restore started") + self.hacs.status.new = False + + # Hacs + self.hacs.configuration.frontend_mode = hacs.get("view", "Grid") + self.hacs.configuration.frontend_compact = hacs.get("compact", False) + self.hacs.configuration.onboarding_done = hacs.get("onboarding_done", False) + self.hacs.common.archived_repositories = hacs.get("archived_repositories", []) + self.hacs.common.renamed_repositories = hacs.get("renamed_repositories", {}) + + # Repositories + hass = self.hacs.hass + stores = {} + + try: + await self.register_unknown_repositories(repositories) + + for entry, repo_data in repositories.items(): + if self.async_restore_repository(entry, repo_data): + stores[entry] = get_store_for_key(hass, f"hacs/{entry}.hacs") + + def _load_from_storage(): + for entry, store in stores.items(): + if os.path.exists(store.path) and (data := store.load()): + update_repository_from_storage(self.hacs.get_by_id(entry), data) + + await hass.async_add_executor_job(_load_from_storage) + self.logger.info("Restore done") + except (Exception, BaseException) as exception: # pylint: disable=broad-except + self.logger.critical(f"[{exception}] Restore Failed!", exc_info=exception) + return False + return True + + async def register_unknown_repositories(self, repositories): + """Registry any unknown repositories.""" + register_tasks = [ + register_repository(repo_data["full_name"], repo_data["category"], False) + for entry, repo_data in repositories.items() + if not self.hacs.is_known(entry) + ] + if register_tasks: + await asyncio.gather(*register_tasks) + + @callback + def async_restore_repository(self, entry, repository_data): + full_name = repository_data["full_name"] + if not (repository := self.hacs.get_by_name(full_name)): + self.logger.error(f"Did not find {full_name} ({entry})") + return False + # Restore repository attributes + self.hacs.async_set_repository_id(repository, entry) + repository.data.authors = repository_data.get("authors", []) + repository.data.description = repository_data.get("description") + repository.releases.last_release_object_downloads = repository_data.get("downloads") + repository.data.last_updated = repository_data.get("last_updated") + repository.data.etag_repository = repository_data.get("etag_repository") + repository.data.topics = repository_data.get("topics", []) + repository.data.domain = repository_data.get("domain", None) + repository.data.stargazers_count = repository_data.get("stars", 0) + repository.releases.last_release = repository_data.get("last_release_tag") + repository.data.hide = repository_data.get("hide", False) + repository.data.installed = repository_data.get("installed", False) + repository.data.new = repository_data.get("new", True) + repository.data.selected_tag = repository_data.get("selected_tag") + repository.data.show_beta = repository_data.get("show_beta", False) + repository.data.last_version = repository_data.get("last_release_tag") + repository.data.last_commit = repository_data.get("last_commit") + repository.data.installed_version = repository_data.get("version_installed") + repository.data.installed_commit = repository_data.get("installed_commit") + + repository.repository_manifest = HacsManifest.from_dict( + repository_data.get("repository_manifest", {}) + ) + + if repository.data.installed: + repository.status.first_install = False + + if repository_data["full_name"] == "hacs/integration": + repository.data.installed_version = self.hacs.version + repository.data.installed = True + + return True diff --git a/custom_components/hacs/hacsbase/hacs.py b/custom_components/hacs/hacsbase/hacs.py new file mode 100644 index 0000000..d477b71 --- /dev/null +++ b/custom_components/hacs/hacsbase/hacs.py @@ -0,0 +1,338 @@ +"""Initialize the HACS base.""" +from datetime import timedelta + +from aiogithubapi import GitHubException +from aiogithubapi.exceptions import GitHubNotModifiedException +from queueman import QueueManager +from queueman.exceptions import QueueManagerExecutionStillInProgress + +from custom_components.hacs.helpers import HacsHelpers +from custom_components.hacs.helpers.functions.get_list_from_default import ( + async_get_list_from_default, +) +from custom_components.hacs.helpers.functions.register_repository import ( + register_repository, +) +from custom_components.hacs.helpers.functions.store import ( + async_load_from_store, + async_save_to_store, +) +from custom_components.hacs.share import ( + get_removed, + is_removed, + list_removed_repositories, +) + +from ..base import HacsBase +from ..enums import HacsCategory, HacsStage +from ..share import get_factory, get_queue + + +class Hacs(HacsBase, HacsHelpers): + """The base class of HACS, nested throughout the project.""" + + factory = get_factory() + queue = get_queue() + + @property + def repositories(self): + """Return the full repositories list.""" + return self._repositories + + def async_set_repositories(self, repositories): + """Set the list of repositories.""" + self._repositories = [] + self._repositories_by_id = {} + self._repositories_by_full_name = {} + + for repository in repositories: + self.async_add_repository(repository) + + def async_set_repository_id(self, repository, repo_id): + """Update a repository id.""" + existing_repo_id = str(repository.data.id) + if existing_repo_id == repo_id: + return + if existing_repo_id != "0": + raise ValueError( + f"The repo id for {repository.data.full_name_lower} is already set to {existing_repo_id}" + ) + repository.data.id = repo_id + self._repositories_by_id[repo_id] = repository + + def async_add_repository(self, repository): + """Add a repository to the list.""" + if repository.data.full_name_lower in self._repositories_by_full_name: + raise ValueError(f"The repo {repository.data.full_name_lower} is already added") + self._repositories.append(repository) + repo_id = str(repository.data.id) + if repo_id != "0": + self._repositories_by_id[repo_id] = repository + self._repositories_by_full_name[repository.data.full_name_lower] = repository + + def async_remove_repository(self, repository): + """Remove a repository from the list.""" + if repository.data.full_name_lower not in self._repositories_by_full_name: + return + self._repositories.remove(repository) + repo_id = str(repository.data.id) + if repo_id in self._repositories_by_id: + del self._repositories_by_id[repo_id] + del self._repositories_by_full_name[repository.data.full_name_lower] + + def get_by_id(self, repository_id): + """Get repository by ID.""" + return self._repositories_by_id.get(str(repository_id)) + + def get_by_name(self, repository_full_name): + """Get repository by full_name.""" + if repository_full_name is None: + return None + return self._repositories_by_full_name.get(repository_full_name.lower()) + + def is_known(self, repository_id): + """Return a bool if the repository is known.""" + return str(repository_id) in self._repositories_by_id + + @property + def sorted_by_name(self): + """Return a sorted(by name) list of repository objects.""" + return sorted(self.repositories, key=lambda x: x.display_name) + + @property + def sorted_by_repository_name(self): + """Return a sorted(by repository_name) list of repository objects.""" + return sorted(self.repositories, key=lambda x: x.data.full_name) + + async def register_repository(self, full_name, category, check=True): + """Register a repository.""" + await register_repository(full_name, category, check=check) + + async def startup_tasks(self, _event=None): + """Tasks that are started after startup.""" + await self.async_set_stage(HacsStage.STARTUP) + self.status.background_task = True + self.hass.bus.async_fire("hacs/status", {}) + + await self.handle_critical_repositories_startup() + await self.async_load_default_repositories() + await self.clear_out_removed_repositories() + + self.recuring_tasks.append( + self.hass.helpers.event.async_track_time_interval( + self.recurring_tasks_installed, timedelta(hours=2) + ) + ) + + self.recuring_tasks.append( + self.hass.helpers.event.async_track_time_interval( + self.recurring_tasks_all, timedelta(hours=25) + ) + ) + self.recuring_tasks.append( + self.hass.helpers.event.async_track_time_interval( + self.prosess_queue, timedelta(minutes=10) + ) + ) + + self.hass.bus.async_fire("hacs/reload", {"force": True}) + await self.recurring_tasks_installed() + + await self.prosess_queue() + + self.status.startup = False + self.status.background_task = False + self.hass.bus.async_fire("hacs/status", {}) + await self.async_set_stage(HacsStage.RUNNING) + + async def handle_critical_repositories_startup(self): + """Handled critical repositories during startup.""" + alert = False + critical = await async_load_from_store(self.hass, "critical") + if not critical: + return + for repo in critical: + if not repo["acknowledged"]: + alert = True + if alert: + self.log.critical("URGENT!: Check the HACS panel!") + self.hass.components.persistent_notification.create( + title="URGENT!", message="**Check the HACS panel!**" + ) + + async def handle_critical_repositories(self): + """Handled critical repositories during runtime.""" + # Get critical repositories + critical_queue = QueueManager() + instored = [] + critical = [] + was_installed = False + + try: + critical = await self.async_github_get_hacs_default_file("critical") + except GitHubNotModifiedException: + return + except GitHubException: + pass + + if not critical: + self.log.debug("No critical repositories") + return + + stored_critical = await async_load_from_store(self.hass, "critical") + + for stored in stored_critical or []: + instored.append(stored["repository"]) + + stored_critical = [] + + for repository in critical: + removed_repo = get_removed(repository["repository"]) + removed_repo.removal_type = "critical" + repo = self.get_by_name(repository["repository"]) + + stored = { + "repository": repository["repository"], + "reason": repository["reason"], + "link": repository["link"], + "acknowledged": True, + } + if repository["repository"] not in instored: + if repo is not None and repo.installed: + self.log.critical( + "Removing repository %s, it is marked as critical", + repository["repository"], + ) + was_installed = True + stored["acknowledged"] = False + # Remove from HACS + critical_queue.add(repository.uninstall()) + repo.remove() + + stored_critical.append(stored) + removed_repo.update_data(stored) + + # Uninstall + await critical_queue.execute() + + # Save to FS + await async_save_to_store(self.hass, "critical", stored_critical) + + # Restart HASS + if was_installed: + self.log.critical("Resarting Home Assistant") + self.hass.async_create_task(self.hass.async_stop(100)) + + async def prosess_queue(self, _notarealarg=None): + """Recurring tasks for installed repositories.""" + if not self.queue.has_pending_tasks: + self.log.debug("Nothing in the queue") + return + if self.queue.running: + self.log.debug("Queue is already running") + return + + can_update = await self.async_can_update() + self.log.debug( + "Can update %s repositories, items in queue %s", + can_update, + self.queue.pending_tasks, + ) + if can_update != 0: + self.status.background_task = True + self.hass.bus.async_fire("hacs/status", {}) + try: + await self.queue.execute(can_update) + except QueueManagerExecutionStillInProgress: + pass + self.status.background_task = False + self.hass.bus.async_fire("hacs/status", {}) + + async def recurring_tasks_installed(self, _notarealarg=None): + """Recurring tasks for installed repositories.""" + self.log.debug("Starting recurring background task for installed repositories") + self.status.background_task = True + self.hass.bus.async_fire("hacs/status", {}) + + for repository in self.repositories: + if self.status.startup and repository.data.full_name == "hacs/integration": + continue + if repository.data.installed and repository.data.category in self.common.categories: + self.queue.add(self.factory.safe_update(repository)) + + await self.handle_critical_repositories() + self.status.background_task = False + self.hass.bus.async_fire("hacs/status", {}) + await self.data.async_write() + self.log.debug("Recurring background task for installed repositories done") + + async def recurring_tasks_all(self, _notarealarg=None): + """Recurring tasks for all repositories.""" + self.log.debug("Starting recurring background task for all repositories") + self.status.background_task = True + self.hass.bus.async_fire("hacs/status", {}) + + for repository in self.repositories: + if repository.data.category in self.common.categories: + self.queue.add(self.factory.safe_common_update(repository)) + + await self.async_load_default_repositories() + await self.clear_out_removed_repositories() + self.status.background_task = False + await self.data.async_write() + self.hass.bus.async_fire("hacs/status", {}) + self.hass.bus.async_fire("hacs/repository", {"action": "reload"}) + self.log.debug("Recurring background task for all repositories done") + + async def clear_out_removed_repositories(self): + """Clear out blaclisted repositories.""" + need_to_save = False + for removed in list_removed_repositories(): + repository = self.get_by_name(removed.repository) + if repository is not None: + if repository.data.installed and removed.removal_type != "critical": + self.log.warning( + f"You have {repository.data.full_name} installed with HACS " + + "this repository has been removed, please consider removing it. " + + f"Removal reason ({removed.removal_type})" + ) + else: + need_to_save = True + repository.remove() + + if need_to_save: + await self.data.async_write() + + async def async_load_default_repositories(self): + """Load known repositories.""" + self.log.info("Loading known repositories") + + for item in await async_get_list_from_default(HacsCategory.REMOVED): + removed = get_removed(item["repository"]) + removed.reason = item.get("reason") + removed.link = item.get("link") + removed.removal_type = item.get("removal_type") + + for category in self.common.categories or []: + self.queue.add(self.async_get_category_repositories(HacsCategory(category))) + + await self.prosess_queue() + + async def async_get_category_repositories(self, category: HacsCategory): + """Get repositories from category.""" + repositories = await async_get_list_from_default(category) + for repo in repositories: + if self.common.renamed_repositories.get(repo): + repo = self.common.renamed_repositories[repo] + if is_removed(repo): + continue + if repo in self.common.archived_repositories: + continue + repository = self.get_by_name(repo) + if repository is not None: + if str(repository.data.id) not in self.common.default: + self.common.default.append(str(repository.data.id)) + else: + continue + continue + self.queue.add(self.factory.safe_register(repo, category)) diff --git a/custom_components/hacs/helpers/__init__.py b/custom_components/hacs/helpers/__init__.py new file mode 100644 index 0000000..8c5755c --- /dev/null +++ b/custom_components/hacs/helpers/__init__.py @@ -0,0 +1,17 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from custom_components.hacs.helpers.methods import ( + HacsHelperMethods, + RepositoryHelperMethods, +) +from custom_components.hacs.helpers.properties import RepositoryHelperProperties + + +class RepositoryHelpers( + RepositoryHelperMethods, + RepositoryHelperProperties, +): + """Helper class for repositories""" + + +class HacsHelpers(HacsHelperMethods): + """Helper class for HACS""" diff --git a/custom_components/hacs/helpers/classes/__init__.py b/custom_components/hacs/helpers/classes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/custom_components/hacs/helpers/classes/manifest.py b/custom_components/hacs/helpers/classes/manifest.py new file mode 100644 index 0000000..c0e43b9 --- /dev/null +++ b/custom_components/hacs/helpers/classes/manifest.py @@ -0,0 +1,47 @@ +""" +Manifest handling of a repository. + +https://hacs.xyz/docs/publish/start#hacsjson +""" +from typing import List + +import attr + +from custom_components.hacs.exceptions import HacsException + + +@attr.s(auto_attribs=True) +class HacsManifest: + """HacsManifest class.""" + + name: str = None + content_in_root: bool = False + zip_release: bool = False + filename: str = None + manifest: dict = {} + hacs: str = None + hide_default_branch: bool = False + domains: List[str] = [] + country: List[str] = [] + homeassistant: str = None + persistent_directory: str = None + iot_class: str = None + render_readme: bool = False + + @staticmethod + def from_dict(manifest: dict): + """Set attributes from dicts.""" + if manifest is None: + raise HacsException("Missing manifest data") + + manifest_data = HacsManifest() + + manifest_data.manifest = manifest + + if country := manifest.get("country"): + if isinstance(country, str): + manifest["country"] = [country] + + for key in manifest: + setattr(manifest_data, key, manifest[key]) + return manifest_data diff --git a/custom_components/hacs/helpers/classes/removed.py b/custom_components/hacs/helpers/classes/removed.py new file mode 100644 index 0000000..fb5b9b9 --- /dev/null +++ b/custom_components/hacs/helpers/classes/removed.py @@ -0,0 +1,21 @@ +"""Object for removed repositories.""" +import attr + + +@attr.s(auto_attribs=True) +class RemovedRepository: + repository: str = None + reason: str = None + link: str = None + removal_type: str = None # archived, not_compliant, critical, dev, broken + acknowledged: bool = False + + def update_data(self, data: dict): + """Update data of the repository.""" + for key in data: + if key in self.__dict__: + setattr(self, key, data[key]) + + def to_json(self): + """Return a JSON representation of the data.""" + return attr.asdict(self) diff --git a/custom_components/hacs/helpers/classes/repository.py b/custom_components/hacs/helpers/classes/repository.py new file mode 100644 index 0000000..555cb70 --- /dev/null +++ b/custom_components/hacs/helpers/classes/repository.py @@ -0,0 +1,459 @@ +"""Repository.""" +# pylint: disable=broad-except, no-member +import json +import os +import shutil +import tempfile +import zipfile + +from aiogithubapi import AIOGitHubAPIException +from queueman import QueueManager + +from custom_components.hacs.exceptions import HacsException, HacsNotModifiedException +from custom_components.hacs.helpers import RepositoryHelpers +from custom_components.hacs.helpers.classes.manifest import HacsManifest +from custom_components.hacs.helpers.classes.repositorydata import RepositoryData +from custom_components.hacs.helpers.classes.validate import Validate +from custom_components.hacs.helpers.functions.download import async_download_file +from custom_components.hacs.helpers.functions.information import ( + get_info_md_content, + get_repository, +) +from custom_components.hacs.helpers.functions.is_safe_to_remove import is_safe_to_remove +from custom_components.hacs.helpers.functions.misc import get_repository_name +from custom_components.hacs.helpers.functions.save import async_save_file +from custom_components.hacs.helpers.functions.store import async_remove_store +from custom_components.hacs.helpers.functions.validate_repository import ( + common_update_data, + common_validate, +) +from custom_components.hacs.helpers.functions.version_to_install import ( + version_to_install, +) +from custom_components.hacs.share import get_hacs +from custom_components.hacs.utils.logger import getLogger + + +class RepositoryVersions: + """Versions.""" + + available = None + available_commit = None + installed = None + installed_commit = None + + +class RepositoryStatus: + """Repository status.""" + + hide = False + installed = False + last_updated = None + new = True + selected_tag = None + show_beta = False + track = True + updated_info = False + first_install = True + + +class RepositoryInformation: + """RepositoryInformation.""" + + additional_info = None + authors = [] + category = None + default_branch = None + description = "" + state = None + full_name = None + full_name_lower = None + file_name = None + javascript_type = None + homeassistant_version = None + last_updated = None + uid = None + stars = 0 + info = None + name = None + topics = [] + + +class RepositoryReleases: + """RepositoyReleases.""" + + last_release = None + last_release_object = None + last_release_object_downloads = None + published_tags = [] + objects = [] + releases = False + downloads = None + + +class RepositoryPath: + """RepositoryPath.""" + + local = None + remote = None + + +class RepositoryContent: + """RepositoryContent.""" + + path = None + files = [] + objects = [] + single = False + + +class HacsRepository(RepositoryHelpers): + """HacsRepository.""" + + def __init__(self): + """Set up HacsRepository.""" + self.hacs = get_hacs() + self.data = RepositoryData() + self.content = RepositoryContent() + self.content.path = RepositoryPath() + self.information = RepositoryInformation() + self.repository_object = None + self.status = RepositoryStatus() + self.state = None + self.force_branch = False + self.integration_manifest = {} + self.repository_manifest = HacsManifest.from_dict({}) + self.validate = Validate() + self.releases = RepositoryReleases() + self.versions = RepositoryVersions() + self.pending_restart = False + self.tree = [] + self.treefiles = [] + self.ref = None + self.logger = getLogger() + + def __str__(self) -> str: + """Return a string representation of the repository.""" + return f"<{self.data.category.title()} {self.data.full_name}>" + + @property + def display_name(self): + """Return display name.""" + return get_repository_name(self) + + @property + def ignored_by_country_configuration(self) -> bool: + """Return True if hidden by country.""" + if self.data.installed: + return False + configuration = self.hacs.configuration.country.lower() + manifest = [entry.lower() for entry in self.repository_manifest.country or []] + if configuration == "all": + return False + if not manifest: + return False + return configuration not in manifest + + @property + def display_status(self): + """Return display_status.""" + if self.data.new: + status = "new" + elif self.pending_restart: + status = "pending-restart" + elif self.pending_upgrade: + status = "pending-upgrade" + elif self.data.installed: + status = "installed" + else: + status = "default" + return status + + @property + def display_status_description(self): + """Return display_status_description.""" + description = { + "default": "Not installed.", + "pending-restart": "Restart pending.", + "pending-upgrade": "Upgrade pending.", + "installed": "No action required.", + "new": "This is a newly added repository.", + } + return description[self.display_status] + + @property + def display_installed_version(self): + """Return display_authors""" + if self.data.installed_version is not None: + installed = self.data.installed_version + else: + if self.data.installed_commit is not None: + installed = self.data.installed_commit + else: + installed = "" + return installed + + @property + def display_available_version(self): + """Return display_authors""" + if self.data.last_version is not None: + available = self.data.last_version + else: + if self.data.last_commit is not None: + available = self.data.last_commit + else: + available = "" + return available + + @property + def display_version_or_commit(self): + """Does the repositoriy use releases or commits?""" + if self.data.releases: + version_or_commit = "version" + else: + version_or_commit = "commit" + return version_or_commit + + @property + def main_action(self): + """Return the main action.""" + actions = { + "new": "INSTALL", + "default": "INSTALL", + "installed": "REINSTALL", + "pending-restart": "REINSTALL", + "pending-upgrade": "UPGRADE", + } + return actions[self.display_status] + + async def common_validate(self, ignore_issues=False): + """Common validation steps of the repository.""" + await common_validate(self, ignore_issues) + + async def common_registration(self): + """Common registration steps of the repository.""" + # Attach repository + if self.repository_object is None: + try: + self.repository_object, etag = await get_repository( + self.hacs.session, + self.hacs.configuration.token, + self.data.full_name, + None if self.data.installed else self.data.etag_repository, + ) + self.data.update_data(self.repository_object.attributes) + self.data.etag_repository = etag + except HacsNotModifiedException: + self.logger.debug( + "Did not update %s, content was not modified", self.data.full_name + ) + return + + # Set topics + self.data.topics = self.data.topics + + # Set stargazers_count + self.data.stargazers_count = self.data.stargazers_count + + # Set description + self.data.description = self.data.description + + if self.hacs.system.action: + if self.data.description is None or len(self.data.description) == 0: + raise HacsException("::error:: Missing repository description") + + async def common_update(self, ignore_issues=False, force=False): + """Common information update steps of the repository.""" + self.logger.debug("%s Getting repository information", self) + + # Attach repository + current_etag = self.data.etag_repository + await common_update_data(self, ignore_issues, force) + if not self.data.installed and (current_etag == self.data.etag_repository) and not force: + self.logger.debug("Did not update %s, content was not modified", self.data.full_name) + return False + + # Update last updated + self.data.last_updated = self.repository_object.attributes.get("pushed_at", 0) + + # Update last available commit + await self.repository_object.set_last_commit() + self.data.last_commit = self.repository_object.last_commit + + # Get the content of hacs.json + await self.get_repository_manifest_content() + + # Update "info.md" + self.information.additional_info = await get_info_md_content(self) + + return True + + async def download_zip_files(self, validate): + """Download ZIP archive from repository release.""" + download_queue = QueueManager() + try: + contents = False + + for release in self.releases.objects: + self.logger.info("%s ref: %s --- tag: %s.", self, self.ref, release.tag_name) + if release.tag_name == self.ref.split("/")[1]: + contents = release.assets + + if not contents: + return validate + + for content in contents or []: + download_queue.add(self.async_download_zip_file(content, validate)) + + await download_queue.execute() + except (Exception, BaseException): + validate.errors.append("Download was not completed") + + return validate + + async def async_download_zip_file(self, content, validate): + """Download ZIP archive from repository release.""" + try: + filecontent = await async_download_file(content.download_url) + + if filecontent is None: + validate.errors.append(f"[{content.name}] was not downloaded") + return + + temp_dir = await self.hacs.hass.async_add_executor_job(tempfile.mkdtemp) + temp_file = f"{temp_dir}/{self.data.filename}" + + result = await async_save_file(temp_file, filecontent) + with zipfile.ZipFile(temp_file, "r") as zip_file: + zip_file.extractall(self.content.path.local) + + def cleanup_temp_dir(): + """Cleanup temp_dir.""" + if os.path.exists(temp_dir): + self.logger.debug("Cleaning up %s", temp_dir) + shutil.rmtree(temp_dir) + + if result: + self.logger.info("%s Download of %s completed", self, content.name) + await self.hacs.hass.async_add_executor_job(cleanup_temp_dir) + return + + validate.errors.append(f"[{content.name}] was not downloaded") + except (Exception, BaseException): + validate.errors.append("Download was not completed") + + return validate + + async def download_content(self, validate, _directory_path, _local_directory, _ref): + """Download the content of a directory.""" + from custom_components.hacs.helpers.functions.download import download_content + + validate = await download_content(self) + return validate + + async def get_repository_manifest_content(self): + """Get the content of the hacs.json file.""" + if not "hacs.json" in [x.filename for x in self.tree]: + if self.hacs.system.action: + raise HacsException("::error:: No hacs.json file in the root of the repository.") + return + if self.hacs.system.action: + self.logger.info("%s Found hacs.json", self) + + self.ref = version_to_install(self) + + try: + manifest = await self.repository_object.get_contents("hacs.json", self.ref) + self.repository_manifest = HacsManifest.from_dict(json.loads(manifest.content)) + self.data.update_data(json.loads(manifest.content)) + except (AIOGitHubAPIException, Exception) as exception: # Gotta Catch 'Em All + if self.hacs.system.action: + raise HacsException( + f"::error:: hacs.json file is not valid ({exception})." + ) from None + if self.hacs.system.action: + self.logger.info("%s hacs.json is valid", self) + + def remove(self): + """Run remove tasks.""" + self.logger.info("%s Starting removal", self) + + if self.data.id in self.hacs.common.installed: + self.hacs.common.installed.remove(self.data.id) + for repository in self.hacs.repositories: + if repository.data.id == self.data.id: + self.hacs.async_remove_repository(repository) + + async def uninstall(self): + """Run uninstall tasks.""" + self.logger.info("%s Uninstalling", self) + if not await self.remove_local_directory(): + raise HacsException("Could not uninstall") + self.data.installed = False + if self.data.category == "integration": + if self.data.config_flow: + await self.reload_custom_components() + else: + self.pending_restart = True + elif self.data.category == "theme": + try: + await self.hacs.hass.services.async_call("frontend", "reload_themes", {}) + except (Exception, BaseException): # pylint: disable=broad-except + pass + if self.data.full_name in self.hacs.common.installed: + self.hacs.common.installed.remove(self.data.full_name) + + await async_remove_store(self.hacs.hass, f"hacs/{self.data.id}.hacs") + + self.data.installed_version = None + self.data.installed_commit = None + self.hacs.hass.bus.async_fire( + "hacs/repository", + {"id": 1337, "action": "uninstall", "repository": self.data.full_name}, + ) + + async def remove_local_directory(self): + """Check the local directory.""" + from asyncio import sleep + + try: + if self.data.category == "python_script": + local_path = f"{self.content.path.local}/{self.data.name}.py" + elif self.data.category == "theme": + if os.path.exists( + f"{self.hacs.core.config_path}/{self.hacs.configuration.theme_path}/{self.data.name}.yaml" + ): + os.remove( + f"{self.hacs.core.config_path}/{self.hacs.configuration.theme_path}/{self.data.name}.yaml" + ) + local_path = self.content.path.local + elif self.data.category == "integration": + if not self.data.domain: + self.logger.error("%s Missing domain", self) + return False + local_path = self.content.path.local + else: + local_path = self.content.path.local + + if os.path.exists(local_path): + if not is_safe_to_remove(local_path): + self.logger.error("%s Path %s is blocked from removal", self, local_path) + return False + self.logger.debug("%s Removing %s", self, local_path) + + if self.data.category in ["python_script"]: + os.remove(local_path) + else: + shutil.rmtree(local_path) + + while os.path.exists(local_path): + await sleep(1) + else: + self.logger.debug( + "%s Presumed local content path %s does not exist", self, local_path + ) + + except (Exception, BaseException) as exception: + self.logger.debug("%s Removing %s failed with %s", self, local_path, exception) + return False + return True diff --git a/custom_components/hacs/helpers/classes/repositorydata.py b/custom_components/hacs/helpers/classes/repositorydata.py new file mode 100644 index 0000000..6011346 --- /dev/null +++ b/custom_components/hacs/helpers/classes/repositorydata.py @@ -0,0 +1,146 @@ +"""Repository data.""" +from datetime import datetime +import json +from typing import List, Optional + +import attr +from homeassistant.helpers.json import JSONEncoder + + +@attr.s(auto_attribs=True) +class RepositoryData: + """RepositoryData class.""" + + archived: bool = False + authors: List[str] = [] + category: str = "" + content_in_root: bool = False + country: List[str] = [] + config_flow: bool = False + default_branch: str = None + description: str = "" + domain: str = "" + domains: List[str] = [] + downloads: int = 0 + etag_repository: str = None + file_name: str = "" + filename: str = "" + first_install: bool = False + fork: bool = False + full_name: str = "" + hacs: str = None # Minimum HACS version + hide: bool = False + hide_default_branch: bool = False + homeassistant: str = None # Minimum Home Assistant version + id: int = 0 + iot_class: str = None + installed: bool = False + installed_commit: str = None + installed_version: str = None + open_issues: int = 0 + last_commit: str = None + last_version: str = None + last_updated: str = 0 + manifest_name: str = None + new: bool = True + persistent_directory: str = None + pushed_at: str = "" + releases: bool = False + render_readme: bool = False + published_tags: List[str] = [] + selected_tag: str = None + show_beta: bool = False + stargazers_count: int = 0 + topics: List[str] = [] + zip_release: bool = False + _storage_data: Optional[dict] = None + + @property + def stars(self): + """Return the stargazers count.""" + return self.stargazers_count or 0 + + @property + def name(self): + """Return the name.""" + if self.category in ["integration", "netdaemon"]: + return self.domain + return self.full_name.split("/")[-1] + + def to_json(self): + """Export to json.""" + return attr.asdict(self, filter=lambda attr, _: attr.name != "_storage_data") + + def memorize_storage(self, data) -> None: + """Memorize the storage data.""" + self._storage_data = data + + def export_data(self) -> Optional[dict]: + """Export to json if the data has changed. + + Returns the data to export if the data needs + to be written. + + Returns None if the data has not changed. + """ + export = json.loads(json.dumps(self.to_json(), cls=JSONEncoder)) + return None if self._storage_data == export else export + + @staticmethod + def create_from_dict(source: dict): + """Set attributes from dicts.""" + data = RepositoryData() + for key in source: + if key not in data.__dict__: + continue + if key == "pushed_at": + if source[key] == "": + continue + if "Z" in source[key]: + setattr( + data, + key, + datetime.strptime(source[key], "%Y-%m-%dT%H:%M:%SZ"), + ) + else: + setattr( + data, + key, + datetime.strptime(source[key], "%Y-%m-%dT%H:%M:%S"), + ) + elif key == "id": + setattr(data, key, str(source[key])) + elif key == "country": + if isinstance(source[key], str): + setattr(data, key, [source[key]]) + else: + setattr(data, key, source[key]) + else: + setattr(data, key, source[key]) + return data + + def update_data(self, data: dict): + """Update data of the repository.""" + for key in data: + if key not in self.__dict__: + continue + if key == "pushed_at": + if data[key] == "": + continue + if "Z" in data[key]: + setattr( + self, + key, + datetime.strptime(data[key], "%Y-%m-%dT%H:%M:%SZ"), + ) + else: + setattr(self, key, datetime.strptime(data[key], "%Y-%m-%dT%H:%M:%S")) + elif key == "id": + setattr(self, key, str(data[key])) + elif key == "country": + if isinstance(data[key], str): + setattr(self, key, [data[key]]) + else: + setattr(self, key, data[key]) + else: + setattr(self, key, data[key]) diff --git a/custom_components/hacs/helpers/classes/validate.py b/custom_components/hacs/helpers/classes/validate.py new file mode 100644 index 0000000..716da9c --- /dev/null +++ b/custom_components/hacs/helpers/classes/validate.py @@ -0,0 +1,11 @@ +class Validate: + """Validate.""" + + errors = [] + + @property + def success(self): + """Return bool if the validation was a success.""" + if self.errors: + return False + return True diff --git a/custom_components/hacs/helpers/functions/__init__.py b/custom_components/hacs/helpers/functions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/custom_components/hacs/helpers/functions/configuration_schema.py b/custom_components/hacs/helpers/functions/configuration_schema.py new file mode 100644 index 0000000..dfe632b --- /dev/null +++ b/custom_components/hacs/helpers/functions/configuration_schema.py @@ -0,0 +1,74 @@ +"""HACS Configuration Schemas.""" +# pylint: disable=dangerous-default-value +import voluptuous as vol + +from custom_components.hacs.const import LOCALE + +# Configuration: +TOKEN = "token" +SIDEPANEL_TITLE = "sidepanel_title" +SIDEPANEL_ICON = "sidepanel_icon" +FRONTEND_REPO = "frontend_repo" +FRONTEND_REPO_URL = "frontend_repo_url" +APPDAEMON = "appdaemon" +NETDAEMON = "netdaemon" + +# Options: +COUNTRY = "country" +DEBUG = "debug" +RELEASE_LIMIT = "release_limit" +EXPERIMENTAL = "experimental" + +# Config group +PATH_OR_URL = "frontend_repo_path_or_url" + + +def hacs_base_config_schema(config: dict = {}) -> dict: + """Return a shcema configuration dict for HACS.""" + if not config: + config = { + TOKEN: "xxxxxxxxxxxxxxxxxxxxxxxxxxx", + } + return { + vol.Required(TOKEN, default=config.get(TOKEN)): str, + } + + +def hacs_config_option_schema(options: dict = {}) -> dict: + """Return a shcema for HACS configuration options.""" + if not options: + options = { + APPDAEMON: False, + COUNTRY: "ALL", + DEBUG: False, + EXPERIMENTAL: False, + NETDAEMON: False, + RELEASE_LIMIT: 5, + SIDEPANEL_ICON: "hacs:hacs", + SIDEPANEL_TITLE: "HACS", + FRONTEND_REPO: "", + FRONTEND_REPO_URL: "", + } + return { + vol.Optional(SIDEPANEL_TITLE, default=options.get(SIDEPANEL_TITLE)): str, + vol.Optional(SIDEPANEL_ICON, default=options.get(SIDEPANEL_ICON)): str, + vol.Optional(RELEASE_LIMIT, default=options.get(RELEASE_LIMIT)): int, + vol.Optional(COUNTRY, default=options.get(COUNTRY)): vol.In(LOCALE), + vol.Optional(APPDAEMON, default=options.get(APPDAEMON)): bool, + vol.Optional(NETDAEMON, default=options.get(NETDAEMON)): bool, + vol.Optional(DEBUG, default=options.get(DEBUG)): bool, + vol.Optional(EXPERIMENTAL, default=options.get(EXPERIMENTAL)): bool, + vol.Exclusive(FRONTEND_REPO, PATH_OR_URL): str, + vol.Exclusive(FRONTEND_REPO_URL, PATH_OR_URL): str, + } + + +def hacs_config_combined() -> dict: + """Combine the configuration options.""" + base = hacs_base_config_schema() + options = hacs_config_option_schema() + + for option in options: + base[option] = options[option] + + return base diff --git a/custom_components/hacs/helpers/functions/download.py b/custom_components/hacs/helpers/functions/download.py new file mode 100644 index 0000000..d590106 --- /dev/null +++ b/custom_components/hacs/helpers/functions/download.py @@ -0,0 +1,234 @@ +"""Helpers to download repository content.""" +import os +import pathlib +import tempfile +import zipfile + +import async_timeout +import backoff +from queueman import QueueManager, concurrent + +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.functions.filters import ( + filter_content_return_one_of_type, +) +from custom_components.hacs.helpers.functions.save import async_save_file +from custom_components.hacs.share import get_hacs +from custom_components.hacs.utils.logger import getLogger + +_LOGGER = getLogger() + + +class FileInformation: + def __init__(self, url, path, name): + self.download_url = url + self.path = path + self.name = name + + +@backoff.on_exception(backoff.expo, Exception, max_tries=5) +async def async_download_file(url): + """Download files, and return the content.""" + hacs = get_hacs() + if url is None: + return + + if "tags/" in url: + url = url.replace("tags/", "") + + _LOGGER.debug("Downloading %s", url) + + result = None + + with async_timeout.timeout(60, loop=hacs.hass.loop): + request = await hacs.session.get(url) + + # Make sure that we got a valid result + if request.status == 200: + result = await request.read() + else: + raise HacsException(f"Got status code {request.status} when trying to download {url}") + + return result + + +def should_try_releases(repository): + """Return a boolean indicating whether to download releases or not.""" + if repository.data.zip_release: + if repository.data.filename.endswith(".zip"): + if repository.ref != repository.data.default_branch: + return True + if repository.ref == repository.data.default_branch: + return False + if repository.data.category not in ["plugin", "theme"]: + return False + if not repository.data.releases: + return False + return True + + +def gather_files_to_download(repository): + """Return a list of file objects to be downloaded.""" + files = [] + tree = repository.tree + ref = f"{repository.ref}".replace("tags/", "") + releaseobjects = repository.releases.objects + category = repository.data.category + remotelocation = repository.content.path.remote + + if should_try_releases(repository): + for release in releaseobjects or []: + if ref == release.tag_name: + for asset in release.assets or []: + files.append(asset) + if files: + return files + + if repository.content.single: + for treefile in tree: + if treefile.filename == repository.data.file_name: + files.append( + FileInformation(treefile.download_url, treefile.full_path, treefile.filename) + ) + return files + + if category == "plugin": + for treefile in tree: + if treefile.path in ["", "dist"]: + if remotelocation == "dist" and not treefile.filename.startswith("dist"): + continue + if not remotelocation: + if not treefile.filename.endswith(".js"): + continue + if treefile.path != "": + continue + if not treefile.is_directory: + files.append( + FileInformation( + treefile.download_url, treefile.full_path, treefile.filename + ) + ) + if files: + return files + + if repository.data.content_in_root: + if not repository.data.filename: + if category == "theme": + tree = filter_content_return_one_of_type(repository.tree, "", "yaml", "full_path") + + for path in tree: + if path.is_directory: + continue + if path.full_path.startswith(repository.content.path.remote): + files.append(FileInformation(path.download_url, path.full_path, path.filename)) + return files + + +async def download_zip_files(repository, validate): + """Download ZIP archive from repository release.""" + contents = [] + queue = QueueManager() + try: + for release in repository.releases.objects: + repository.logger.info(f"ref: {repository.ref} --- tag: {release.tag_name}") + if release.tag_name == repository.ref.split("/")[1]: + contents = release.assets + + if not contents: + return validate + + for content in contents or []: + queue.add(async_download_zip_file(repository, content, validate)) + + await queue.execute() + except (Exception, BaseException) as exception: # pylint: disable=broad-except + validate.errors.append(f"Download was not completed [{exception}]") + + return validate + + +async def async_download_zip_file(repository, content, validate): + """Download ZIP archive from repository release.""" + try: + filecontent = await async_download_file(content.download_url) + + if filecontent is None: + validate.errors.append(f"[{content.name}] was not downloaded.") + return + + result = await async_save_file( + f"{tempfile.gettempdir()}/{repository.data.filename}", filecontent + ) + with zipfile.ZipFile( + f"{tempfile.gettempdir()}/{repository.data.filename}", "r" + ) as zip_file: + zip_file.extractall(repository.content.path.local) + + os.remove(f"{tempfile.gettempdir()}/{repository.data.filename}") + + if result: + repository.logger.info(f"Download of {content.name} completed") + return + validate.errors.append(f"[{content.name}] was not downloaded.") + except (Exception, BaseException) as exception: # pylint: disable=broad-except + validate.errors.append(f"Download was not completed [{exception}]") + + return validate + + +async def download_content(repository): + """Download the content of a directory.""" + queue = QueueManager() + contents = gather_files_to_download(repository) + repository.logger.debug(repository.data.filename) + if not contents: + raise HacsException("No content to download") + + for content in contents: + if repository.data.content_in_root and repository.data.filename: + if content.name != repository.data.filename: + continue + queue.add(dowload_repository_content(repository, content)) + await queue.execute() + return repository.validate + + +@concurrent(10) +async def dowload_repository_content(repository, content): + """Download content.""" + try: + repository.logger.debug(f"Downloading {content.name}") + + filecontent = await async_download_file(content.download_url) + + if filecontent is None: + repository.validate.errors.append(f"[{content.name}] was not downloaded.") + return + + # Save the content of the file. + if repository.content.single or content.path is None: + local_directory = repository.content.path.local + + else: + _content_path = content.path + if not repository.data.content_in_root: + _content_path = _content_path.replace(f"{repository.content.path.remote}", "") + + local_directory = f"{repository.content.path.local}/{_content_path}" + local_directory = local_directory.split("/") + del local_directory[-1] + local_directory = "/".join(local_directory) + + # Check local directory + pathlib.Path(local_directory).mkdir(parents=True, exist_ok=True) + + local_file_path = (f"{local_directory}/{content.name}").replace("//", "/") + + result = await async_save_file(local_file_path, filecontent) + if result: + repository.logger.info(f"Download of {content.name} completed") + return + repository.validate.errors.append(f"[{content.name}] was not downloaded.") + + except (Exception, BaseException) as exception: # pylint: disable=broad-except + repository.validate.errors.append(f"Download was not completed [{exception}]") diff --git a/custom_components/hacs/helpers/functions/filters.py b/custom_components/hacs/helpers/functions/filters.py new file mode 100644 index 0000000..75055e9 --- /dev/null +++ b/custom_components/hacs/helpers/functions/filters.py @@ -0,0 +1,53 @@ +"""Filter functions.""" + + +def filter_content_return_one_of_type(content, namestartswith, filterfiltype, attr="name"): + """Only match 1 of the filter.""" + contents = [] + filetypefound = False + for filename in content: + if isinstance(filename, str): + if filename.startswith(namestartswith): + if filename.endswith(f".{filterfiltype}"): + if not filetypefound: + contents.append(filename) + filetypefound = True + continue + else: + contents.append(filename) + else: + if getattr(filename, attr).startswith(namestartswith): + if getattr(filename, attr).endswith(f".{filterfiltype}"): + if not filetypefound: + contents.append(filename) + filetypefound = True + continue + else: + contents.append(filename) + return contents + + +def find_first_of_filetype(content, filterfiltype, attr="name"): + """Find the first of the file type.""" + filename = "" + for _filename in content: + if isinstance(_filename, str): + if _filename.endswith(f".{filterfiltype}"): + filename = _filename + break + else: + if getattr(_filename, attr).endswith(f".{filterfiltype}"): + filename = getattr(_filename, attr) + break + return filename + + +def get_first_directory_in_directory(content, dirname): + """Return the first directory in dirname or None.""" + directory = None + for path in content: + if path.full_path.startswith(dirname) and path.full_path != dirname: + if path.is_directory: + directory = path.filename + break + return directory diff --git a/custom_components/hacs/helpers/functions/get_list_from_default.py b/custom_components/hacs/helpers/functions/get_list_from_default.py new file mode 100644 index 0000000..3f9d418 --- /dev/null +++ b/custom_components/hacs/helpers/functions/get_list_from_default.py @@ -0,0 +1,37 @@ +"""Helper to get default repositories.""" +from typing import List + +from aiogithubapi import ( + GitHubAuthenticationException, + GitHubNotModifiedException, + GitHubRatelimitException, +) + +from custom_components.hacs.const import REPOSITORY_HACS_DEFAULT +from custom_components.hacs.enums import HacsCategory, HacsDisabledReason +from custom_components.hacs.share import get_hacs + + +async def async_get_list_from_default(default: HacsCategory) -> List: + """Get repositories from default list.""" + hacs = get_hacs() + repositories = [] + + try: + repositories = await hacs.async_github_get_hacs_default_file(default) + hacs.log.debug("Got %s elements for %s", len(repositories), default) + except GitHubNotModifiedException: + hacs.log.debug("Content did not change for %s/%s", REPOSITORY_HACS_DEFAULT, default) + + except GitHubRatelimitException as exception: + hacs.log.error(exception) + hacs.disable_hacs(HacsDisabledReason.RATE_LIMIT) + + except GitHubAuthenticationException as exception: + hacs.log.error(exception) + hacs.disable_hacs(HacsDisabledReason.INVALID_TOKEN) + + except BaseException as exception: # pylint: disable=broad-except + hacs.log.error(exception) + + return repositories diff --git a/custom_components/hacs/helpers/functions/information.py b/custom_components/hacs/helpers/functions/information.py new file mode 100644 index 0000000..ba0d6f9 --- /dev/null +++ b/custom_components/hacs/helpers/functions/information.py @@ -0,0 +1,230 @@ +"""Return repository information if any.""" +import json + +from aiogithubapi import AIOGitHubAPIException, AIOGitHubAPINotModifiedException, GitHub +from aiogithubapi.const import ACCEPT_HEADERS + +from custom_components.hacs.exceptions import HacsException, HacsNotModifiedException +from custom_components.hacs.helpers.functions.template import render_template +from custom_components.hacs.share import get_hacs + + +def info_file(repository): + """get info filename.""" + if repository.data.render_readme: + for filename in ["readme", "readme.md", "README", "README.md", "README.MD"]: + if filename in repository.treefiles: + return filename + return "" + for filename in ["info", "info.md", "INFO", "INFO.md", "INFO.MD"]: + if filename in repository.treefiles: + return filename + return "" + + +async def get_info_md_content(repository): + """Get the content of info.md""" + filename = info_file(repository) + if not filename: + return "" + try: + info = await repository.repository_object.get_contents(filename, repository.ref) + if info is None: + return "" + info = info.content.replace(" bool: + """Helper to check if path is safe to remove.""" + hacs = get_hacs() + return is_safe(hacs, path) diff --git a/custom_components/hacs/helpers/functions/misc.py b/custom_components/hacs/helpers/functions/misc.py new file mode 100644 index 0000000..e31977b --- /dev/null +++ b/custom_components/hacs/helpers/functions/misc.py @@ -0,0 +1,35 @@ +"""Helper functions: misc""" +import re + +from ...utils import version + +RE_REPOSITORY = re.compile( + r"(?:(?:.*github.com.)|^)([A-Za-z0-9-]+\/[\w.-]+?)(?:(?:\.git)?|(?:[^\w.-].*)?)$" +) + + +def get_repository_name(repository) -> str: + """Return the name of the repository for use in the frontend.""" + + if repository.repository_manifest.name is not None: + return repository.repository_manifest.name + + if repository.data.category == "integration": + if repository.integration_manifest: + if "name" in repository.integration_manifest: + return repository.integration_manifest["name"] + + return repository.data.full_name.split("/")[-1].replace("-", " ").replace("_", " ").title() + + +def version_left_higher_then_right(left: str, right: str) -> bool: + """Return a bool if source is newer than target, will also be true if identical.""" + return version.version_left_higher_then_right(left, right) + + +def extract_repository_from_url(url: str) -> str or None: + """Extract the owner/repo part form a URL.""" + match = re.match(RE_REPOSITORY, url) + if not match: + return None + return match.group(1).lower() diff --git a/custom_components/hacs/helpers/functions/path_exsist.py b/custom_components/hacs/helpers/functions/path_exsist.py new file mode 100644 index 0000000..5e941d6 --- /dev/null +++ b/custom_components/hacs/helpers/functions/path_exsist.py @@ -0,0 +1,13 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +import os + +from custom_components.hacs.share import get_hacs + + +def path_exsist(path) -> bool: + return os.path.exists(path) + + +async def async_path_exsist(path) -> bool: + hass = get_hacs().hass + return await hass.async_add_executor_job(path_exsist, path) diff --git a/custom_components/hacs/helpers/functions/register_repository.py b/custom_components/hacs/helpers/functions/register_repository.py new file mode 100644 index 0000000..ef5f2e6 --- /dev/null +++ b/custom_components/hacs/helpers/functions/register_repository.py @@ -0,0 +1,68 @@ +"""Register a repository.""" +from __future__ import annotations + +from typing import TYPE_CHECKING + +from aiogithubapi import AIOGitHubAPIException + +from custom_components.hacs.exceptions import ( + HacsException, + HacsExpectedException, + HacsRepositoryExistException, +) +from custom_components.hacs.share import get_hacs + +from ...repositories import RERPOSITORY_CLASSES + +if TYPE_CHECKING: + from ..classes.repository import HacsRepository + +# @concurrent(15, 5) +async def register_repository(full_name, category, check=True, ref=None): + """Register a repository.""" + hacs = get_hacs() + + if full_name in hacs.common.skip: + if full_name != "hacs/integration": + raise HacsExpectedException(f"Skipping {full_name}") + + if category not in RERPOSITORY_CLASSES: + raise HacsException(f"{category} is not a valid repository category.") + + repository: HacsRepository = RERPOSITORY_CLASSES[category](full_name) + if check: + try: + await repository.async_registration(ref) + if hacs.status.new: + repository.data.new = False + if repository.validate.errors: + hacs.common.skip.append(repository.data.full_name) + if not hacs.status.startup: + hacs.log.error("Validation for %s failed.", full_name) + if hacs.system.action: + raise HacsException(f"::error:: Validation for {full_name} failed.") + return repository.validate.errors + if hacs.system.action: + repository.logger.info("%s Validation completed", repository) + else: + repository.logger.info("%s Registration completed", repository) + except HacsRepositoryExistException: + return + except AIOGitHubAPIException as exception: + hacs.common.skip.append(repository.data.full_name) + raise HacsException(f"Validation for {full_name} failed with {exception}.") from None + + if str(repository.data.id) != "0" and (exists := hacs.get_by_id(repository.data.id)): + hacs.async_remove_repository(exists) + + else: + if hacs.hass is not None and ((check and repository.data.new) or hacs.status.new): + hacs.hass.bus.async_fire( + "hacs/repository", + { + "action": "registration", + "repository": repository.data.full_name, + "repository_id": repository.data.id, + }, + ) + hacs.async_add_repository(repository) diff --git a/custom_components/hacs/helpers/functions/save.py b/custom_components/hacs/helpers/functions/save.py new file mode 100644 index 0000000..c93a5f6 --- /dev/null +++ b/custom_components/hacs/helpers/functions/save.py @@ -0,0 +1,50 @@ +"""Download.""" +import gzip +import os +import shutil + +import aiofiles + +from custom_components.hacs.utils.logger import getLogger + +_LOGGER = getLogger() + + +async def async_save_file(location, content): + """Save files.""" + _LOGGER.debug("Saving %s", location) + mode = "w" + encoding = "utf-8" + errors = "ignore" + + if not isinstance(content, str): + mode = "wb" + encoding = None + errors = None + + try: + async with aiofiles.open(location, mode=mode, encoding=encoding, errors=errors) as outfile: + await outfile.write(content) + outfile.close() + + # Create gz for .js files + if os.path.isfile(location): + if location.endswith(".js") or location.endswith(".css"): + with open(location, "rb") as f_in: + with gzip.open(location + ".gz", "wb") as f_out: + shutil.copyfileobj(f_in, f_out) + + # Remove with 2.0 + if "themes" in location and location.endswith(".yaml"): + filename = location.split("/")[-1] + base = location.split("/themes/")[0] + combined = f"{base}/themes/{filename}" + if os.path.exists(combined): + _LOGGER.info("Removing old theme file %s", combined) + os.remove(combined) + + except (Exception, BaseException) as error: # pylint: disable=broad-except + _LOGGER.error("Could not write data to %s - %s", location, error) + return False + + return os.path.exists(location) diff --git a/custom_components/hacs/helpers/functions/store.py b/custom_components/hacs/helpers/functions/store.py new file mode 100644 index 0000000..b9e0f33 --- /dev/null +++ b/custom_components/hacs/helpers/functions/store.py @@ -0,0 +1,79 @@ +"""Storage handers.""" +# pylint: disable=import-outside-toplevel +from homeassistant.helpers.json import JSONEncoder +from homeassistant.helpers.storage import Store +from homeassistant.util import json as json_util + +from custom_components.hacs.const import VERSION_STORAGE + +from ...utils.logger import getLogger + +_LOGGER = getLogger() + + +class HACSStore(Store): + """A subclass of Store that allows multiple loads in the executor.""" + + def load(self): + """Load the data from disk if version matches.""" + data = json_util.load_json(self.path) + if data == {} or data["version"] != self.version: + return None + return data["data"] + + +def get_store_key(key): + """Return the key to use with homeassistant.helpers.storage.Storage.""" + return key if "/" in key else f"hacs.{key}" + + +def _get_store_for_key(hass, key, encoder): + """Create a Store object for the key.""" + return HACSStore(hass, VERSION_STORAGE, get_store_key(key), encoder=encoder) + + +def get_store_for_key(hass, key): + """Create a Store object for the key.""" + return _get_store_for_key(hass, key, JSONEncoder) + + +async def async_load_from_store(hass, key): + """Load the retained data from store and return de-serialized data.""" + return await get_store_for_key(hass, key).async_load() or {} + + +async def async_save_to_store_default_encoder(hass, key, data): + """Generate store json safe data to the filesystem. + + The data is expected to be encodable with the default + python json encoder. It should have already been passed through + JSONEncoder if needed. + """ + await _get_store_for_key(hass, key, None).async_save(data) + + +async def async_save_to_store(hass, key, data): + """Generate dynamic data to store and save it to the filesystem. + + The data is only written if the content on the disk has changed + by reading the existing content and comparing it. + + If the data has changed this will generate two executor jobs + + If the data has not changed this will generate one executor job + """ + current = await async_load_from_store(hass, key) + if current is None or current != data: + await get_store_for_key(hass, key).async_save(data) + return + _LOGGER.debug( + "Did not store data for '%s'. Content did not change", + get_store_key(key), + ) + + +async def async_remove_store(hass, key): + """Remove a store element that should no longer be used.""" + if "/" not in key: + return + await get_store_for_key(hass, key).async_remove() diff --git a/custom_components/hacs/helpers/functions/template.py b/custom_components/hacs/helpers/functions/template.py new file mode 100644 index 0000000..a7f16ed --- /dev/null +++ b/custom_components/hacs/helpers/functions/template.py @@ -0,0 +1,32 @@ +"""Custom template support.""" +# pylint: disable=broad-except +from jinja2 import Template + +from custom_components.hacs.utils.logger import getLogger + +_LOGGER = getLogger() + + +def render_template(content, context): + """Render templates in content.""" + # Fix None issues + if context.releases.last_release_object is not None: + prerelease = context.releases.last_release_object.prerelease + else: + prerelease = False + + # Render the template + try: + render = Template(content) + render = render.render( + installed=context.data.installed, + pending_update=context.pending_upgrade, + prerelease=prerelease, + selected_tag=context.data.selected_tag, + version_available=context.releases.last_release, + version_installed=context.display_installed_version, + ) + return render + except (Exception, BaseException) as exception: + _LOGGER.debug(exception) + return content diff --git a/custom_components/hacs/helpers/functions/validate_repository.py b/custom_components/hacs/helpers/functions/validate_repository.py new file mode 100644 index 0000000..815217c --- /dev/null +++ b/custom_components/hacs/helpers/functions/validate_repository.py @@ -0,0 +1,124 @@ +"""Helper to do common validation for repositories.""" +from __future__ import annotations + +from typing import TYPE_CHECKING + +from aiogithubapi import AIOGitHubAPIException + +from custom_components.hacs.exceptions import ( + HacsException, + HacsNotModifiedException, + HacsRepositoryArchivedException, + HacsRepositoryExistException, +) +from custom_components.hacs.helpers.functions.information import ( + get_releases, + get_repository, + get_tree, +) +from custom_components.hacs.helpers.functions.version_to_install import ( + version_to_install, +) +from custom_components.hacs.share import get_hacs, is_removed + +if TYPE_CHECKING: + from custom_components.hacs.helpers.classes.repository import HacsRepository + + +async def common_validate(repository, ignore_issues=False): + """Common validation steps of the repository.""" + repository.validate.errors = [] + + # Make sure the repository exist. + repository.logger.debug("%s Checking repository.", repository) + await common_update_data(repository, ignore_issues) + + # Step 6: Get the content of hacs.json + await repository.get_repository_manifest_content() + + +async def common_update_data(repository: HacsRepository, ignore_issues=False, force=False): + """Common update data.""" + hacs = get_hacs() + releases = [] + try: + repository_object, etag = await get_repository( + hacs.session, + hacs.configuration.token, + repository.data.full_name, + etag=None if force or repository.data.installed else repository.data.etag_repository, + ) + repository.repository_object = repository_object + if repository.data.full_name.lower() != repository_object.full_name.lower(): + hacs.common.renamed_repositories[ + repository.data.full_name + ] = repository_object.full_name + if str(repository_object.id) not in hacs.common.default: + hacs.common.default.append(str(repository_object.id)) + raise HacsRepositoryExistException + repository.data.update_data(repository_object.attributes) + repository.data.etag_repository = etag + except HacsNotModifiedException: + return + except HacsRepositoryExistException: + raise HacsRepositoryExistException from None + except (AIOGitHubAPIException, HacsException) as exception: + if not hacs.status.startup: + repository.logger.error("%s %s", repository, exception) + if not ignore_issues: + repository.validate.errors.append("Repository does not exist.") + raise HacsException(exception) from None + + # Make sure the repository is not archived. + if repository.data.archived and not ignore_issues: + repository.validate.errors.append("Repository is archived.") + hacs.common.archived_repositories.append(repository.data.full_name) + raise HacsRepositoryArchivedException("Repository is archived.") + + # Make sure the repository is not in the blacklist. + if is_removed(repository.data.full_name) and not ignore_issues: + repository.validate.errors.append("Repository is in the blacklist.") + raise HacsException("Repository is in the blacklist.") + + # Get releases. + try: + releases = await get_releases( + repository.repository_object, + repository.data.show_beta, + hacs.configuration.release_limit, + ) + if releases: + repository.data.releases = True + repository.releases.objects = [x for x in releases if not x.draft] + repository.data.published_tags = [x.tag_name for x in repository.releases.objects] + repository.data.last_version = next(iter(repository.data.published_tags)) + + except (AIOGitHubAPIException, HacsException): + repository.data.releases = False + + if not repository.force_branch: + repository.ref = version_to_install(repository) + if repository.data.releases: + for release in repository.releases.objects or []: + if release.tag_name == repository.ref: + assets = release.assets + if assets: + downloads = next(iter(assets)).attributes.get("download_count") + repository.data.downloads = downloads + + repository.logger.debug( + "%s Running checks against %s", repository, repository.ref.replace("tags/", "") + ) + + try: + repository.tree = await get_tree(repository.repository_object, repository.ref) + if not repository.tree: + raise HacsException("No files in tree") + repository.treefiles = [] + for treefile in repository.tree: + repository.treefiles.append(treefile.full_path) + except (AIOGitHubAPIException, HacsException) as exception: + if not hacs.status.startup: + repository.logger.error("%s %s", repository, exception) + if not ignore_issues: + raise HacsException(exception) from None diff --git a/custom_components/hacs/helpers/functions/version_to_install.py b/custom_components/hacs/helpers/functions/version_to_install.py new file mode 100644 index 0000000..75dd4ba --- /dev/null +++ b/custom_components/hacs/helpers/functions/version_to_install.py @@ -0,0 +1,20 @@ +"""Install helper for repositories.""" + + +def version_to_install(repository): + """Determine which version to isntall.""" + if repository.data.last_version is not None: + if repository.data.selected_tag is not None: + if repository.data.selected_tag == repository.data.last_version: + repository.data.selected_tag = None + return repository.data.last_version + return repository.data.selected_tag + return repository.data.last_version + if repository.data.selected_tag is not None: + if repository.data.selected_tag == repository.data.default_branch: + return repository.data.default_branch + if repository.data.selected_tag in repository.data.published_tags: + return repository.data.selected_tag + if repository.data.default_branch is None: + return "main" + return repository.data.default_branch diff --git a/custom_components/hacs/helpers/methods/__init__.py b/custom_components/hacs/helpers/methods/__init__.py new file mode 100644 index 0000000..26d9422 --- /dev/null +++ b/custom_components/hacs/helpers/methods/__init__.py @@ -0,0 +1,30 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from custom_components.hacs.helpers.methods.installation import ( + RepositoryMethodInstall, + RepositoryMethodPostInstall, + RepositoryMethodPreInstall, +) +from custom_components.hacs.helpers.methods.registration import ( + RepositoryMethodPostRegistration, + RepositoryMethodPreRegistration, + RepositoryMethodRegistration, +) +from custom_components.hacs.helpers.methods.reinstall_if_needed import ( + RepositoryMethodReinstallIfNeeded, +) + + +class RepositoryHelperMethods( + RepositoryMethodReinstallIfNeeded, + RepositoryMethodInstall, + RepositoryMethodPostInstall, + RepositoryMethodPreInstall, + RepositoryMethodPreRegistration, + RepositoryMethodRegistration, + RepositoryMethodPostRegistration, +): + """Collection of repository methods that are nested to all repositories.""" + + +class HacsHelperMethods: + """Helper class for HACS methods""" diff --git a/custom_components/hacs/helpers/methods/installation.py b/custom_components/hacs/helpers/methods/installation.py new file mode 100644 index 0000000..7e15217 --- /dev/null +++ b/custom_components/hacs/helpers/methods/installation.py @@ -0,0 +1,113 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from abc import ABC +import os +import tempfile + +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.functions.download import download_content +from custom_components.hacs.helpers.functions.version_to_install import ( + version_to_install, +) +from custom_components.hacs.operational.backup import Backup, BackupNetDaemon +from custom_components.hacs.share import get_hacs + + +class RepositoryMethodPreInstall(ABC): + async def async_pre_install(self) -> None: + pass + + async def _async_pre_install(self) -> None: + self.logger.info("Running pre installation steps") + await self.async_pre_install() + self.logger.info("Pre installation steps completed") + + +class RepositoryMethodInstall(ABC): + async def async_install(self) -> None: + await self._async_pre_install() + self.logger.info("Running installation steps") + await async_install_repository(self) + self.logger.info("Installation steps completed") + await self._async_post_install() + + +class RepositoryMethodPostInstall(ABC): + async def async_post_installation(self) -> None: + pass + + async def _async_post_install(self) -> None: + self.logger.info("Running post installation steps") + await self.async_post_installation() + self.data.new = False + self.hacs.hass.bus.async_fire( + "hacs/repository", + {"id": 1337, "action": "install", "repository": self.data.full_name}, + ) + self.logger.info("Post installation steps completed") + + +async def async_install_repository(repository): + """Common installation steps of the repository.""" + hacs = get_hacs() + persistent_directory = None + await repository.update_repository() + if repository.content.path.local is None: + raise HacsException("repository.content.path.local is None") + repository.validate.errors = [] + + if not repository.can_install: + raise HacsException("The version of Home Assistant is not compatible with this version") + + version = version_to_install(repository) + if version == repository.data.default_branch: + repository.ref = version + else: + repository.ref = f"tags/{version}" + + if repository.data.installed and repository.data.category == "netdaemon": + persistent_directory = await hacs.hass.async_add_executor_job(BackupNetDaemon, repository) + await hacs.hass.async_add_executor_job(persistent_directory.create) + + elif repository.data.persistent_directory: + if os.path.exists( + f"{repository.content.path.local}/{repository.data.persistent_directory}" + ): + persistent_directory = Backup( + f"{repository.content.path.local}/{repository.data.persistent_directory}", + tempfile.gettempdir() + "/hacs_persistent_directory/", + ) + await hacs.hass.async_add_executor_job(persistent_directory.create) + + if repository.data.installed and not repository.content.single: + backup = Backup(repository.content.path.local) + await hacs.hass.async_add_executor_job(backup.create) + + if repository.data.zip_release and version != repository.data.default_branch: + await repository.download_zip_files(repository.validate) + else: + await download_content(repository) + + if repository.validate.errors: + for error in repository.validate.errors: + repository.logger.error(error) + if repository.data.installed and not repository.content.single: + await hacs.hass.async_add_executor_job(backup.restore) + + if repository.data.installed and not repository.content.single: + await hacs.hass.async_add_executor_job(backup.cleanup) + + if persistent_directory is not None: + await hacs.hass.async_add_executor_job(persistent_directory.restore) + await hacs.hass.async_add_executor_job(persistent_directory.cleanup) + + if repository.validate.success: + if repository.data.full_name not in repository.hacs.common.installed: + if repository.data.full_name == "hacs/integration": + repository.hacs.common.installed.append(repository.data.full_name) + repository.data.installed = True + repository.data.installed_commit = repository.data.last_commit + + if version == repository.data.default_branch: + repository.data.installed_version = None + else: + repository.data.installed_version = version diff --git a/custom_components/hacs/helpers/methods/registration.py b/custom_components/hacs/helpers/methods/registration.py new file mode 100644 index 0000000..71eed45 --- /dev/null +++ b/custom_components/hacs/helpers/methods/registration.py @@ -0,0 +1,41 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member, attribute-defined-outside-init +from abc import ABC + +from custom_components.hacs.validate import async_run_repository_checks + + +class RepositoryMethodPreRegistration(ABC): + async def async_pre_registration(self): + pass + + +class RepositoryMethodRegistration(ABC): + async def registration(self, ref=None) -> None: + self.logger.warning("'registration' is deprecated, use 'async_registration' instead") + await self.async_registration(ref) + + async def async_registration(self, ref=None) -> None: + # Run local pre registration steps. + await self.async_pre_registration() + + if ref is not None: + self.data.selected_tag = ref + self.ref = ref + self.force_branch = True + + if not await self.validate_repository(): + return False + + # Run common registration steps. + await self.common_registration() + + # Set correct local path + self.content.path.local = self.localpath + + # Run local post registration steps. + await self.async_post_registration() + + +class RepositoryMethodPostRegistration(ABC): + async def async_post_registration(self): + await async_run_repository_checks(self) diff --git a/custom_components/hacs/helpers/methods/reinstall_if_needed.py b/custom_components/hacs/helpers/methods/reinstall_if_needed.py new file mode 100644 index 0000000..a83353b --- /dev/null +++ b/custom_components/hacs/helpers/methods/reinstall_if_needed.py @@ -0,0 +1,12 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from abc import ABC + +from custom_components.hacs.helpers.functions.path_exsist import async_path_exsist + + +class RepositoryMethodReinstallIfNeeded(ABC): + async def async_reinstall_if_needed(self) -> None: + if self.data.installed: + if not await async_path_exsist(self.content.path.local): + self.logger.error("Missing from local FS, should be reinstalled.") + # await self.async_install() diff --git a/custom_components/hacs/helpers/properties/__init__.py b/custom_components/hacs/helpers/properties/__init__.py new file mode 100644 index 0000000..4267caf --- /dev/null +++ b/custom_components/hacs/helpers/properties/__init__.py @@ -0,0 +1,16 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from custom_components.hacs.helpers.properties.can_be_installed import ( + RepositoryPropertyCanBeInstalled, +) +from custom_components.hacs.helpers.properties.custom import RepositoryPropertyCustom +from custom_components.hacs.helpers.properties.pending_update import ( + RepositoryPropertyPendingUpdate, +) + + +class RepositoryHelperProperties( + RepositoryPropertyPendingUpdate, + RepositoryPropertyCustom, + RepositoryPropertyCanBeInstalled, +): + pass diff --git a/custom_components/hacs/helpers/properties/can_be_installed.py b/custom_components/hacs/helpers/properties/can_be_installed.py new file mode 100644 index 0000000..6ec5df6 --- /dev/null +++ b/custom_components/hacs/helpers/properties/can_be_installed.py @@ -0,0 +1,21 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from abc import ABC + +from custom_components.hacs.helpers.functions.misc import version_left_higher_then_right + + +class RepositoryPropertyCanBeInstalled(ABC): + @property + def can_be_installed(self) -> bool: + if self.data.homeassistant is not None: + if self.data.releases: + if not version_left_higher_then_right( + self.hacs.core.ha_version, self.data.homeassistant + ): + return False + return True + + @property + def can_install(self): + """kept for legacy compatibility""" + return self.can_be_installed diff --git a/custom_components/hacs/helpers/properties/custom.py b/custom_components/hacs/helpers/properties/custom.py new file mode 100644 index 0000000..3cb0486 --- /dev/null +++ b/custom_components/hacs/helpers/properties/custom.py @@ -0,0 +1,13 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from abc import ABC + + +class RepositoryPropertyCustom(ABC): + @property + def custom(self): + """Return flag if the repository is custom.""" + if str(self.data.id) in self.hacs.common.default: + return False + if self.data.full_name == "hacs/integration": + return False + return True diff --git a/custom_components/hacs/helpers/properties/pending_update.py b/custom_components/hacs/helpers/properties/pending_update.py new file mode 100644 index 0000000..083930e --- /dev/null +++ b/custom_components/hacs/helpers/properties/pending_update.py @@ -0,0 +1,23 @@ +# pylint: disable=missing-class-docstring,missing-module-docstring,missing-function-docstring,no-member +from abc import ABC + + +class RepositoryPropertyPendingUpdate(ABC): + @property + def pending_update(self) -> bool: + if not self.can_install: + return False + if self.data.installed: + if self.data.selected_tag is not None: + if self.data.selected_tag == self.data.default_branch: + if self.data.installed_commit != self.data.last_commit: + return True + return False + if self.display_installed_version != self.display_available_version: + return True + return False + + @property + def pending_upgrade(self) -> bool: + """kept for legacy compatibility""" + return self.pending_update diff --git a/custom_components/hacs/iconset.js b/custom_components/hacs/iconset.js new file mode 100644 index 0000000..5540d7b --- /dev/null +++ b/custom_components/hacs/iconset.js @@ -0,0 +1,29 @@ +const hacsIcons = { + hacs: { + path: "m 20.064849,22.306912 c -0.0319,0.369835 -0.280561,0.707789 -0.656773,0.918212 -0.280572,0.153036 -0.605773,0.229553 -0.950094,0.229553 -0.0765,0 -0.146661,-0.0064 -0.216801,-0.01275 -0.605774,-0.05739 -1.135016,-0.344329 -1.402827,-0.7588 l 0.784304,-0.516495 c 0.0893,0.146659 0.344331,0.312448 0.707793,0.34433 0.235931,0.02551 0.471852,-0.01913 0.637643,-0.108401 0.101998,-0.05101 0.172171,-0.127529 0.17854,-0.191295 0.0065,-0.08289 -0.0255,-0.369835 -0.733293,-0.439975 -1.013854,-0.09565 -1.645127,-0.688661 -1.568606,-1.460214 0.0319,-0.382589 0.280561,-0.714165 0.663153,-0.930965 0.331571,-0.172165 0.752423,-0.25506 1.166895,-0.210424 0.599382,0.05739 1.128635,0.344329 1.402816,0.7588 l -0.784304,0.510118 c -0.0893,-0.140282 -0.344331,-0.299694 -0.707782,-0.331576 -0.235932,-0.02551 -0.471863,0.01913 -0.637654,0.10202 -0.0956,0.05739 -0.165791,0.133906 -0.17216,0.191295 -0.0255,0.293317 0.465482,0.420847 0.726913,0.439976 v 0.0064 c 1.020234,0.09565 1.638757,0.66953 1.562237,1.460213 z m -7.466854,-0.988354 c 0,-1.192401 0.962855,-2.155249 2.15525,-2.155249 0.599393,0 1.179645,0.25506 1.594117,0.707789 l -0.695033,0.624895 c -0.235931,-0.25506 -0.561133,-0.401718 -0.899084,-0.401718 -0.675903,0 -1.217906,0.542 -1.217906,1.217906 0,0.66953 0.542003,1.217908 1.217906,1.217908 0.337951,0 0.663153,-0.140283 0.899084,-0.401718 l 0.695033,0.631271 c -0.414472,0.452729 -0.988355,0.707788 -1.594117,0.707788 -1.192395,0 -2.15525,-0.969224 -2.15525,-2.148872 z M 8.6573365,23.461054 10.353474,19.14418 h 0.624893 l 1.568618,4.316874 H 11.52037 L 11.265308,22.734136 H 9.964513 l -0.274192,0.726918 z m 1.6833885,-1.68339 h 0.580263 L 10.646796,21.012487 Z M 8.1089536,19.156932 v 4.297745 H 7.1461095 v -1.645131 h -1.606867 v 1.645131 H 4.5763876 v -4.297745 h 0.9628549 v 1.696143 h 1.606867 V 19.156932 Z M 20.115859,4.2997436 C 20.090359,4.159461 19.969198,4.0574375 19.822548,4.0574375 H 14.141102 10.506516 4.8250686 c -0.14665,0 -0.2678112,0.1020202 -0.2933108,0.2423061 L 3.690064,8.8461703 c -0.00651,0.01913 -0.00651,0.03826 -0.00651,0.057391 v 1.5239797 c 0,0.165789 0.133911,0.299694 0.2996911,0.299694 H 4.5762579 20.0711 20.664112 c 0.165781,0 0.299691,-0.133905 0.299691,-0.299694 V 8.8971848 c 0,-0.01913 0,-0.03826 -0.0065,-0.05739 z M 4.5763876,17.358767 c 0,0.184917 0.1466608,0.331577 0.3315819,0.331577 h 5.5985465 3.634586 0.924594 c 0.184911,0 0.331571,-0.14666 0.331571,-0.331577 v -4.744098 c 0,-0.184918 0.146661,-0.331577 0.331582,-0.331577 h 2.894913 c 0.184921,0 0.331582,0.146659 0.331582,0.331577 v 4.744098 c 0,0.184917 0.146661,0.331577 0.331571,0.331577 h 0.446363 c 0.18491,0 0.331571,-0.14666 0.331571,-0.331577 v -5.636804 c 0,-0.184918 -0.146661,-0.331577 -0.331571,-0.331577 H 4.9079695 c -0.1849211,0 -0.3315819,0.146659 -0.3315819,0.331577 z m 1.6578879,-4.852498 h 5.6495565 c 0.15303,0 0.280561,0.12753 0.280561,0.280564 v 3.513438 c 0,0.153036 -0.127531,0.280566 -0.280561,0.280566 H 6.2342755 c -0.1530412,0 -0.2805719,-0.12753 -0.2805719,-0.280566 v -3.513438 c 0,-0.159411 0.1275307,-0.280564 0.2805719,-0.280564 z M 19.790657,3.3879075 H 4.8569594 c -0.1530412,0 -0.2805718,-0.1275296 -0.2805718,-0.2805642 V 1.3665653 C 4.5763876,1.2135296 4.7039182,1.086 4.8569594,1.086 H 19.790657 c 0.153041,0 0.280572,0.1275296 0.280572,0.2805653 v 1.740778 c 0,0.1530346 -0.127531,0.2805642 -0.280572,0.2805642 z", + keywords: ["hacs", "home assistant community store"], + }, +}; + +window.customIcons = window.customIcons || {}; +window.customIconsets = window.customIconsets || {}; + +// For Home Assistant > 2021.11 +window.customIcons["hacs"] = { + getIcon: async (iconName) => ( + { path: hacsIcons[iconName]?.path } + ), + getIconList: async () => + Object.entries(hacsIcons).map(([icon, content]) => ({ + name: icon, + keywords: content.keywords, + }) + ) +}; + +// For Home Assistant < 2021.11 +window.customIconsets["hacs"] = async () => { + return { + path: hacsIcons.hacs.path + }; +}; \ No newline at end of file diff --git a/custom_components/hacs/manifest.json b/custom_components/hacs/manifest.json new file mode 100644 index 0000000..c244ef9 --- /dev/null +++ b/custom_components/hacs/manifest.json @@ -0,0 +1,27 @@ +{ + "codeowners": [ + "@ludeeus" + ], + "config_flow": true, + "dependencies": [ + "http", + "websocket_api", + "frontend", + "persistent_notification", + "lovelace" + ], + "documentation": "https://hacs.xyz/docs/configuration/start", + "domain": "hacs", + "iot_class": "cloud_polling", + "issue_tracker": "https://github.com/hacs/integration/issues", + "name": "HACS", + "requirements": [ + "aiofiles>=0.6.0", + "aiogithubapi>=21.8.1", + "awesomeversion>=21.2.2", + "backoff>=1.10.0", + "hacs_frontend==20211010111104", + "queueman==0.5" + ], + "version": "1.16.0" +} \ No newline at end of file diff --git a/custom_components/hacs/mixin.py b/custom_components/hacs/mixin.py new file mode 100644 index 0000000..3283e8c --- /dev/null +++ b/custom_components/hacs/mixin.py @@ -0,0 +1,24 @@ +"""Mixin classes.""" +# pylint: disable=too-few-public-methods +from __future__ import annotations + +from logging import Logger +from typing import TYPE_CHECKING + +from .share import get_hacs +from .utils.logger import getLogger + +if TYPE_CHECKING: + from .hacsbase.hacs import Hacs + + +class HacsMixin: + """Mixin to provide 'self.hacs' to classes.""" + + hacs: Hacs = get_hacs() + + +class LogMixin: + """Mixin to provide 'self.log' to classes.""" + + log: Logger = getLogger() diff --git a/custom_components/hacs/operational/__init__.py b/custom_components/hacs/operational/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/custom_components/hacs/operational/backup.py b/custom_components/hacs/operational/backup.py new file mode 100644 index 0000000..b177020 --- /dev/null +++ b/custom_components/hacs/operational/backup.py @@ -0,0 +1,120 @@ +"""Backup.""" +import os +import shutil +import tempfile +from time import sleep + +from custom_components.hacs.helpers.functions.is_safe_to_remove import is_safe_to_remove +from custom_components.hacs.utils.logger import getLogger + +BACKUP_PATH = tempfile.gettempdir() + "/hacs_backup/" + +_LOGGER = getLogger() + + +class Backup: + """Backup.""" + + def __init__(self, local_path, backup_path=BACKUP_PATH): + """initialize.""" + self.local_path = local_path + self.backup_path = backup_path + self.backup_path_full = f"{self.backup_path}{self.local_path.split('/')[-1]}" + + def create(self): + """Create a backup in /tmp""" + if not os.path.exists(self.local_path): + return + if not is_safe_to_remove(self.local_path): + return + if os.path.exists(self.backup_path): + shutil.rmtree(self.backup_path) + while os.path.exists(self.backup_path): + sleep(0.1) + os.makedirs(self.backup_path, exist_ok=True) + + try: + if os.path.isfile(self.local_path): + shutil.copyfile(self.local_path, self.backup_path_full) + os.remove(self.local_path) + else: + shutil.copytree(self.local_path, self.backup_path_full) + shutil.rmtree(self.local_path) + while os.path.exists(self.local_path): + sleep(0.1) + _LOGGER.debug( + "Backup for %s, created in %s", + self.local_path, + self.backup_path_full, + ) + except (Exception, BaseException): # pylint: disable=broad-except + pass + + def restore(self): + """Restore from backup.""" + if not os.path.exists(self.backup_path_full): + return + + if os.path.isfile(self.backup_path_full): + if os.path.exists(self.local_path): + os.remove(self.local_path) + shutil.copyfile(self.backup_path_full, self.local_path) + else: + if os.path.exists(self.local_path): + shutil.rmtree(self.local_path) + while os.path.exists(self.local_path): + sleep(0.1) + shutil.copytree(self.backup_path_full, self.local_path) + _LOGGER.debug("Restored %s, from backup %s", self.local_path, self.backup_path_full) + + def cleanup(self): + """Cleanup backup files.""" + if os.path.exists(self.backup_path): + shutil.rmtree(self.backup_path) + while os.path.exists(self.backup_path): + sleep(0.1) + _LOGGER.debug("Backup dir %s cleared", self.backup_path) + + +class BackupNetDaemon: + """BackupNetDaemon.""" + + def __init__(self, repository): + """Initialize.""" + self.repository = repository + self.backup_path = ( + tempfile.gettempdir() + "/hacs_persistent_netdaemon/" + repository.data.name + ) + + def create(self): + """Create a backup in /tmp""" + if not is_safe_to_remove(self.repository.content.path.local): + return + if os.path.exists(self.backup_path): + shutil.rmtree(self.backup_path) + while os.path.exists(self.backup_path): + sleep(0.1) + os.makedirs(self.backup_path, exist_ok=True) + + for filename in os.listdir(self.repository.content.path.local): + if filename.endswith(".yaml"): + source_file_name = f"{self.repository.content.path.local}/{filename}" + target_file_name = f"{self.backup_path}/{filename}" + shutil.copyfile(source_file_name, target_file_name) + + def restore(self): + """Create a backup in /tmp""" + if os.path.exists(self.backup_path): + for filename in os.listdir(self.backup_path): + if filename.endswith(".yaml"): + source_file_name = f"{self.backup_path}/{filename}" + target_file_name = f"{self.repository.content.path.local}/{filename}" + shutil.copyfile(source_file_name, target_file_name) + + def cleanup(self): + """Create a backup in /tmp""" + if os.path.exists(self.backup_path): + shutil.rmtree(self.backup_path) + while os.path.exists(self.backup_path): + sleep(0.1) + _LOGGER.debug("Backup dir %s cleared", self.backup_path) diff --git a/custom_components/hacs/operational/factory.py b/custom_components/hacs/operational/factory.py new file mode 100644 index 0000000..5e045c5 --- /dev/null +++ b/custom_components/hacs/operational/factory.py @@ -0,0 +1,61 @@ +# pylint: disable=missing-docstring,invalid-name +import asyncio + +from aiogithubapi import AIOGitHubAPIException + +from custom_components.hacs.exceptions import ( + HacsException, + HacsNotModifiedException, + HacsRepositoryArchivedException, +) +from custom_components.hacs.helpers.functions.register_repository import ( + register_repository, +) +from custom_components.hacs.utils.logger import getLogger + +max_concurrent_tasks = asyncio.Semaphore(15) +sleeper = 5 + +_LOGGER = getLogger() + + +class HacsTaskFactory: + def __init__(self): + self.tasks = [] + self.running = False + + async def safe_common_update(self, repository): + async with max_concurrent_tasks: + try: + await repository.common_update() + except HacsNotModifiedException: + pass + except (AIOGitHubAPIException, HacsException) as exception: + _LOGGER.error("%s - %s", repository.data.full_name, exception) + + # Due to GitHub ratelimits we need to sleep a bit + await asyncio.sleep(sleeper) + + async def safe_update(self, repository): + async with max_concurrent_tasks: + try: + await repository.update_repository() + except HacsNotModifiedException: + pass + except HacsRepositoryArchivedException as exception: + _LOGGER.warning("%s - %s", repository.data.full_name, exception) + except (AIOGitHubAPIException, HacsException) as exception: + _LOGGER.error("%s - %s", repository.data.full_name, exception) + + # Due to GitHub ratelimits we need to sleep a bit + await asyncio.sleep(sleeper) + + async def safe_register(self, repo, category): + async with max_concurrent_tasks: + try: + await register_repository(repo, category) + except (AIOGitHubAPIException, HacsException) as exception: + _LOGGER.error("%s - %s", repo, exception) + + # Due to GitHub ratelimits we need to sleep a bit + await asyncio.sleep(sleeper) diff --git a/custom_components/hacs/operational/setup.py b/custom_components/hacs/operational/setup.py new file mode 100644 index 0000000..b82535c --- /dev/null +++ b/custom_components/hacs/operational/setup.py @@ -0,0 +1,173 @@ +"""Setup HACS.""" +from aiogithubapi import AIOGitHubAPIException, GitHub, GitHubAPI +from aiogithubapi.const import ACCEPT_HEADERS +from homeassistant.components.lovelace.system_health import system_health_info +from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry +from homeassistant.const import EVENT_HOMEASSISTANT_STARTED, __version__ as HAVERSION +from homeassistant.core import CoreState, HomeAssistant +from homeassistant.exceptions import ConfigEntryNotReady +from homeassistant.helpers.aiohttp_client import async_create_clientsession +from homeassistant.helpers.event import async_call_later +from homeassistant.loader import async_get_integration + +from custom_components.hacs.const import DOMAIN, STARTUP +from custom_components.hacs.enums import ( + ConfigurationType, + HacsStage, + LovelaceMode, +) +from custom_components.hacs.hacsbase.data import HacsData +from custom_components.hacs.share import get_hacs +from custom_components.hacs.tasks.manager import HacsTaskManager + + +async def _async_common_setup(hass: HomeAssistant): + """Common setup stages.""" + integration = await async_get_integration(hass, DOMAIN) + + hacs = get_hacs() + + hacs.enable_hacs() + await hacs.async_set_stage(None) + + hacs.log.info(STARTUP.format(version=integration.version)) + + hacs.integration = integration + hacs.version = integration.version + hacs.hass = hass + hacs.data = HacsData() + hacs.system.running = True + hacs.session = async_create_clientsession(hass) + hacs.tasks = HacsTaskManager(hacs=hacs, hass=hass) + + hacs.core.lovelace_mode = LovelaceMode.YAML + try: + lovelace_info = await system_health_info(hacs.hass) + hacs.core.lovelace_mode = LovelaceMode(lovelace_info.get("mode", "yaml")) + except Exception: # pylint: disable=broad-except + # If this happens, the users YAML is not valid, we assume YAML mode + pass + hacs.log.debug(f"Configuration type: {hacs.configuration.config_type}") + hacs.core.config_path = hacs.hass.config.path() + hacs.core.ha_version = HAVERSION + + await hacs.tasks.async_load() + + # Setup session for API clients + session = async_create_clientsession(hacs.hass) + + ## Legacy GitHub client + hacs.github = GitHub( + hacs.configuration.token, + session, + headers={ + "User-Agent": f"HACS/{hacs.version}", + "Accept": ACCEPT_HEADERS["preview"], + }, + ) + + ## New GitHub client + hacs.githubapi = GitHubAPI( + token=hacs.configuration.token, + session=session, + **{"client_name": f"HACS/{hacs.version}"}, + ) + + hass.data[DOMAIN] = hacs + + +async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: + """Set up this integration using UI.""" + hacs = get_hacs() + + if config_entry.source == SOURCE_IMPORT: + hass.async_create_task(hass.config_entries.async_remove(config_entry.entry_id)) + return False + if hass.data.get(DOMAIN) is not None: + return False + + hacs.configuration.update_from_dict( + { + "config_entry": config_entry, + "config_type": ConfigurationType.CONFIG_ENTRY, + **config_entry.data, + **config_entry.options, + } + ) + + await _async_common_setup(hass) + return await async_startup_wrapper_for_config_entry() + + +async def async_setup(hass, config): + """Set up this integration using yaml.""" + hacs = get_hacs() + if DOMAIN not in config: + return True + if hacs.configuration.config_type == ConfigurationType.CONFIG_ENTRY: + return True + + hacs.configuration.update_from_dict( + { + "config_type": ConfigurationType.YAML, + **config[DOMAIN], + "config": config[DOMAIN], + } + ) + + await _async_common_setup(hass) + await async_startup_wrapper_for_yaml() + return True + + +async def async_startup_wrapper_for_config_entry(): + """Startup wrapper for ui config.""" + hacs = get_hacs() + + try: + startup_result = await async_hacs_startup() + except AIOGitHubAPIException: + startup_result = False + if not startup_result: + raise ConfigEntryNotReady(hacs.system.disabled_reason) + hacs.enable_hacs() + return startup_result + + +async def async_startup_wrapper_for_yaml(_=None): + """Startup wrapper for yaml config.""" + hacs = get_hacs() + try: + startup_result = await async_hacs_startup() + except AIOGitHubAPIException: + startup_result = False + if not startup_result: + hacs.log.info("Could not setup HACS, trying again in 15 min") + async_call_later(hacs.hass, 900, async_startup_wrapper_for_yaml) + return + hacs.enable_hacs() + + +async def async_hacs_startup(): + """HACS startup tasks.""" + hacs = get_hacs() + + await hacs.async_set_stage(HacsStage.SETUP) + if hacs.system.disabled: + return False + + await hacs.async_set_stage(HacsStage.STARTUP) + if hacs.system.disabled: + return False + + # Setup startup tasks + if hacs.hass.state == CoreState.running: + async_call_later(hacs.hass, 5, hacs.startup_tasks) + else: + hacs.hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STARTED, hacs.startup_tasks) + + # Mischief managed! + await hacs.async_set_stage(HacsStage.WAITING) + hacs.log.info("Setup complete, waiting for Home Assistant before startup tasks starts") + + return not hacs.system.disabled diff --git a/custom_components/hacs/repositories/__init__.py b/custom_components/hacs/repositories/__init__.py new file mode 100644 index 0000000..d78def4 --- /dev/null +++ b/custom_components/hacs/repositories/__init__.py @@ -0,0 +1,16 @@ +"""Initialize repositories.""" +from custom_components.hacs.repositories.appdaemon import HacsAppdaemonRepository +from custom_components.hacs.repositories.integration import HacsIntegrationRepository +from custom_components.hacs.repositories.netdaemon import HacsNetdaemonRepository +from custom_components.hacs.repositories.plugin import HacsPluginRepository +from custom_components.hacs.repositories.python_script import HacsPythonScriptRepository +from custom_components.hacs.repositories.theme import HacsThemeRepository + +RERPOSITORY_CLASSES = { + "theme": HacsThemeRepository, + "integration": HacsIntegrationRepository, + "python_script": HacsPythonScriptRepository, + "appdaemon": HacsAppdaemonRepository, + "netdaemon": HacsNetdaemonRepository, + "plugin": HacsPluginRepository, +} diff --git a/custom_components/hacs/repositories/appdaemon.py b/custom_components/hacs/repositories/appdaemon.py new file mode 100644 index 0000000..a74186b --- /dev/null +++ b/custom_components/hacs/repositories/appdaemon.py @@ -0,0 +1,71 @@ +"""Class for appdaemon apps in HACS.""" +from aiogithubapi import AIOGitHubAPIException + +from custom_components.hacs.enums import HacsCategory +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.classes.repository import HacsRepository + + +class HacsAppdaemonRepository(HacsRepository): + """Appdaemon apps in HACS.""" + + def __init__(self, full_name): + """Initialize.""" + super().__init__() + self.data.full_name = full_name + self.data.full_name_lower = full_name.lower() + self.data.category = HacsCategory.APPDAEMON + self.content.path.local = self.localpath + self.content.path.remote = "apps" + + @property + def localpath(self): + """Return localpath.""" + return f"{self.hacs.core.config_path}/appdaemon/apps/{self.data.name}" + + async def validate_repository(self): + """Validate.""" + await self.common_validate() + + # Custom step 1: Validate content. + try: + addir = await self.repository_object.get_contents("apps", self.ref) + except AIOGitHubAPIException: + raise HacsException( + f"Repostitory structure for {self.ref.replace('tags/','')} is not compliant" + ) from None + + if not isinstance(addir, list): + self.validate.errors.append("Repostitory structure not compliant") + + self.content.path.remote = addir[0].path + self.content.objects = await self.repository_object.get_contents( + self.content.path.remote, self.ref + ) + + # Handle potential errors + if self.validate.errors: + for error in self.validate.errors: + if not self.hacs.status.startup: + self.logger.error("%s %s", self, error) + return self.validate.success + + async def update_repository(self, ignore_issues=False, force=False): + """Update.""" + if not await self.common_update(ignore_issues, force): + return + + # Get appdaemon objects. + if self.repository_manifest: + if self.data.content_in_root: + self.content.path.remote = "" + + if self.content.path.remote == "apps": + addir = await self.repository_object.get_contents(self.content.path.remote, self.ref) + self.content.path.remote = addir[0].path + self.content.objects = await self.repository_object.get_contents( + self.content.path.remote, self.ref + ) + + # Set local path + self.content.path.local = self.localpath diff --git a/custom_components/hacs/repositories/integration.py b/custom_components/hacs/repositories/integration.py new file mode 100644 index 0000000..8075821 --- /dev/null +++ b/custom_components/hacs/repositories/integration.py @@ -0,0 +1,97 @@ +"""Class for integrations in HACS.""" +from homeassistant.loader import async_get_custom_components + +from custom_components.hacs.enums import HacsCategory +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.classes.repository import HacsRepository +from custom_components.hacs.helpers.functions.filters import ( + get_first_directory_in_directory, +) +from custom_components.hacs.helpers.functions.information import ( + get_integration_manifest, +) + + +class HacsIntegrationRepository(HacsRepository): + """Integrations in HACS.""" + + def __init__(self, full_name): + """Initialize.""" + super().__init__() + self.data.full_name = full_name + self.data.full_name_lower = full_name.lower() + self.data.category = HacsCategory.INTEGRATION + self.content.path.remote = "custom_components" + self.content.path.local = self.localpath + + @property + def localpath(self): + """Return localpath.""" + return f"{self.hacs.core.config_path}/custom_components/{self.data.domain}" + + async def async_post_installation(self): + """Run post installation steps.""" + if self.data.config_flow: + if self.data.full_name != "hacs/integration": + await self.reload_custom_components() + if self.data.first_install: + self.pending_restart = False + return + self.pending_restart = True + + async def validate_repository(self): + """Validate.""" + await self.common_validate() + + # Custom step 1: Validate content. + if self.data.content_in_root: + self.content.path.remote = "" + + if self.content.path.remote == "custom_components": + name = get_first_directory_in_directory(self.tree, "custom_components") + if name is None: + raise HacsException( + f"Repostitory structure for {self.ref.replace('tags/','')} is not compliant" + ) + self.content.path.remote = f"custom_components/{name}" + + try: + await get_integration_manifest(self) + except HacsException as exception: + if self.hacs.system.action: + raise HacsException(f"::error:: {exception}") from exception + self.logger.error("%s %s", self, exception) + + # Handle potential errors + if self.validate.errors: + for error in self.validate.errors: + if not self.hacs.status.startup: + self.logger.error("%s %s", self, error) + return self.validate.success + + async def update_repository(self, ignore_issues=False, force=False): + """Update.""" + if not await self.common_update(ignore_issues, force): + return + + if self.data.content_in_root: + self.content.path.remote = "" + + if self.content.path.remote == "custom_components": + name = get_first_directory_in_directory(self.tree, "custom_components") + self.content.path.remote = f"custom_components/{name}" + + try: + await get_integration_manifest(self) + except HacsException as exception: + self.logger.error("%s %s", self, exception) + + # Set local path + self.content.path.local = self.localpath + + async def reload_custom_components(self): + """Reload custom_components (and config flows)in HA.""" + self.logger.info("Reloading custom_component cache") + del self.hacs.hass.data["custom_components"] + await async_get_custom_components(self.hacs.hass) + self.logger.info("Custom_component cache reloaded") diff --git a/custom_components/hacs/repositories/netdaemon.py b/custom_components/hacs/repositories/netdaemon.py new file mode 100644 index 0000000..6796e71 --- /dev/null +++ b/custom_components/hacs/repositories/netdaemon.py @@ -0,0 +1,81 @@ +"""Class for netdaemon apps in HACS.""" +from custom_components.hacs.enums import HacsCategory +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.classes.repository import HacsRepository +from custom_components.hacs.helpers.functions.filters import ( + get_first_directory_in_directory, +) + + +class HacsNetdaemonRepository(HacsRepository): + """Netdaemon apps in HACS.""" + + def __init__(self, full_name): + """Initialize.""" + super().__init__() + self.data.full_name = full_name + self.data.full_name_lower = full_name.lower() + self.data.category = HacsCategory.NETDAEMON + self.content.path.local = self.localpath + self.content.path.remote = "apps" + + @property + def localpath(self): + """Return localpath.""" + return f"{self.hacs.core.config_path}/netdaemon/apps/{self.data.name}" + + async def validate_repository(self): + """Validate.""" + await self.common_validate() + + # Custom step 1: Validate content. + if self.repository_manifest: + if self.data.content_in_root: + self.content.path.remote = "" + + if self.content.path.remote == "apps": + self.data.domain = get_first_directory_in_directory(self.tree, self.content.path.remote) + self.content.path.remote = f"apps/{self.data.name}" + + compliant = False + for treefile in self.treefiles: + if treefile.startswith(f"{self.content.path.remote}") and treefile.endswith(".cs"): + compliant = True + break + if not compliant: + raise HacsException( + f"Repostitory structure for {self.ref.replace('tags/','')} is not compliant" + ) + + # Handle potential errors + if self.validate.errors: + for error in self.validate.errors: + if not self.hacs.status.startup: + self.logger.error("%s %s", self, error) + return self.validate.success + + async def update_repository(self, ignore_issues=False, force=False): + """Update.""" + if not await self.common_update(ignore_issues, force): + return + + # Get appdaemon objects. + if self.repository_manifest: + if self.data.content_in_root: + self.content.path.remote = "" + + if self.content.path.remote == "apps": + self.data.domain = get_first_directory_in_directory(self.tree, self.content.path.remote) + self.content.path.remote = f"apps/{self.data.name}" + + # Set local path + self.content.path.local = self.localpath + + async def async_post_installation(self): + """Run post installation steps.""" + try: + await self.hacs.hass.services.async_call( + "hassio", "addon_restart", {"addon": "c6a2317c_netdaemon"} + ) + except (Exception, BaseException): # pylint: disable=broad-except + pass diff --git a/custom_components/hacs/repositories/plugin.py b/custom_components/hacs/repositories/plugin.py new file mode 100644 index 0000000..1c0e026 --- /dev/null +++ b/custom_components/hacs/repositories/plugin.py @@ -0,0 +1,75 @@ +"""Class for plugins in HACS.""" +import json + +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.classes.repository import HacsRepository +from custom_components.hacs.helpers.functions.information import find_file_name + + +class HacsPluginRepository(HacsRepository): + """Plugins in HACS.""" + + def __init__(self, full_name): + """Initialize.""" + super().__init__() + self.data.full_name = full_name + self.data.full_name_lower = full_name.lower() + self.data.file_name = None + self.data.category = "plugin" + self.information.javascript_type = None + self.content.path.local = self.localpath + + @property + def localpath(self): + """Return localpath.""" + return f"{self.hacs.core.config_path}/www/community/{self.data.full_name.split('/')[-1]}" + + async def validate_repository(self): + """Validate.""" + # Run common validation steps. + await self.common_validate() + + # Custom step 1: Validate content. + find_file_name(self) + + if self.content.path.remote is None: + raise HacsException( + f"Repostitory structure for {self.ref.replace('tags/','')} is not compliant" + ) + + if self.content.path.remote == "release": + self.content.single = True + + # Handle potential errors + if self.validate.errors: + for error in self.validate.errors: + if not self.hacs.status.startup: + self.logger.error("%s %s", self, error) + return self.validate.success + + async def update_repository(self, ignore_issues=False, force=False): + """Update.""" + if not await self.common_update(ignore_issues, force): + return + + # Get plugin objects. + find_file_name(self) + + if self.content.path.remote is None: + self.validate.errors.append( + f"Repostitory structure for {self.ref.replace('tags/','')} is not compliant" + ) + + if self.content.path.remote == "release": + self.content.single = True + + async def get_package_content(self): + """Get package content.""" + try: + package = await self.repository_object.get_contents("package.json", self.ref) + package = json.loads(package.content) + + if package: + self.data.authors = package["author"] + except (Exception, BaseException): # pylint: disable=broad-except + pass diff --git a/custom_components/hacs/repositories/python_script.py b/custom_components/hacs/repositories/python_script.py new file mode 100644 index 0000000..50c9cfa --- /dev/null +++ b/custom_components/hacs/repositories/python_script.py @@ -0,0 +1,79 @@ +"""Class for python_scripts in HACS.""" +from custom_components.hacs.enums import HacsCategory +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.classes.repository import HacsRepository +from custom_components.hacs.helpers.functions.information import find_file_name + + +class HacsPythonScriptRepository(HacsRepository): + """python_scripts in HACS.""" + + category = "python_script" + + def __init__(self, full_name): + """Initialize.""" + super().__init__() + self.data.full_name = full_name + self.data.full_name_lower = full_name.lower() + self.data.category = HacsCategory.PYTHON_SCRIPT + self.content.path.remote = "python_scripts" + self.content.path.local = self.localpath + self.content.single = True + + @property + def localpath(self): + """Return localpath.""" + return f"{self.hacs.core.config_path}/python_scripts" + + async def validate_repository(self): + """Validate.""" + # Run common validation steps. + await self.common_validate() + + # Custom step 1: Validate content. + if self.data.content_in_root: + self.content.path.remote = "" + + compliant = False + for treefile in self.treefiles: + if treefile.startswith(f"{self.content.path.remote}") and treefile.endswith(".py"): + compliant = True + break + if not compliant: + raise HacsException( + f"Repository structure for {self.ref.replace('tags/','')} is not compliant" + ) + + # Handle potential errors + if self.validate.errors: + for error in self.validate.errors: + if not self.hacs.status.startup: + self.logger.error("%s %s", self, error) + return self.validate.success + + async def async_post_registration(self): + """Registration.""" + # Set name + find_file_name(self) + + async def update_repository(self, ignore_issues=False, force=False): + """Update.""" + if not await self.common_update(ignore_issues, force): + return + + # Get python_script objects. + if self.data.content_in_root: + self.content.path.remote = "" + + compliant = False + for treefile in self.treefiles: + if treefile.startswith(f"{self.content.path.remote}") and treefile.endswith(".py"): + compliant = True + break + if not compliant: + raise HacsException( + f"Repository structure for {self.ref.replace('tags/','')} is not compliant" + ) + + # Update name + find_file_name(self) diff --git a/custom_components/hacs/repositories/theme.py b/custom_components/hacs/repositories/theme.py new file mode 100644 index 0000000..fcc61db --- /dev/null +++ b/custom_components/hacs/repositories/theme.py @@ -0,0 +1,76 @@ +"""Class for themes in HACS.""" +from custom_components.hacs.enums import HacsCategory +from custom_components.hacs.exceptions import HacsException +from custom_components.hacs.helpers.classes.repository import HacsRepository +from custom_components.hacs.helpers.functions.information import find_file_name + + +class HacsThemeRepository(HacsRepository): + """Themes in HACS.""" + + def __init__(self, full_name): + """Initialize.""" + super().__init__() + self.data.full_name = full_name + self.data.full_name_lower = full_name.lower() + self.data.category = HacsCategory.THEME + self.content.path.remote = "themes" + self.content.path.local = self.localpath + self.content.single = False + + @property + def localpath(self): + """Return localpath.""" + return f"{self.hacs.core.config_path}/themes/{self.data.file_name.replace('.yaml', '')}" + + async def async_post_installation(self): + """Run post installation steps.""" + try: + await self.hacs.hass.services.async_call("frontend", "reload_themes", {}) + except (Exception, BaseException): # pylint: disable=broad-except + pass + + async def validate_repository(self): + """Validate.""" + # Run common validation steps. + await self.common_validate() + + # Custom step 1: Validate content. + compliant = False + for treefile in self.treefiles: + if treefile.startswith("themes/") and treefile.endswith(".yaml"): + compliant = True + break + if not compliant: + raise HacsException( + f"Repostitory structure for {self.ref.replace('tags/','')} is not compliant" + ) + + if self.data.content_in_root: + self.content.path.remote = "" + + # Handle potential errors + if self.validate.errors: + for error in self.validate.errors: + if not self.hacs.status.startup: + self.logger.error("%s %s", self, error) + return self.validate.success + + async def async_post_registration(self): + """Registration.""" + # Set name + find_file_name(self) + self.content.path.local = self.localpath + + async def update_repository(self, ignore_issues=False, force=False): + """Update.""" + if not await self.common_update(ignore_issues, force): + return + + # Get theme objects. + if self.data.content_in_root: + self.content.path.remote = "" + + # Update name + find_file_name(self) + self.content.path.local = self.localpath diff --git a/custom_components/hacs/sensor.py b/custom_components/hacs/sensor.py new file mode 100644 index 0000000..c7accc9 --- /dev/null +++ b/custom_components/hacs/sensor.py @@ -0,0 +1,118 @@ +"""Sensor platform for HACS.""" +from homeassistant.core import callback +from homeassistant.helpers.entity import Entity + +from custom_components.hacs.const import DOMAIN, NAME_SHORT +from custom_components.hacs.mixin import HacsMixin + + +async def async_setup_platform(_hass, _config, async_add_entities, _discovery_info=None): + """Setup sensor platform.""" + async_add_entities([HACSSensor()]) + + +async def async_setup_entry(_hass, _config_entry, async_add_devices): + """Setup sensor platform.""" + async_add_devices([HACSSensor()]) + + +class HACSDevice(HacsMixin, Entity): + """HACS Device class.""" + + @property + def device_info(self): + """Return device information about HACS.""" + return { + "identifiers": {(DOMAIN, self.unique_id)}, + "name": NAME_SHORT, + "manufacturer": "hacs.xyz", + "model": "", + "sw_version": str(self.hacs.version), + "entry_type": "service", + } + + +class HACSSensor(HACSDevice): + """HACS Sensor class.""" + + def __init__(self): + """Initialize.""" + self._state = None + self.repositories = [] + + @property + def should_poll(self): + """No polling needed.""" + return False + + async def async_update(self): + """Manual updates of the sensor.""" + self._update() + + @callback + def _update_and_write_state(self, *_): + """Update the sensor and write state.""" + self._update() + self.async_write_ha_state() + + @callback + def _update(self): + """Update the sensor.""" + if self.hacs.status.background_task: + return + + self.repositories = [] + + for repository in self.hacs.repositories: + if ( + repository.pending_upgrade + and repository.data.category in self.hacs.common.categories + ): + self.repositories.append(repository) + self._state = len(self.repositories) + + @property + def unique_id(self): + """Return a unique ID to use for this sensor.""" + return "0717a0cd-745c-48fd-9b16-c8534c9704f9-bc944b0f-fd42-4a58-a072-ade38d1444cd" + + @property + def name(self): + """Return the name of the sensor.""" + return "hacs" + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + @property + def icon(self): + """Return the icon of the sensor.""" + return "hacs:hacs" + + @property + def unit_of_measurement(self): + """Return the unit of measurement.""" + return "pending update(s)" + + @property + def device_state_attributes(self): + """Return attributes for the sensor.""" + repositories = [] + for repository in self.repositories: + repositories.append( + { + "name": repository.data.full_name, + "display_name": repository.display_name, + "installed_version": repository.display_installed_version, + "available_version": repository.display_available_version, + } + ) + return {"repositories": repositories} + + async def async_added_to_hass(self) -> None: + """Register for status events.""" + self.async_on_remove( + self.hass.bus.async_listen("hacs/status", self._update_and_write_state) + ) diff --git a/custom_components/hacs/share.py b/custom_components/hacs/share.py new file mode 100644 index 0000000..29c19be --- /dev/null +++ b/custom_components/hacs/share.py @@ -0,0 +1,66 @@ +"""Shared HACS elements.""" +import os + +from .base import HacsBase + +SHARE = { + "hacs": None, + "factory": None, + "queue": None, + "removed_repositories": [], + "rules": {}, +} + + +def get_hacs() -> HacsBase: + if SHARE["hacs"] is None: + from custom_components.hacs.hacsbase.hacs import Hacs as Legacy + + _hacs = Legacy() + + if not "PYTEST" in os.environ and "GITHUB_ACTION" in os.environ: + _hacs.system.action = True + + SHARE["hacs"] = _hacs + + return SHARE["hacs"] + + +def get_factory(): + if SHARE["factory"] is None: + from custom_components.hacs.operational.factory import HacsTaskFactory + + SHARE["factory"] = HacsTaskFactory() + + return SHARE["factory"] + + +def get_queue(): + if SHARE["queue"] is None: + from queueman import QueueManager + + SHARE["queue"] = QueueManager() + + return SHARE["queue"] + + +def is_removed(repository): + return repository in [x.repository for x in SHARE["removed_repositories"]] + + +def get_removed(repository): + if not is_removed(repository): + from custom_components.hacs.helpers.classes.removed import RemovedRepository + + removed_repo = RemovedRepository() + removed_repo.repository = repository + SHARE["removed_repositories"].append(removed_repo) + filter_repos = [ + x for x in SHARE["removed_repositories"] if x.repository.lower() == repository.lower() + ] + + return filter_repos.pop() or None + + +def list_removed_repositories(): + return SHARE["removed_repositories"] diff --git a/custom_components/hacs/system_health.py b/custom_components/hacs/system_health.py new file mode 100644 index 0000000..1a7860a --- /dev/null +++ b/custom_components/hacs/system_health.py @@ -0,0 +1,36 @@ +"""Provide info to system health.""" +from aiogithubapi.common.const import BASE_API_URL +from homeassistant.components import system_health +from homeassistant.core import HomeAssistant, callback + +from .base import HacsBase +from .const import DOMAIN + +GITHUB_STATUS = "https://www.githubstatus.com/" + + +@callback +def async_register(hass: HomeAssistant, register: system_health.SystemHealthRegistration) -> None: + """Register system health callbacks.""" + register.domain = "Home Assistant Community Store" + register.async_register_info(system_health_info, "/hacs") + + +async def system_health_info(hass): + """Get info for the info page.""" + hacs: HacsBase = hass.data[DOMAIN] + response = await hacs.githubapi.rate_limit() + + data = { + "GitHub API": system_health.async_check_can_reach_url(hass, BASE_API_URL, GITHUB_STATUS), + "Github API Calls Remaining": response.data.resources.core.remaining, + "Installed Version": hacs.version, + "Stage": hacs.stage, + "Available Repositories": len(hacs.repositories), + "Installed Repositories": len([repo for repo in hacs.repositories if repo.data.installed]), + } + + if hacs.system.disabled: + data["Disabled"] = hacs.system.disabled_reason + + return data diff --git a/custom_components/hacs/tasks/__init__.py b/custom_components/hacs/tasks/__init__.py new file mode 100644 index 0000000..db567c4 --- /dev/null +++ b/custom_components/hacs/tasks/__init__.py @@ -0,0 +1 @@ +"""Init HACS tasks.""" diff --git a/custom_components/hacs/tasks/activate_categories.py b/custom_components/hacs/tasks/activate_categories.py new file mode 100644 index 0000000..55d6262 --- /dev/null +++ b/custom_components/hacs/tasks/activate_categories.py @@ -0,0 +1,35 @@ +"""Starting setup task: extra stores.""" +from __future__ import annotations + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..enums import HacsCategory, HacsStage +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Set up extra stores in HACS if enabled in Home Assistant.""" + + stages = [HacsStage.SETUP] + + async def async_execute(self) -> None: + self.hacs.common.categories = set() + for category in (HacsCategory.INTEGRATION, HacsCategory.PLUGIN): + self.hacs.enable_hacs_category(HacsCategory(category)) + + if HacsCategory.PYTHON_SCRIPT in self.hacs.hass.config.components: + self.hacs.enable_hacs_category(HacsCategory.PYTHON_SCRIPT) + + if self.hacs.hass.services.has_service("frontend", "reload_themes"): + self.hacs.enable_hacs_category(HacsCategory.THEME) + + if self.hacs.configuration.appdaemon: + self.hacs.enable_hacs_category(HacsCategory.APPDAEMON) + if self.hacs.configuration.netdaemon: + self.hacs.enable_hacs_category(HacsCategory.NETDAEMON) diff --git a/custom_components/hacs/tasks/base.py b/custom_components/hacs/tasks/base.py new file mode 100644 index 0000000..fc7d9b1 --- /dev/null +++ b/custom_components/hacs/tasks/base.py @@ -0,0 +1,58 @@ +""""Hacs base setup task.""" +# pylint: disable=abstract-method +from __future__ import annotations + +from datetime import timedelta +from timeit import default_timer as timer + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..enums import HacsStage +from ..mixin import LogMixin + + +class HacsTask(LogMixin): + """Hacs task base.""" + + hass: HomeAssistant + + events: list[str] | None = None + schedule: timedelta | None = None + stages: list[HacsStage] | None = None + + def __init__(self, hacs: HacsBase, hass: HomeAssistant) -> None: + self.hacs = hacs + self.hass = hass + + @property + def slug(self) -> str: + """Return the check slug.""" + return self.__class__.__module__.rsplit(".", maxsplit=1)[-1] + + async def execute_task(self, *_, **__) -> None: + """Execute the task defined in subclass.""" + if self.hacs.system.disabled: + self.log.warning( + "Skipping task %s, HACS is disabled - %s", + self.slug, + self.hacs.system.disabled_reason, + ) + return + self.log.info("Executing task: %s", self.slug) + start_time = timer() + + try: + if task := getattr(self, "execute", None): + await self.hass.async_add_executor_job(task) + elif task := getattr(self, "async_execute", None): + await task() # pylint: disable=not-callable + except BaseException as exception: # pylint: disable=broad-except + self.log.error("Task %s failed: %s", self.slug, exception) + + else: + self.log.debug( + "Task %s took " "%.2f seconds to complete", + self.slug, + timer() - start_time, + ) diff --git a/custom_components/hacs/tasks/check_constrains.py b/custom_components/hacs/tasks/check_constrains.py new file mode 100644 index 0000000..aca0fc1 --- /dev/null +++ b/custom_components/hacs/tasks/check_constrains.py @@ -0,0 +1,43 @@ +""""Starting setup task: Constrains".""" +from __future__ import annotations + +import os + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..const import MINIMUM_HA_VERSION +from ..enums import HacsDisabledReason, HacsStage +from ..utils.version import version_left_higher_then_right +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Check env Constrains.""" + + stages = [HacsStage.SETUP] + + def execute(self) -> None: + for location in ( + self.hass.config.path("custom_components/custom_updater.py"), + self.hass.config.path("custom_components/custom_updater/__init__.py"), + ): + if os.path.exists(location): + self.log.critical( + "This cannot be used with custom_updater. " + "To use this you need to remove custom_updater form %s", + location, + ) + self.hacs.disable_hacs(HacsDisabledReason.CONSTRAINS) + + if not version_left_higher_then_right(self.hacs.core.ha_version, MINIMUM_HA_VERSION): + self.log.critical( + "You need HA version %s or newer to use this integration.", + MINIMUM_HA_VERSION, + ) + self.hacs.disable_hacs(HacsDisabledReason.CONSTRAINS) diff --git a/custom_components/hacs/tasks/clear_old_storage.py b/custom_components/hacs/tasks/clear_old_storage.py new file mode 100644 index 0000000..20250cb --- /dev/null +++ b/custom_components/hacs/tasks/clear_old_storage.py @@ -0,0 +1,28 @@ +"""Starting setup task: clear storage.""" +from __future__ import annotations + +import os + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..enums import HacsStage +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Clear old files from storage.""" + + stages = [HacsStage.SETUP] + + def execute(self) -> None: + for storage_file in ("hacs",): + path = f"{self.hacs.core.config_path}/.storage/{storage_file}" + if os.path.isfile(path): + self.log.info("Cleaning up old storage file: %s", path) + os.remove(path) diff --git a/custom_components/hacs/tasks/hello_world.py b/custom_components/hacs/tasks/hello_world.py new file mode 100644 index 0000000..c4b9f72 --- /dev/null +++ b/custom_components/hacs/tasks/hello_world.py @@ -0,0 +1,23 @@ +""""Hacs base setup task.""" +from __future__ import annotations + +from datetime import timedelta + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """ "Hacs task base.""" + + schedule = timedelta(weeks=52) + + def execute(self) -> None: + self.log.debug("Hello World!") diff --git a/custom_components/hacs/tasks/load_hacs_repository.py b/custom_components/hacs/tasks/load_hacs_repository.py new file mode 100644 index 0000000..4595623 --- /dev/null +++ b/custom_components/hacs/tasks/load_hacs_repository.py @@ -0,0 +1,40 @@ +"""Starting setup task: load HACS repository.""" +from __future__ import annotations + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..enums import HacsDisabledReason, HacsStage +from ..exceptions import HacsException +from ..helpers.functions.register_repository import register_repository +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Load HACS repositroy.""" + + stages = [HacsStage.STARTUP] + + async def async_execute(self) -> None: + try: + repository = self.hacs.get_by_name("hacs/integration") + if repository is None: + await register_repository("hacs/integration", "integration") + repository = self.hacs.get_by_name("hacs/integration") + if repository is None: + raise HacsException("Unknown error") + repository.data.installed = True + repository.data.installed_version = self.hacs.integration.version + repository.data.new = False + self.hacs.repository = repository.repository_object + except HacsException as exception: + if "403" in f"{exception}": + self.log.critical("GitHub API is ratelimited, or the token is wrong.") + else: + self.log.critical("[%s] - Could not load HACS!", exception) + self.hacs.disable_hacs(HacsDisabledReason.LOAD_HACS) diff --git a/custom_components/hacs/tasks/manager.py b/custom_components/hacs/tasks/manager.py new file mode 100644 index 0000000..3f17fa9 --- /dev/null +++ b/custom_components/hacs/tasks/manager.py @@ -0,0 +1,75 @@ +"""Hacs task manager.""" +from __future__ import annotations + +import asyncio +from importlib import import_module +from pathlib import Path + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..mixin import LogMixin +from .base import HacsTask + + +class HacsTaskManager(LogMixin): + """Hacs task manager.""" + + def __init__(self, hacs: HacsBase, hass: HomeAssistant) -> None: + """Initialize the setup manager class.""" + self.hacs = hacs + self.hass = hass + self.__tasks: dict[str, HacsTask] = {} + + @property + def tasks(self) -> list[HacsTask]: + """Return all list of all tasks.""" + return list(self.__tasks.values()) + + async def async_load(self) -> None: + """Load all tasks.""" + task_files = Path(__file__).parent + task_modules = ( + module.stem + for module in task_files.glob("*.py") + if module.name not in ("base.py", "__init__.py", "manager.py") + ) + + async def _load_module(module: str): + task_module = import_module(f"{__package__}.{module}") + if task := await task_module.async_setup_task(hacs=self.hacs, hass=self.hass): + self.__tasks[task.slug] = task + + await asyncio.gather(*[_load_module(task) for task in task_modules]) + self.log.info("Loaded %s tasks", len(self.tasks)) + + schedule_tasks = len(self.hacs.recuring_tasks) == 0 + + for task in self.tasks: + if task.events is not None: + for event in task.events: + self.hass.bus.async_listen_once(event, task.execute_task) + + if task.schedule is not None and schedule_tasks: + self.log.debug("Scheduling the %s task to run every %s", task.slug, task.schedule) + self.hacs.recuring_tasks.append( + self.hacs.hass.helpers.event.async_track_time_interval( + task.execute_task, task.schedule + ) + ) + + def get(self, slug: str) -> HacsTask | None: + """Return a task.""" + return self.__tasks.get(slug) + + async def async_execute_runtume_tasks(self) -> None: + """Execute the the execute methods of each runtime task if the stage matches.""" + self.hacs.status.background_task = True + await asyncio.gather( + *( + task.execute_task() + for task in self.tasks + if task.stages is not None and self.hacs.stage in task.stages + ) + ) + self.hacs.status.background_task = False diff --git a/custom_components/hacs/tasks/restore_data.py b/custom_components/hacs/tasks/restore_data.py new file mode 100644 index 0000000..e653d7c --- /dev/null +++ b/custom_components/hacs/tasks/restore_data.py @@ -0,0 +1,23 @@ +""""Starting setup task: Restore".""" +from __future__ import annotations + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..enums import HacsDisabledReason, HacsStage +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Restore HACS data.""" + + stages = [HacsStage.SETUP] + + async def async_execute(self) -> None: + if not await self.hacs.data.restore(): + self.hacs.disable_hacs(HacsDisabledReason.RESTORE) diff --git a/custom_components/hacs/tasks/setup_frontend.py b/custom_components/hacs/tasks/setup_frontend.py new file mode 100644 index 0000000..8dd0d36 --- /dev/null +++ b/custom_components/hacs/tasks/setup_frontend.py @@ -0,0 +1,87 @@ +""""Starting setup task: Frontend".""" +from __future__ import annotations + +from hacs_frontend import locate_dir +from hacs_frontend.version import VERSION as FE_VERSION + +from ..const import DOMAIN +from ..enums import HacsStage +from ..webresponses.frontend import HacsFrontendDev +from .base import HacsTask + +URL_BASE = "/hacsfiles" + + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Setup the HACS frontend.""" + + stages = [HacsStage.SETUP] + + async def async_execute(self) -> None: + + # Register themes + self.hass.http.register_static_path(f"{URL_BASE}/themes", self.hass.config.path("themes")) + + # Register frontend + if self.hacs.configuration.frontend_repo_url: + self.log.warning("Frontend development mode enabled. Do not run in production!") + self.hass.http.register_view(HacsFrontendDev()) + else: + # + self.hass.http.register_static_path( + f"{URL_BASE}/frontend", locate_dir(), cache_headers=False + ) + + # Custom iconset + self.hass.http.register_static_path( + f"{URL_BASE}/iconset.js", str(self.hacs.integration_dir / "iconset.js") + ) + if "frontend_extra_module_url" not in self.hass.data: + self.hass.data["frontend_extra_module_url"] = set() + self.hass.data["frontend_extra_module_url"].add(f"{URL_BASE}/iconset.js") + + # Register www/community for all other files + use_cache = self.hacs.core.lovelace_mode == "storage" + self.log.info( + "%s mode, cache for /hacsfiles/: %s", + self.hacs.core.lovelace_mode, + use_cache, + ) + self.hass.http.register_static_path( + URL_BASE, + self.hass.config.path("www/community"), + cache_headers=use_cache, + ) + + self.hacs.frontend.version_running = FE_VERSION + for requirement in self.hacs.integration.requirements: + if "hacs_frontend" in requirement: + self.hacs.frontend.version_expected = requirement.split("==")[-1] + + # Add to sidepanel if needed + if DOMAIN not in self.hass.data.get("frontend_panels", {}): + self.hass.components.frontend.async_register_built_in_panel( + component_name="custom", + sidebar_title=self.hacs.configuration.sidepanel_title, + sidebar_icon=self.hacs.configuration.sidepanel_icon, + frontend_url_path=DOMAIN, + config={ + "_panel_custom": { + "name": "hacs-frontend", + "embed_iframe": True, + "trust_external": False, + "js_url": f"/hacsfiles/frontend/entrypoint.js?hacstag={FE_VERSION}", + } + }, + require_admin=True, + ) diff --git a/custom_components/hacs/tasks/setup_sensor.py b/custom_components/hacs/tasks/setup_sensor.py new file mode 100644 index 0000000..fa43bb3 --- /dev/null +++ b/custom_components/hacs/tasks/setup_sensor.py @@ -0,0 +1,31 @@ +""""Starting setup task: Sensor".""" +from __future__ import annotations + +from homeassistant.core import HomeAssistant +from homeassistant.helpers.discovery import async_load_platform + +from ..base import HacsBase +from ..const import DOMAIN, PLATFORMS +from ..enums import ConfigurationType, HacsStage +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Setup the HACS sensor platform.""" + + stages = [HacsStage.SETUP] + + async def async_execute(self) -> None: + if self.hacs.configuration.config_type == ConfigurationType.YAML: + self.hass.async_create_task( + async_load_platform(self.hass, "sensor", DOMAIN, {}, self.hacs.configuration.config) + ) + else: + self.hass.config_entries.async_setup_platforms( + self.hacs.configuration.config_entry, PLATFORMS + ) diff --git a/custom_components/hacs/tasks/setup_websocket_api.py b/custom_components/hacs/tasks/setup_websocket_api.py new file mode 100644 index 0000000..f776c10 --- /dev/null +++ b/custom_components/hacs/tasks/setup_websocket_api.py @@ -0,0 +1,42 @@ +"""Register WS API endpoints for HACS.""" +from __future__ import annotations + +from homeassistant.components.websocket_api import async_register_command +from homeassistant.core import HomeAssistant + +from ..api.acknowledge_critical_repository import acknowledge_critical_repository +from ..api.check_local_path import check_local_path +from ..api.get_critical_repositories import get_critical_repositories +from ..api.hacs_config import hacs_config +from ..api.hacs_removed import hacs_removed +from ..api.hacs_repositories import hacs_repositories +from ..api.hacs_repository import hacs_repository +from ..api.hacs_repository_data import hacs_repository_data +from ..api.hacs_settings import hacs_settings +from ..api.hacs_status import hacs_status +from ..base import HacsBase +from ..enums import HacsStage +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Setup the HACS websocket API.""" + + stages = [HacsStage.SETUP] + + async def async_execute(self) -> None: + async_register_command(self.hass, hacs_settings) + async_register_command(self.hass, hacs_config) + async_register_command(self.hass, hacs_repositories) + async_register_command(self.hass, hacs_repository) + async_register_command(self.hass, hacs_repository_data) + async_register_command(self.hass, check_local_path) + async_register_command(self.hass, hacs_status) + async_register_command(self.hass, hacs_removed) + async_register_command(self.hass, acknowledge_critical_repository) + async_register_command(self.hass, get_critical_repositories) diff --git a/custom_components/hacs/tasks/store_hacs_data.py b/custom_components/hacs/tasks/store_hacs_data.py new file mode 100644 index 0000000..ccabd4a --- /dev/null +++ b/custom_components/hacs/tasks/store_hacs_data.py @@ -0,0 +1,22 @@ +""""Store HACS data.""" +from __future__ import annotations + +from homeassistant.const import EVENT_HOMEASSISTANT_FINAL_WRITE +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """ "Hacs task base.""" + + events = [EVENT_HOMEASSISTANT_FINAL_WRITE] + + async def async_execute(self) -> None: + await self.hacs.data.async_write() diff --git a/custom_components/hacs/tasks/verify_api.py b/custom_components/hacs/tasks/verify_api.py new file mode 100644 index 0000000..02b2ae3 --- /dev/null +++ b/custom_components/hacs/tasks/verify_api.py @@ -0,0 +1,23 @@ +""""Starting setup task: Verify API".""" +from __future__ import annotations + +from homeassistant.core import HomeAssistant + +from ..base import HacsBase +from ..enums import HacsStage +from .base import HacsTask + + +async def async_setup_task(hacs: HacsBase, hass: HomeAssistant) -> Task: + """Set up this task.""" + return Task(hacs=hacs, hass=hass) + + +class Task(HacsTask): + """Verify the connection to the GitHub API.""" + + stages = [HacsStage.SETUP] + + async def async_execute(self) -> None: + can_update = await self.hacs.async_can_update() + self.log.debug("Can update %s repositories", can_update) diff --git a/custom_components/hacs/translations/en.json b/custom_components/hacs/translations/en.json new file mode 100644 index 0000000..12c6c07 --- /dev/null +++ b/custom_components/hacs/translations/en.json @@ -0,0 +1,53 @@ +{ + "config": { + "abort": { + "single_instance_allowed": "Only a single configuration of HACS is allowed.", + "min_ha_version": "You need at least version {version} of Home Assistant to setup HACS.", + "github": "Could not authenticate with GitHub, try again later.", + "not_setup": "HACS is not setup." + }, + "error": { + "auth": "Personal Access Token is not correct", + "acc": "You need to acknowledge all the statements before continuing" + }, + "step": { + "user": { + "data": { + "acc_logs": "I know how to access Home Assistant logs", + "acc_addons": "I know that there are no add-ons in HACS", + "acc_untested": "I know that everything inside HACS is custom and untested by Home Assistant", + "acc_disable": "I know that if I get issues with Home Assistant I should disable all my custom_components" + }, + "description": "Before you can setup HACS you need to acknowledge the following", + "title": "HACS" + }, + "device": { + "title": "Waiting for device activation" + } + }, + "progress": { + "wait_for_device": "1. Open {url} \n2.Paste the following key to authorize HACS: \n```\n{code}\n```\n" + } + }, + "options": { + "abort": { + "not_setup": "HACS is not setup.", + "release_limit_value": "The release limit needs to be between 1 and 100" + }, + "step": { + "user": { + "data": { + "not_in_use": "Not in use with YAML", + "country": "Filter with country code.", + "experimental": "Enable experimental features", + "release_limit": "Number of releases to show.", + "debug": "Enable debug.", + "appdaemon": "Enable AppDaemon apps discovery & tracking", + "netdaemon": "Enable NetDaemon apps discovery & tracking", + "sidepanel_icon": "Side panel icon", + "sidepanel_title": "Side panel title" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/hacs/utils/__init__.py b/custom_components/hacs/utils/__init__.py new file mode 100644 index 0000000..58b214c --- /dev/null +++ b/custom_components/hacs/utils/__init__.py @@ -0,0 +1 @@ +"""Initialize HACS utils.""" diff --git a/custom_components/hacs/utils/decode.py b/custom_components/hacs/utils/decode.py new file mode 100644 index 0000000..9d42516 --- /dev/null +++ b/custom_components/hacs/utils/decode.py @@ -0,0 +1,7 @@ +"""Util to decode content from the github API.""" +from base64 import b64decode + + +def decode_content(content: str) -> str: + """Decode content.""" + return b64decode(bytearray(content, "utf-8")).decode() diff --git a/custom_components/hacs/utils/logger.py b/custom_components/hacs/utils/logger.py new file mode 100644 index 0000000..c3fc4dd --- /dev/null +++ b/custom_components/hacs/utils/logger.py @@ -0,0 +1,19 @@ +"""Custom logger for HACS.""" +# pylint: disable=invalid-name +import logging +import os + +from ..const import PACKAGE_NAME + +_HACSLogger: logging.Logger = logging.getLogger(PACKAGE_NAME) + +if "GITHUB_ACTION" in os.environ: + logging.basicConfig( + format="::%(levelname)s:: %(message)s", + level="DEBUG", + ) + + +def getLogger(_name: str = None) -> logging.Logger: + """Return a Logger instance.""" + return _HACSLogger diff --git a/custom_components/hacs/utils/path.py b/custom_components/hacs/utils/path.py new file mode 100644 index 0000000..3e10e47 --- /dev/null +++ b/custom_components/hacs/utils/path.py @@ -0,0 +1,21 @@ +"""Path utils""" +from __future__ import annotations + +from pathlib import Path +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ..hacsbase.hacs import Hacs + + +def is_safe(hacs: Hacs, path: str | Path) -> bool: + """Helper to check if path is safe to remove.""" + paths = [ + Path(f"{hacs.core.config_path}/{hacs.configuration.appdaemon_path}"), + Path(f"{hacs.core.config_path}/{hacs.configuration.netdaemon_path}"), + Path(f"{hacs.core.config_path}/{hacs.configuration.plugin_path}"), + Path(f"{hacs.core.config_path}/{hacs.configuration.python_script_path}"), + Path(f"{hacs.core.config_path}/{hacs.configuration.theme_path}"), + Path(f"{hacs.core.config_path}/custom_components/"), + ] + return Path(path) not in paths diff --git a/custom_components/hacs/utils/version.py b/custom_components/hacs/utils/version.py new file mode 100644 index 0000000..c0b9a85 --- /dev/null +++ b/custom_components/hacs/utils/version.py @@ -0,0 +1,15 @@ +"""Version utils.""" + + +from functools import lru_cache + +from awesomeversion import AwesomeVersion, AwesomeVersionException + + +@lru_cache(maxsize=1024) +def version_left_higher_then_right(left: str, right: str) -> bool: + """Return a bool if source is newer than target, will also be true if identical.""" + try: + return AwesomeVersion(left) >= AwesomeVersion(right) + except AwesomeVersionException: + return False diff --git a/custom_components/hacs/validate/README.md b/custom_components/hacs/validate/README.md new file mode 100644 index 0000000..e0a7fd3 --- /dev/null +++ b/custom_components/hacs/validate/README.md @@ -0,0 +1,38 @@ +# Repository validation + +This is where the validation rules that run against the various repository categories live. + +## Structure + +- All validation rules are in the directory for their category. +- Validation rules that aplies to all categories are in the `common` directory. +- There is one file pr. rule. +- All rule needs tests to verify every possible outcome for the rule. +- It's better with multiple files than a big rule. +- All rules uses `ValidationBase` or `ActionValidationBase` as the base class. +- The `ActionValidationBase` are for checks that will breaks compatibility with with existing repositories (default), so these are only run in github actions. +- The class name should describe what the check does. +- Only use `validate` or `async_validate` methods to define validation rules. +- If a rule should fail, raise `ValidationException` with the failure message. + + +## Example + +```python +from custom_components.hacs.validate.base import ( + ActionValidationBase, + ValidationBase, + ValidationException, +) + + +class AwesomeRepository(ValidationBase): + def validate(self): + if self.repository != "awesome": + raise ValidationException("The repository is not awesome") + +class SuperAwesomeRepository(ActionValidationBase, category="integration"): + async def async_validate(self): + if self.repository != "super-awesome": + raise ValidationException("The repository is not super-awesome") +``` \ No newline at end of file diff --git a/custom_components/hacs/validate/__init__.py b/custom_components/hacs/validate/__init__.py new file mode 100644 index 0000000..42ec85f --- /dev/null +++ b/custom_components/hacs/validate/__init__.py @@ -0,0 +1,51 @@ +import asyncio +import glob +import importlib +from os.path import dirname, join, sep + +from custom_components.hacs.share import SHARE, get_hacs + + +def _initialize_rules(): + rules = glob.glob(join(dirname(__file__), "**/*.py")) + for rule in rules: + rule = rule.replace(sep, "/") + rule = rule.split("custom_components/hacs")[-1] + rule = f"custom_components/hacs{rule}".replace("/", ".")[:-3] + importlib.import_module(rule) + + +async def async_initialize_rules(): + hass = get_hacs().hass + await hass.async_add_executor_job(_initialize_rules) + + +async def async_run_repository_checks(repository): + hacs = get_hacs() + if not SHARE["rules"]: + await async_initialize_rules() + if not hacs.system.running: + return + checks = [] + for check in SHARE["rules"].get("common", []): + checks.append(check(repository)) + for check in SHARE["rules"].get(repository.data.category, []): + checks.append(check(repository)) + + await asyncio.gather( + *[ + check._async_run_check() + for check in checks or [] + if hacs.system.action or not check.action_only + ] + ) + + total = len([x for x in checks if hacs.system.action or not x.action_only]) + failed = len([x for x in checks if x.failed]) + + if failed != 0: + repository.logger.error("%s %s/%s checks failed", repository, failed, total) + if hacs.system.action: + exit(1) + else: + repository.logger.debug("%s All (%s) checks passed", repository, total) diff --git a/custom_components/hacs/validate/base.py b/custom_components/hacs/validate/base.py new file mode 100644 index 0000000..481201c --- /dev/null +++ b/custom_components/hacs/validate/base.py @@ -0,0 +1,48 @@ +from custom_components.hacs.share import SHARE, get_hacs + + +class ValidationException(Exception): + pass + + +class ValidationBase: + def __init__(self, repository) -> None: + self.repository = repository + self.hacs = get_hacs() + self.failed = False + self.logger = repository.logger + + def __init_subclass__(cls, category="common", **kwargs) -> None: + """Initialize a subclass, register if possible.""" + super().__init_subclass__(**kwargs) + if SHARE["rules"].get(category) is None: + SHARE["rules"][category] = [] + if cls not in SHARE["rules"][category]: + SHARE["rules"][category].append(cls) + + @property + def action_only(self): + return False + + async def _async_run_check(self): + """DO NOT OVERRIDE THIS IN SUBCLASSES!""" + if self.hacs.system.action: + self.logger.info(f"Running check '{self.__class__.__name__}'") + try: + await self.hacs.hass.async_add_executor_job(self.check) + await self.async_check() + except ValidationException as exception: + self.failed = True + self.logger.error(exception) + + def check(self): + pass + + async def async_check(self): + pass + + +class ActionValidationBase(ValidationBase): + @property + def action_only(self): + return True diff --git a/custom_components/hacs/validate/common/hacs_manifest.py b/custom_components/hacs/validate/common/hacs_manifest.py new file mode 100644 index 0000000..6701c12 --- /dev/null +++ b/custom_components/hacs/validate/common/hacs_manifest.py @@ -0,0 +1,10 @@ +from custom_components.hacs.validate.base import ( + ActionValidationBase, + ValidationException, +) + + +class HacsManifest(ActionValidationBase): + def check(self): + if "hacs.json" not in [x.filename for x in self.repository.tree]: + raise ValidationException("The repository has no 'hacs.json' file") diff --git a/custom_components/hacs/validate/common/repository_description.py b/custom_components/hacs/validate/common/repository_description.py new file mode 100644 index 0000000..100de02 --- /dev/null +++ b/custom_components/hacs/validate/common/repository_description.py @@ -0,0 +1,10 @@ +from custom_components.hacs.validate.base import ( + ActionValidationBase, + ValidationException, +) + + +class RepositoryDescription(ActionValidationBase): + def check(self): + if not self.repository.data.description: + raise ValidationException("The repository has no description") diff --git a/custom_components/hacs/validate/common/repository_information_file.py b/custom_components/hacs/validate/common/repository_information_file.py new file mode 100644 index 0000000..0447988 --- /dev/null +++ b/custom_components/hacs/validate/common/repository_information_file.py @@ -0,0 +1,19 @@ +from custom_components.hacs.validate.base import ( + ActionValidationBase, + ValidationException, +) + + +class RepositoryInformationFile(ActionValidationBase): + async def async_check(self): + filenames = [x.filename.lower() for x in self.repository.tree] + if self.repository.data.render_readme and "readme" in filenames: + pass + elif self.repository.data.render_readme and "readme.md" in filenames: + pass + elif "info" in filenames: + pass + elif "info.md" in filenames: + pass + else: + raise ValidationException("The repository has no information file") diff --git a/custom_components/hacs/validate/common/repository_topics.py b/custom_components/hacs/validate/common/repository_topics.py new file mode 100644 index 0000000..194faad --- /dev/null +++ b/custom_components/hacs/validate/common/repository_topics.py @@ -0,0 +1,10 @@ +from custom_components.hacs.validate.base import ( + ActionValidationBase, + ValidationException, +) + + +class RepositoryTopics(ActionValidationBase): + def check(self): + if not self.repository.data.topics: + raise ValidationException("The repository has no topics") diff --git a/custom_components/hacs/validate/integration/integration_manifest.py b/custom_components/hacs/validate/integration/integration_manifest.py new file mode 100644 index 0000000..41b1c97 --- /dev/null +++ b/custom_components/hacs/validate/integration/integration_manifest.py @@ -0,0 +1,10 @@ +from custom_components.hacs.validate.base import ( + ActionValidationBase, + ValidationException, +) + + +class IntegrationManifest(ActionValidationBase, category="integration"): + def check(self): + if "manifest.json" not in [x.filename for x in self.repository.tree]: + raise ValidationException("The repository has no 'hacs.json' file") diff --git a/custom_components/hacs/webresponses/__init__.py b/custom_components/hacs/webresponses/__init__.py new file mode 100644 index 0000000..4b9a8ba --- /dev/null +++ b/custom_components/hacs/webresponses/__init__.py @@ -0,0 +1 @@ +"""Initialize HACS Web responses""" diff --git a/custom_components/hacs/webresponses/frontend.py b/custom_components/hacs/webresponses/frontend.py new file mode 100644 index 0000000..8b29c9b --- /dev/null +++ b/custom_components/hacs/webresponses/frontend.py @@ -0,0 +1,24 @@ +from aiohttp import web +from homeassistant.components.http import HomeAssistantView + +from custom_components.hacs.share import get_hacs + + +class HacsFrontendDev(HomeAssistantView): + """Dev View Class for HACS.""" + + requires_auth = False + name = "hacs_files:frontend" + url = r"/hacsfiles/frontend/{requested_file:.+}" + + async def get(self, request, requested_file): # pylint: disable=unused-argument + """Handle HACS Web requests.""" + hacs = get_hacs() + requested = requested_file.split("/")[-1] + request = await hacs.session.get(f"{hacs.configuration.frontend_repo_url}/{requested}") + if request.status == 200: + result = await request.read() + response = web.Response(body=result) + response.headers["Content-Type"] = "application/javascript" + + return response diff --git a/home-assistant.log b/home-assistant.log index 50f035b..164ea44 100644 --- a/home-assistant.log +++ b/home-assistant.log @@ -1,501 +1,12 @@ -2021-09-06 20:50:34 WARNING (MainThread) [homeassistant.components.binary_sensor] Setup of binary_sensor platform hassio is taking over 10 seconds. -2021-09-06 20:50:34 WARNING (MainThread) [homeassistant.setup] Setup of input_number is taking over 10 seconds. -2021-09-06 20:50:34 WARNING (MainThread) [homeassistant.setup] Setup of counter is taking over 10 seconds. -2021-09-06 20:50:34 WARNING (MainThread) [homeassistant.setup] Setup of timer is taking over 10 seconds. -2021-09-06 20:50:34 WARNING (MainThread) [homeassistant.setup] Setup of group is taking over 10 seconds. -2021-09-06 20:50:34 WARNING (MainThread) [homeassistant.setup] Setup of input_boolean is taking over 10 seconds. -2021-09-06 20:50:34 WARNING (MainThread) [homeassistant.components.scene] Setup of scene platform homeassistant is taking over 10 seconds. -2021-09-06 20:50:36 ERROR (MainThread) [homeassistant.components.sensor] The sonarr platform for the sensor integration does not support platform setup. Please remove it from your config. -2021-09-06 20:50:37 WARNING (MainThread) [homeassistant.components.webhook] Received message for unregistered webhook eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797 from 192.168.86.163 -2021-09-06 20:50:46 WARNING (MainThread) [homeassistant.components.webhook] Received message for unregistered webhook eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797 from 192.168.86.163 -2021-09-06 20:51:00 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform mqtt is taking over 10 seconds. -2021-09-06 20:51:00 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Philips hue' for hue integration not ready yet: Error connecting to the Hue bridge at 192.168.86.44; Retrying in background -2021-09-06 20:51:00 WARNING (MainThread) [homeassistant.components.climate] Setup of climate platform ecobee is taking over 10 seconds. -2021-09-06 20:51:00 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform template is taking over 10 seconds. -2021-09-06 20:51:00 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform sonarr is taking over 10 seconds. -2021-09-06 20:51:02 ERROR (MainThread) [homeassistant.components.hassio.handler] Timeout on /store request -2021-09-06 20:51:02 ERROR (MainThread) [homeassistant.components.hassio] Failed to to call /store - -2021-09-06 20:51:09 WARNING (Recorder) [homeassistant.components.recorder.migration] Database is about to upgrade. Schema version: 18 -2021-09-06 20:51:09 WARNING (Recorder) [homeassistant.components.recorder.migration] Modifying columns mean, min, max, state, sum in table statistics. Note: this can take several minutes on large databases and slow computers. Please be patient! -2021-09-06 20:51:20 WARNING (MainThread) [homeassistant.components.websocket_api.http.connection] [1771879080] Disconnected: Did not receive auth message within 10 seconds -2021-09-07 00:36:26 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-07 07:54:10 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-07 07:54:10 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-07 20:31:40 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-08 06:23:06 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.home_temperature is taking over 10 seconds -2021-09-08 11:50:29 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-08 11:50:29 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-08 21:42:07 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-10 02:33:24 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-10 02:33:24 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-10 04:34:15 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-10 15:23:16 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-10 15:23:16 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-10 22:41:08 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-11 08:52:50 ERROR (MainThread) [metno] https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned 503 -2021-09-11 22:00:44 ERROR (Recorder) [homeassistant.components.recorder] Database connection invalidated: Error executing query: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') -[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] -[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 9, 12, 2, 0, 43, 277870, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 9, 12, 2, 0, 43, 277870, tzinfo=datetime.timezone.utc), '329e51799899ed2b3ad329a46e4c07f8', None, None)] -(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-11 22:00:47 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') -[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] -[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 9, 12, 2, 0, 43, 277870, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 9, 12, 2, 0, 43, 277870, tzinfo=datetime.timezone.utc), '329e51799899ed2b3ad329a46e4c07f8', None, None)] -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 777, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 840, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 866, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') -[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] -[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 9, 12, 2, 0, 43, 277870, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 9, 12, 2, 0, 43, 277870, tzinfo=datetime.timezone.utc), '329e51799899ed2b3ad329a46e4c07f8', None, None)] -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -2021-09-11 22:00:48 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-11 22:00:51 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 777, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 840, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 866, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -2021-09-11 22:00:51 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 772, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 911, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) -2021-09-11 22:01:02 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-11 22:01:05 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 777, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 840, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 866, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -2021-09-11 22:01:18 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-11 22:01:21 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 777, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 840, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 866, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -2021-09-11 22:01:21 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 772, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 911, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) -2021-09-11 22:01:33 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-11 22:01:36 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 777, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 840, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 866, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -2021-09-11 22:01:48 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-11 22:01:51 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 777, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 840, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 866, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -2021-09-11 22:01:51 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 772, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 911, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) -2021-09-11 22:02:03 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-11 22:02:06 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 657, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 777, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 840, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 866, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) -2021-09-11 22:25:05 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-12 12:27:45 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-12 12:27:45 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-12 18:38:59 ERROR (SyncWorker_3) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. -2021-09-12 18:39:47 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-12 18:51:47 ERROR (SyncWorker_4) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) -2021-09-12 21:35:49 ERROR (SyncWorker_4) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) -2021-09-12 21:36:00 ERROR (SyncWorker_5) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. -2021-09-12 22:51:00 ERROR (SyncWorker_6) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. -2021-09-12 23:32:57 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-13 03:34:39 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-13 12:19:31 WARNING (MainThread) [homeassistant.components.http.ban] Login attempt or request with invalid authentication from 119.91.96.181 (119.91.96.181). (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36) -2021-09-13 12:30:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-13 12:34:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-13 16:08:18 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-14 03:44:55 ERROR (SyncWorker_5) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) -2021-09-14 03:45:05 ERROR (SyncWorker_6) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. -2021-09-14 21:34:34 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-14 23:16:30 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-11-04 01:13:37 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant +2021-11-04 01:13:49 ERROR (MainThread) [homeassistant.components.sensor] The sonarr platform for the sensor integration does not support platform setup. Please remove it from your config. +2021-11-04 01:14:05 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Philips hue' for hue integration not ready yet: Error connecting to the Hue bridge at 192.168.86.44; Retrying in background +2021-11-04 01:14:05 ERROR (MainThread) [homeassistant.components.zwave_js] Failed to connect: +2021-11-04 01:14:05 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Z-Wave JS' for zwave_js integration not ready yet; Retrying in background +2021-11-04 01:14:05 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform sonarr is taking over 10 seconds. +2021-11-04 01:14:05 WARNING (MainThread) [homeassistant.components.climate] Setup of climate platform ecobee is taking over 10 seconds. +2021-11-04 01:14:25 ERROR (MainThread) [homeassistant.components.hassio.handler] Timeout on /addons/core_zwave_js/info request +2021-11-04 01:14:25 ERROR (MainThread) [homeassistant.components.zwave_js] Failed to get the Z-Wave JS add-on info: +2021-11-04 01:14:52 WARNING (MainThread) [homeassistant.components.zha.core.channels.base] [0x47AD:1:0x0008]: async_initialize: all attempts have failed: [DeliveryError('[0x47ad:1:0x0008]: Message send failure'), DeliveryError('[0x47ad:1:0x0008]: Message send failure'), DeliveryError('[0x47ad:1:0x0008]: Message send failure'), DeliveryError('[0x47ad:1:0x0008]: Message send failure')] +2021-11-04 01:14:52 WARNING (MainThread) [homeassistant.components.zha.core.channels.base] [0x47AD:1:0x0006]: async_initialize: all attempts have failed: [DeliveryError('[0x47ad:1:0x0006]: Message send failure'), DeliveryError('[0x47ad:1:0x0006]: Message send failure'), DeliveryError('[0x47ad:1:0x0006]: Message send failure'), DeliveryError('[0x47ad:1:0x0006]: Message send failure')] +2021-11-04 01:14:53 WARNING (MainThread) [homeassistant.components.zha.core.channels.base] [0x47AD:1:0x0702]: async_initialize: all attempts have failed: [DeliveryError('[0x47ad:1:0x0702]: Message send failure'), DeliveryError('[0x47ad:1:0x0702]: Message send failure'), DeliveryError('[0x47ad:1:0x0702]: Message send failure'), DeliveryError('[0x47ad:1:0x0702]: Message send failure')] diff --git a/home-assistant.log.1 b/home-assistant.log.1 index 386a129..4e434ab 100644 --- a/home-assistant.log.1 +++ b/home-assistant.log.1 @@ -1,3210 +1,483 @@ -2021-08-31 09:39:29 ERROR (MainThread) [homeassistant.components.sensor] The sonarr platform for the sensor integration does not support platform setup. Please remove it from your config. -2021-08-31 09:39:29 WARNING (MainThread) [homeassistant.components.binary_sensor] Setup of binary_sensor platform hassio is taking over 10 seconds. -2021-08-31 09:39:29 WARNING (MainThread) [homeassistant.setup] Setup of timer is taking over 10 seconds. -2021-08-31 09:39:29 WARNING (MainThread) [homeassistant.setup] Setup of input_datetime is taking over 10 seconds. -2021-08-31 09:39:29 WARNING (MainThread) [homeassistant.components.webhook] Received message for unregistered webhook eb9d2fbd9f8fea4200d7752b689aecfe6a2ca2215d2cbe0600b75a4fd20a6797 from 192.168.86.163 -2021-08-31 09:39:45 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform mqtt is taking over 10 seconds. -2021-08-31 09:39:48 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform sonarr is taking over 10 seconds. -2021-08-31 09:39:48 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Philips hue' for hue integration not ready yet: Error connecting to the Hue bridge at 192.168.86.44; Retrying in background -2021-08-31 10:23:56 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-08-31 10:38:26 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-08-31 10:54:26 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-08-31 11:25:26 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-08-31 11:27:26 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-08-31 14:48:18 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.home_temperature is taking over 10 seconds -2021-08-31 14:48:38 WARNING (MainThread) [homeassistant.components.sensor] Updating ecobee sensor took longer than the scheduled update interval 0:00:30 -2021-08-31 14:48:39 ERROR (SyncWorker_4) [pyecobee] Connection to ecobee timed out while attempting to refresh tokens. Possible connectivity outage. -2021-08-31 14:48:39 ERROR (MainThread) [homeassistant.components.ecobee] Error refreshing ecobee tokens -2021-08-31 14:51:18 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.home_temperature is taking over 10 seconds -2021-08-31 14:51:38 WARNING (MainThread) [homeassistant.components.sensor] Updating ecobee sensor took longer than the scheduled update interval 0:00:30 -2021-08-31 14:51:39 ERROR (SyncWorker_14) [pyecobee] Connection to ecobee timed out while attempting to refresh tokens. Possible connectivity outage. -2021-08-31 14:51:39 ERROR (MainThread) [homeassistant.components.ecobee] Error refreshing ecobee tokens -2021-08-31 14:54:18 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.home_temperature is taking over 10 seconds -2021-08-31 14:54:38 WARNING (MainThread) [homeassistant.components.sensor] Updating ecobee sensor took longer than the scheduled update interval 0:00:30 -2021-08-31 14:54:39 ERROR (SyncWorker_4) [pyecobee] Connection to ecobee timed out while attempting to refresh tokens. Possible connectivity outage. -2021-08-31 14:54:39 ERROR (MainThread) [homeassistant.components.ecobee] Error refreshing ecobee tokens -2021-08-31 14:57:18 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.home_temperature is taking over 10 seconds -2021-08-31 23:40:00 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-01 00:49:31 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 01:49:31 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 02:49:31 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 03:16:01 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 03:51:01 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 04:49:31 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 06:49:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 07:49:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 08:49:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 09:49:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 10:49:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 11:36:39 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-01 12:30:56 WARNING (MainThread) [homeassistant.helpers.entity] Update of sensor.home_temperature is taking over 10 seconds -2021-09-01 12:30:57 ERROR (SyncWorker_3) [pyecobee] Error requesting authorization from ecobee: 525: {} -2021-09-01 12:30:57 ERROR (MainThread) [homeassistant.components.ecobee] Error refreshing ecobee tokens -2021-09-01 18:01:04 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-01 22:21:55 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-01 23:03:29 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) -2021-09-01 23:03:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') -[SQL: SELECT 1] -(Background on this error at: http://sqlalche.me/e/14/e3q8) +2021-10-16 12:23:15 ERROR (MainThread) [homeassistant.components.sensor] The sonarr platform for the sensor integration does not support platform setup. Please remove it from your config. +2021-10-16 12:23:29 WARNING (MainThread) [homeassistant.config_entries] Config entry 'Philips hue' for hue integration not ready yet: Error connecting to the Hue bridge at 192.168.86.44; Retrying in background +2021-10-16 12:23:29 WARNING (MainThread) [homeassistant.components.sensor] Setup of sensor platform sonarr is taking over 10 seconds. +2021-10-16 12:23:29 WARNING (MainThread) [homeassistant.components.climate] Setup of climate platform ecobee is taking over 10 seconds. +2021-10-16 12:24:25 WARNING (MainThread) [homeassistant.components.zha.core.channels.base] [0x47AD:1:0x0006]: async_initialize: all attempts have failed: [DeliveryError('[0x47ad:1:0x0006]: Message send failure'), DeliveryError('[0x47ad:1:0x0006]: Message send failure'), DeliveryError('[0x47ad:1:0x0006]: Message send failure'), DeliveryError('[0x47ad:1:0x0006]: Message send failure')] +2021-10-16 12:24:26 WARNING (MainThread) [homeassistant.components.zha.core.channels.base] [0x47AD:1:0x0008]: async_initialize: all attempts have failed: [DeliveryError('[0x47ad:1:0x0008]: Message send failure'), DeliveryError('[0x47ad:1:0x0008]: Message send failure'), DeliveryError('[0x47ad:1:0x0008]: Message send failure'), DeliveryError('[0x47ad:1:0x0008]: Message send failure')] +2021-10-16 12:24:26 WARNING (MainThread) [homeassistant.components.zha.core.channels.base] [0x47AD:1:0x0702]: async_initialize: all attempts have failed: [DeliveryError('[0x47ad:1:0x0702]: Message send failure'), DeliveryError('[0x47ad:1:0x0702]: Message send failure'), DeliveryError('[0x47ad:1:0x0702]: Message send failure'), DeliveryError('[0x47ad:1:0x0702]: Message send failure')] +2021-10-16 13:46:14 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-16 13:46:14 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-18 15:16:17 ERROR (SyncWorker_8) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) +2021-10-18 15:16:47 ERROR (SyncWorker_5) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context - self.dialect.do_execute( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute - cursor.execute(statement, parameters) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 206, in execute - res = self._query(query) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 319, in _query - db.query(q) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 259, in query - _mysql.connection.query(self, query) -MySQLdb._exceptions.OperationalError: (1927, 'Connection was killed') + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'sensor.0x00158d0006f39e88_click' -The above exception was the direct cause of the following exception: +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'sensor.0x00158d0006f39e88_battery' +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1162, in scalar - return self.execute(object_, *multiparams, **params).scalar() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1262, in execute - return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/sql/elements.py", line 324, in _execute_on_connection - return connection._execute_clauseelement( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1451, in _execute_clauseelement - ret = self._execute_context( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1813, in _execute_context - self._handle_dbapi_exception( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1994, in _handle_dbapi_exception - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 1770, in _execute_context - self.dialect.do_execute( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 717, in do_execute - cursor.execute(statement, parameters) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 206, in execute - res = self._query(query) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/cursors.py", line 319, in _query - db.query(q) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 259, in query - _mysql.connection.query(self, query) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') -[SQL: SELECT 1] -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:03:45 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:03:48 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:03:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:03:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:03:56 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Error occurred while communicating with API -2021-09-01 23:03:57 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:04:00 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:04:19 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'sensor.0x00158d0006f39e88_battery' +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:04:22 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:04:25 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:04:25 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:04:28 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:04:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'sensor.0x00158d0006f39e88_action' -The above exception was the direct cause of the following exception: +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:04:45 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:04:48 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:04:48 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:04:51 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:04:54 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:04:57 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:05:06 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:29:51 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'sensor.0x00158d0006f39e88_action' +2021-10-18 15:29:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:29:58 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:29:58 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:29:58 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:29:58 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.click }}' +2021-10-18 15:29:58 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.battery }}' +2021-10-18 15:29:58 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.action }}' +2021-10-18 15:30:23 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:05:22 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:05:25 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:05:25 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:05:28 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:05:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:05:47 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:05:50 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:05:50 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:05:53 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:05:54 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:05:57 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:06:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:06:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:06:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:06:25 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:06:28 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:06:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:06:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:06:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:07:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:30:24 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:07:04 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:07:07 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:07:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:07:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:07:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:30:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:38 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:38 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:30:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:08 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:31:08 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:31:08 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:31:08 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.click }}' +2021-10-18 15:31:08 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.battery }}' +2021-10-18 15:31:08 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.action }}' +2021-10-18 15:31:08 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:31:08 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:31:08 WARNING (MainThread) [homeassistant.components.mqtt.mixins] Erroneous JSON: +2021-10-18 15:31:08 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.click }}' +2021-10-18 15:31:08 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.battery }}' +2021-10-18 15:31:08 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.action }}' +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:07:34 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:07:37 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:07:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:07:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:08:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:08:04 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:08:07 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:08:18 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:08:21 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:08:21 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:08:24 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:08:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:08:34 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:08:37 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:08:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:08:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:09:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:09:05 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:09:08 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:09:14 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:09:17 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:09:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:09:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:09:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 15:31:09 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 15:31:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:44 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:44 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:31:58 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:32:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:33:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:33:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:33:58 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:37:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:37:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:38:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:39:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:41:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:42:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:47:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:47:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:48:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:50:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:52:05 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:56:47 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:57:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:58:35 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:59:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 15:59:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:00:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:13 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:13 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:02:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:03:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:04:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:05:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:05:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:06:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:06:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:06:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:06:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:06:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:07:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:07:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:07:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:07:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:16:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:17:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:21:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:21:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:21:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:21:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:22:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:22:13 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:35:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:35:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:56:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 16:58:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 17:48:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 18:04:27 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:09:36 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:09:39 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:09:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:09:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:10:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 18:04:27 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 18:04:27 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:10:06 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:10:09 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:10:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:10:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:10:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 18:04:49 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 18:04:49 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:10:36 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:10:39 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:10:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:10:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:11:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-18 18:04:49 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-18 18:04:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 18:09:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 18:09:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 18:59:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 19:49:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 20:39:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 21:29:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 21:59:58 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 22:45:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 22:45:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 22:46:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 23:21:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 23:21:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-18 23:26:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 00:16:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 01:06:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 01:41:23 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 02:31:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 03:21:38 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 04:11:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 05:01:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 05:52:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 06:42:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 07:32:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 08:22:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 09:12:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 09:46:15 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-19 09:51:29 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 09:51:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 10:07:15 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-19 10:41:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 11:31:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 12:21:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 13:12:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 13:57:27 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 13:57:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 14:47:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 15:37:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 15:41:38 ERROR (SyncWorker_0) [pyecobee] Error from ecobee while attempting to get thermostats: 521: {} +2021-10-19 16:27:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 17:17:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 18:08:05 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 18:58:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 19:48:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 20:38:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 21:28:27 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 22:18:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 22:33:59 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-19 23:08:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-19 23:58:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 00:48:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 01:12:23 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 02:02:32 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 02:20:00 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-20 02:52:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 03:42:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 04:32:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 05:22:58 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 06:13:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 07:03:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 07:53:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 08:43:32 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 09:33:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 09:38:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 10:28:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 11:18:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 12:08:44 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 12:58:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 13:31:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:11:07 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:11:10 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:11:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:11:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:11:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: +2021-10-20 13:31:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' +2021-10-20 13:31:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:11:38 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:11:41 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:11:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:11:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:12:00 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:12:00 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:12:00 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:12:00 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:12:00 WARNING (Recorder) [homeassistant.components.recorder.util] Error executing statistics: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:12:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:12:15 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:12:18 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:12:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:12:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:12:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:12:44 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:12:47 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:12:47 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:12:50 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:12:50 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:12:53 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:12:53 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:12:56 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:13:03 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:13:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:13:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:13:22 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:13:25 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:13:33 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -Traceback (most recent call last): - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event - self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive - self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection - return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind - return self._transaction._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind - conn = bind.connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect - return self._connection_cls(self, close_with_result=close_with_result) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ - else engine.raw_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection - return self._wrap_pool_connect(self.pool.connect, _connection) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect - Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection - util.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect - return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect - return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout - fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout - rec._checkin_failed(err, _fairy_was_created=False) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout - dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 546, in get_connection - self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect - pool.logger.debug("Error on connect(): %s", e) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ - compat.raise_( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ - raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect - connection = pool._invoke_creator(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect - return dialect.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect - return self.dbapi.connect(*cargs, **cparams) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect - return Connection(*args, **kwargs) - File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ - super().__init__(*args, **kwargs2) -sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-01 23:13:43 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:13:46 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:13:49 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:13:52 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:13:52 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:13:55 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:13:59 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:14:02 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:14:02 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:14:05 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:14:05 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:14:08 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-01 23:14:08 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-01 23:14:11 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover - self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event - self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry - self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session - self.event_session.commit() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit - self._transaction.commit(_to_root=self.future) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit - self._assert_active(prepared_ok=True) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active - raise sa_exc.PendingRollbackError( -sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-02 01:08:54 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-02 01:08:54 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-02 03:09:43 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-02 03:09:43 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-02 12:45:17 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-02 12:45:17 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-02 22:42:12 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-03 21:12:58 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-04 10:43:58 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-04 18:59:19 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-04 22:00:32 ERROR (Recorder) [homeassistant.components.recorder] Database connection invalidated: Error executing query: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +2021-10-20 13:31:55 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-10-20 13:32:24 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Error occurred while communicating with API +2021-10-20 13:32:25 ERROR (Recorder) [homeassistant.components.recorder] Database connection invalidated: Error executing query: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') [SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] -[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 9, 5, 2, 0, 31, 381563, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 9, 5, 2, 0, 31, 381563, tzinfo=datetime.timezone.utc), 'b63c6ee7cf83ba985f0f87f610e4918c', None, None)] -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-04 22:00:35 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 20, 17, 32, 24, 498179, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 20, 17, 32, 24, 498179, tzinfo=datetime.timezone.utc), 'de44a0613d10ab95c1dd3d211c8c45af', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:32:28 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') [SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] -[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 9, 5, 2, 0, 31, 381563, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 9, 5, 2, 0, 31, 381563, tzinfo=datetime.timezone.utc), 'b63c6ee7cf83ba985f0f87f610e4918c', None, None)] -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 20, 17, 32, 24, 498179, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 20, 17, 32, 24, 498179, tzinfo=datetime.timezone.utc), 'de44a0613d10ab95c1dd3d211c8c45af', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session self.event_session.commit() File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit self._transaction.commit(_to_root=self.future) @@ -3214,34 +487,34 @@ Traceback (most recent call last): raise sa_exc.PendingRollbackError( sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') [SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] -[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 9, 5, 2, 0, 31, 381563, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 9, 5, 2, 0, 31, 381563, tzinfo=datetime.timezone.utc), 'b63c6ee7cf83ba985f0f87f610e4918c', None, None)] -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-04 22:00:35 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 20, 17, 32, 24, 498179, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 20, 17, 32, 24, 498179, tzinfo=datetime.timezone.utc), 'de44a0613d10ab95c1dd3d211c8c45af', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:32:28 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout rec._checkin_failed(err, _fairy_was_created=False) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ compat.raise_( File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 574, in get_connection + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect pool.logger.debug("Error on connect(): %s", e) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ compat.raise_( File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect connection = pool._invoke_creator(self) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect return dialect.connect(*cargs, **cparams) @@ -3256,15 +529,15 @@ MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on ' The above exception was the direct cause of the following exception: Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 747, in _process_one_event + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event self._send_keep_alive() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 886, in _send_keep_alive + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive self.event_session.connection().scalar(select([1])) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1516, in connection + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection return self._connection_for_bind( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1526, in _connection_for_bind + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind return self._transaction._connection_for_bind( File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind conn = bind.connect() @@ -3276,33 +549,33 @@ Traceback (most recent call last): return self._wrap_pool_connect(self.pool.connect, _connection) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect Connection._handle_dbapi_exception_noconnection( - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2068, in _handle_dbapi_exception_noconnection + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection util.raise_( File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ raise exception File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect return fn() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 301, in connect + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect return _ConnectionFairy._checkout(self) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 761, in _checkout + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout fairy = _ConnectionRecord.checkout(pool) - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 424, in checkout + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout rec._checkin_failed(err, _fairy_was_created=False) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ compat.raise_( File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 421, in checkout + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout dbapi_connection = rec.get_connection() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 574, in get_connection + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection self.__connect() - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect pool.logger.debug("Error on connect(): %s", e) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ compat.raise_( File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ raise exception - File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 599, in __connect + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect connection = pool._invoke_creator(self) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect return dialect.connect(*cargs, **cparams) @@ -3313,19 +586,19 @@ Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ super().__init__(*args, **kwargs2) sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) -2021-09-04 22:00:38 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-04 22:00:41 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:33:55 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:33:58 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session self.event_session.commit() File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit self._transaction.commit(_to_root=self.future) @@ -3334,19 +607,19 @@ Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active raise sa_exc.PendingRollbackError( sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-04 22:00:44 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) -2021-09-04 22:00:47 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:33:58 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:34:01 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) Traceback (most recent call last): - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 632, in _process_one_event_or_recover + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover self._process_one_event(event) - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 752, in _process_one_event + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event self._commit_event_session_or_retry() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 815, in _commit_event_session_or_retry + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry self._commit_event_session() - File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 841, in _commit_event_session + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session self.event_session.commit() File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit self._transaction.commit(_to_root=self.future) @@ -3355,23 +628,4742 @@ Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active raise sa_exc.PendingRollbackError( sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") -(Background on this error at: http://sqlalche.me/e/14/e3q8) (Background on this error at: http://sqlalche.me/e/14/7s2a) -2021-09-05 06:03:02 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-05 22:21:57 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-05 22:21:57 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-05 22:39:24 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-05 23:50:54 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 12:34:58 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 15:27:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 15:50:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 15:56:59 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 15:59:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 16:01:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 16:18:59 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 16:38:59 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 17:29:59 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 17:41:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API -2021-09-06 19:42:49 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data -2021-09-06 19:42:49 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data -2021-09-06 20:49:41 ERROR (MainThread) [homeassistant.components.hassio.handler] Client error on /core/update request Server disconnected -2021-09-06 20:49:41 ERROR (MainThread) [homeassistant.components.hassio] Failed to to call /core/update - +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:34:01 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:34:05 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:34:05 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:34:08 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:34:11 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:34:11 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:34:14 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:34:17 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:34:17 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:34:20 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:34:20 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:34:26 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:34:29 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:34:30 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:34:55 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:34:58 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:34:58 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:35:10 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:35:10 WARNING (Recorder) [homeassistant.components.recorder.util] Error executing statistics: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:35:25 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:35:28 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:35:28 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:35:55 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:35:58 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:35:58 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:36:15 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:36:18 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:36:26 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:36:39 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:36:42 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:36:54 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:36:57 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:36:57 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:37:00 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:37:00 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:37:11 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:37:14 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:37:19 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:37:22 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:37:25 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:37:28 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:37:28 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:37:45 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:37:48 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:37:55 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:37:58 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:37:58 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:38:25 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:38:28 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:38:28 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:38:55 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:38:58 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:38:58 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:39:26 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:39:55 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-20 13:39:58 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-20 13:39:58 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:40:10 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:40:10 WARNING (Recorder) [homeassistant.components.recorder.util] Error executing statistics: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-20 13:40:39 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-20 13:40:39 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-20 13:40:39 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-20 13:41:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 13:49:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 14:39:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 15:29:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 16:19:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 17:09:35 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 17:59:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 18:49:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 19:40:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 20:30:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 21:19:02 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-20 21:20:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 22:10:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 23:00:29 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-20 23:13:32 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-20 23:13:32 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-20 23:16:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 00:06:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 00:56:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 01:46:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 02:36:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 02:37:30 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-21 02:39:31 ERROR (SyncWorker_0) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-21 02:41:00 ERROR (SyncWorker_3) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) +2021-10-21 02:42:31 ERROR (SyncWorker_8) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-21 02:45:31 ERROR (SyncWorker_5) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-21 03:26:47 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 04:16:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 05:06:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 05:57:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 06:47:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 07:37:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 08:25:40 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-21 08:27:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 09:16:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 10:06:25 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 10:56:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 11:46:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 12:36:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 13:27:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 14:17:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 15:07:15 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 15:11:54 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-21 15:57:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 16:47:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 17:18:42 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-21 17:37:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 18:27:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 19:17:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 19:51:38 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-21 19:59:08 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-21 20:08:05 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 20:17:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 21:07:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 21:54:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 22:44:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-21 23:34:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 00:25:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 00:28:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 01:18:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 01:22:09 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-22 01:22:09 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-22 02:08:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 02:58:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 03:49:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 04:39:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 05:29:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 06:19:19 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 07:09:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 07:24:45 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-22 07:24:45 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-22 07:59:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 08:49:40 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 09:39:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 10:28:41 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-22 10:29:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 11:20:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 12:10:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 13:00:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 13:50:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 14:40:32 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 15:30:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 16:20:34 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-22 16:20:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 17:10:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 18:01:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 18:51:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 19:14:44 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-22 19:41:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 19:44:20 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-22 20:31:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 21:10:53 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-22 21:21:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 22:11:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 23:01:44 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-22 23:51:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 00:42:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 01:32:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 02:22:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 03:12:25 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 04:02:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 04:52:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 05:42:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 06:33:05 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 07:23:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 08:13:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 09:03:27 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 09:53:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 10:43:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 11:33:54 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 12:24:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 13:14:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 14:04:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 14:54:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 15:44:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 16:34:35 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 17:24:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 17:52:55 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-23 17:52:55 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-23 18:14:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 19:04:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 19:55:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 20:45:15 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 21:35:25 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 22:00:42 ERROR (Recorder) [homeassistant.components.recorder] Database connection invalidated: Error executing query: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 24, 2, 0, 41, 422486, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 24, 2, 0, 41, 422486, tzinfo=datetime.timezone.utc), '4eddd896469cede3c38a93389c063b39', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-23 22:00:45 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 24, 2, 0, 41, 422486, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 24, 2, 0, 41, 422486, tzinfo=datetime.timezone.utc), '4eddd896469cede3c38a93389c063b39', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 24, 2, 0, 41, 422486, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 24, 2, 0, 41, 422486, tzinfo=datetime.timezone.utc), '4eddd896469cede3c38a93389c063b39', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-23 22:00:56 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-23 22:01:12 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-23 22:01:15 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-23 22:01:26 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-23 22:25:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-23 23:15:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 00:05:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 00:55:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 01:46:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 02:36:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 03:26:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 03:57:14 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-24 04:16:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 05:06:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 05:56:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 06:03:38 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-24 06:46:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 07:37:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 07:58:58 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-24 08:27:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 09:17:23 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 10:07:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 10:57:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 11:47:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 12:37:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 13:28:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 14:18:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 15:08:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 15:09:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 15:59:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 16:49:38 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 17:39:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 18:29:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 19:19:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 20:10:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 21:00:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 21:44:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 21:44:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 22:11:56 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-24 22:11:56 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-24 22:35:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 22:38:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 22:38:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-24 22:48:03 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-24 22:48:03 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-24 23:28:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 00:18:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 01:08:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 01:36:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 02:27:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 02:38:57 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-25 03:17:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 04:07:15 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 04:57:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 05:47:32 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 06:37:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 07:27:47 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 08:17:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 09:08:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 09:19:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-25 09:58:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 10:48:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 11:38:21 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 12:28:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 13:18:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 14:08:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 14:58:54 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 15:49:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 16:39:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 17:29:13 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 18:19:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 18:48:42 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-25 19:09:25 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 19:59:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 20:49:38 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 21:39:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 22:29:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 23:20:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-25 23:50:31 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-26 00:10:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 01:00:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 01:01:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 01:51:25 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 02:41:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 03:31:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 04:21:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 05:11:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 06:02:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 06:52:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 07:42:19 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 08:32:29 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 09:22:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 09:24:55 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-26 10:12:44 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 11:02:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 11:52:54 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 12:43:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 13:33:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 14:23:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 15:13:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 15:38:48 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-26 15:38:48 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-26 16:03:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 16:53:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 17:03:14 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-26 17:43:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 18:33:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 19:07:05 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-26 19:14:05 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-26 19:23:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 20:14:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 21:04:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 21:54:25 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 22:02:08 WARNING (MainThread) [homeassistant.components.websocket_api.http.connection] [1721088584] Disconnected: Did not receive auth message within 10 seconds +2021-10-26 22:44:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-26 23:34:44 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 00:24:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 01:15:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 01:42:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 02:32:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 03:22:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 03:22:35 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-27 04:12:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 05:02:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 05:52:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 06:42:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 07:32:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 08:23:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 08:59:58 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 09:25:09 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-27 09:50:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 10:40:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 11:30:19 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 12:16:10 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-27 12:20:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 13:10:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 13:21:10 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-27 13:45:10 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-27 14:00:40 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 14:15:41 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-27 14:50:47 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 15:27:44 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-27 15:27:45 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-27 15:40:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 16:31:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 17:21:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 18:11:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 19:01:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 19:51:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 20:41:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 21:05:56 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-27 21:31:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 22:21:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-27 23:12:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 00:02:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 00:44:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 01:34:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 01:56:06 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-28 02:24:21 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 03:14:27 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 03:46:43 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 03:48:43 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 04:04:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 04:54:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 05:44:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 06:34:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 07:25:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 08:15:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 09:05:27 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 09:55:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 10:21:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 10:33:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 10:39:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 10:45:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 10:55:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:05:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:09:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:16:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:27:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:35:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 11:40:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:45:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:49:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 11:58:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 12:02:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 12:08:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 12:18:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 12:20:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 12:26:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 12:35:20 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-10-28 12:35:20 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-10-28 12:36:21 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-10-28 12:37:23 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-10-28 12:38:27 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-10-28 12:38:35 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:38:35 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:38:35 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:39:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 12:39:34 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-10-28 12:39:34 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:39:34 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:39:34 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:39:35 ERROR (Recorder) [homeassistant.components.recorder] Database connection invalidated: Error executing query: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:39:38 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : Can't reconnect until invalid transaction is rolled back. (Background on this error at: https://sqlalche.me/e/14/8s2b) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 836, in commit + trans.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2330, in commit + self._do_commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2529, in _do_commit + self.connection._invalid_transaction() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 532, in _invalid_transaction + raise exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: Can't reconnect until invalid transaction is rolled back. (Background on this error at: https://sqlalche.me/e/14/8s2b) +2021-10-28 12:39:38 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:39:41 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:39:56 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:40:04 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:40:07 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:40:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 12:40:28 ERROR (Recorder) [homeassistant.components.recorder.util] Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:40:28 WARNING (Recorder) [homeassistant.components.recorder.util] Error executing statistics: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:40:31 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:40:34 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:40:35 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:40:38 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:40:41 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:40:41 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:40:44 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:40:56 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:41:03 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:41:06 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:41:06 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:41:09 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:41:28 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:41:34 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:41:37 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:41:56 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:42:04 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:42:07 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:42:26 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:42:34 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:42:37 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:42:56 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:43:04 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:43:07 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:43:20 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:43:23 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:43:26 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:43:34 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:43:37 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:43:56 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 552, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-28 12:44:04 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-28 12:44:07 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-28 12:45:43 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:45:43 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:45:43 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-10-28 12:46:15 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 13:16:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 13:16:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 14:06:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 14:56:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 15:46:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 16:36:40 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 16:42:17 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-28 16:50:15 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 16:57:15 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-28 17:26:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 18:16:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 19:07:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 19:57:13 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 20:47:19 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 21:37:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 22:27:32 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-28 22:49:10 ERROR (SyncWorker_7) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-28 22:50:08 ERROR (SyncWorker_10) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) +2021-10-28 22:52:10 ERROR (SyncWorker_3) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-28 22:55:10 ERROR (SyncWorker_10) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-28 23:03:29 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-28 23:17:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 00:07:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 00:23:23 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-29 00:23:23 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-29 00:32:46 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 00:37:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 00:39:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 00:57:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 01:12:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 01:24:46 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 01:40:46 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 01:44:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 01:49:22 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-29 01:49:23 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-29 02:03:06 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 02:15:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:20:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:23:46 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:25:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:27:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:31:46 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:48:16 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:52:46 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 02:53:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 02:56:50 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-29 02:58:09 ERROR (SyncWorker_4) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) +2021-10-29 02:58:10 ERROR (SyncWorker_5) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:01:10 ERROR (SyncWorker_4) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:04:10 ERROR (SyncWorker_13) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:04:39 ERROR (MainThread) [metno] Access to https://aa015h6buqvih86i1.api.met.no/weatherapi/locationforecast/2.0/complete returned error 'ClientConnectorError' +2021-10-29 03:07:10 ERROR (SyncWorker_6) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:10:10 ERROR (SyncWorker_9) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:13:10 ERROR (SyncWorker_7) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:16:10 ERROR (SyncWorker_0) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:19:10 ERROR (SyncWorker_2) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 03:36:17 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 03:37:17 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-29 03:43:19 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 04:33:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 05:23:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 06:13:40 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 07:03:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 07:53:58 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 08:44:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 09:34:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 09:45:34 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-29 10:24:21 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 11:14:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 12:04:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 12:54:44 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 13:44:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 14:29:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 14:29:40 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 15:19:47 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 16:09:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 17:00:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 17:07:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 17:57:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 18:47:21 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 19:37:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 20:27:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 21:17:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 22:07:53 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 22:20:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 22:24:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 22:25:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 23:10:43 ERROR (SyncWorker_0) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 23:12:43 ERROR (SyncWorker_1) [homeassistant.components.darksky.weather] Unable to connect to Dark Sky. HTTPSConnectionPool(host='api.darksky.net', port=443): Max retries exceeded with url: /forecast/19b4b95365ea88c65b085805ef046ba0/41.469249,-81.713146?units=us&lang=en (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -3] Try again')) +2021-10-29 23:13:43 ERROR (SyncWorker_3) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-29 23:13:48 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-29 23:15:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-29 23:16:43 ERROR (SyncWorker_4) [pyecobee] Error connecting to ecobee while attempting to get thermostats. Possible connectivity outage. +2021-10-30 00:05:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 00:55:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 01:45:35 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 02:06:50 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-30 02:16:13 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 03:06:25 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 03:56:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 04:32:51 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-30 04:46:38 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 05:36:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 06:26:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 07:16:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 08:07:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 08:57:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 09:47:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 10:37:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 11:27:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 12:17:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 13:07:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 13:58:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 14:48:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 15:38:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 16:28:24 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 17:18:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 18:08:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 18:58:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 19:48:57 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 20:39:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 21:29:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 22:00:44 ERROR (Recorder) [homeassistant.components.recorder] Database connection invalidated: Error executing query: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 31, 2, 0, 43, 364194, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 31, 2, 0, 43, 364194, tzinfo=datetime.timezone.utc), '0777fa2ffcaf447c410795828ff43618', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-30 22:00:47 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 31, 2, 0, 43, 364194, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 31, 2, 0, 43, 364194, tzinfo=datetime.timezone.utc), '0777fa2ffcaf447c410795828ff43618', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (1927, 'Connection was killed') +[SQL: INSERT INTO events (event_type, event_data, origin, time_fired, created, context_id, context_user_id, context_parent_id) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)] +[parameters: ('state_changed', '{}', 'LOCAL', datetime.datetime(2021, 10, 31, 2, 0, 43, 364194, tzinfo=datetime.timezone.utc), datetime.datetime(2021, 10, 31, 2, 0, 43, 364194, tzinfo=datetime.timezone.utc), '0777fa2ffcaf447c410795828ff43618', None, None)] +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-30 22:00:47 ERROR (Recorder) [homeassistant.components.recorder] Error in database connectivity during commit: Error executing query: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8). (retrying in 3 seconds) +2021-10-30 22:00:50 ERROR (Recorder) [homeassistant.components.recorder] SQLAlchemyError error processing event : This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 811, in _process_one_event + self._commit_event_session_or_retry() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 874, in _commit_event_session_or_retry + self._commit_event_session() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 900, in _commit_event_session + self.event_session.commit() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1428, in commit + self._transaction.commit(_to_root=self.future) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 827, in commit + self._assert_active(prepared_ok=True) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 601, in _assert_active + raise sa_exc.PendingRollbackError( +sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) (Background on this error at: https://sqlalche.me/e/14/7s2a) +2021-10-30 22:00:57 ERROR (Recorder) [homeassistant.components.recorder] Unhandled database error while processing event : (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") + +The above exception was the direct cause of the following exception: + +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 683, in _process_one_event_or_recover + self._process_one_event(event) + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 806, in _process_one_event + self._send_keep_alive() + File "/usr/src/homeassistant/homeassistant/components/recorder/__init__.py", line 945, in _send_keep_alive + self.event_session.connection().scalar(select([1])) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1519, in connection + return self._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1529, in _connection_for_bind + return self._transaction._connection_for_bind( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 747, in _connection_for_bind + conn = bind.connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3166, in connect + return self._connection_cls(self, close_with_result=close_with_result) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 96, in __init__ + else engine.raw_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3245, in raw_connection + return self._wrap_pool_connect(self.pool.connect, _connection) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3215, in _wrap_pool_connect + Connection._handle_dbapi_exception_noconnection( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 2069, in _handle_dbapi_exception_noconnection + util.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3212, in _wrap_pool_connect + return fn() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 307, in connect + return _ConnectionFairy._checkout(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 767, in _checkout + fairy = _ConnectionRecord.checkout(pool) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 430, in checkout + rec._checkin_failed(err, _fairy_was_created=False) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 427, in checkout + dbapi_connection = rec.get_connection() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 580, in get_connection + self.__connect() + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 611, in __connect + pool.logger.debug("Error on connect(): %s", e) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__ + compat.raise_( + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 207, in raise_ + raise exception + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 605, in __connect + connection = pool._invoke_creator(self) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/create.py", line 578, in connect + return dialect.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 584, in connect + return self.dbapi.connect(*cargs, **cparams) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/__init__.py", line 130, in Connect + return Connection(*args, **kwargs) + File "/usr/local/lib/python3.9/site-packages/MySQLdb/connections.py", line 185, in __init__ + super().__init__(*args, **kwargs2) +sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2002, "Can't connect to MySQL server on '192.168.86.198' (115)") +(Background on this error at: https://sqlalche.me/e/14/e3q8) +2021-10-30 22:19:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 23:09:29 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-30 23:59:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 00:49:43 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 01:39:54 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 02:30:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 03:20:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 03:48:25 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-10-31 04:10:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 05:00:23 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 05:50:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 06:40:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 07:30:52 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 08:20:59 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 09:11:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 10:01:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 10:51:27 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 11:15:12 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-31 11:15:13 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-10-31 11:41:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 12:31:42 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 12:32:57 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-10-31 12:58:46 WARNING (MainThread) [homeassistant.helpers.entity] Updating state for weather.amherst () took 0.723 seconds. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+darksky%22 +2021-10-31 13:21:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 14:11:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 15:02:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 15:52:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 16:42:29 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 17:32:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 18:22:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 19:12:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 20:03:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 20:25:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 21:15:19 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 22:05:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 22:55:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-10-31 23:45:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 00:35:54 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 00:54:23 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-11-01 00:54:23 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-11-01 01:10:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 01:38:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 02:00:48 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 02:38:29 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 02:50:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 03:10:22 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-11-01 03:41:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 04:31:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 04:38:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 05:21:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 05:38:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 06:11:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 06:38:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 07:01:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 07:38:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 07:51:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 08:27:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 08:28:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 08:31:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 08:41:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 09:03:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 09:12:51 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-11-01 09:38:30 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 09:53:23 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 10:43:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 11:33:40 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 11:38:31 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 11:58:31 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 12:01:01 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 12:23:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 13:13:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 14:04:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 14:54:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 15:44:17 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 16:34:28 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 17:24:34 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 17:38:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 18:14:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 19:04:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 19:38:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 19:54:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 20:38:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 20:45:02 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 21:35:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 21:38:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 22:15:02 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 22:25:14 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 22:49:32 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-01 23:14:10 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:14:10 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:14:17 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:14:17 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:14:17 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:16:17 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:16:17 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:16:29 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:16:29 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:16:29 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:17:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 23:19:31 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:19:31 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:19:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:19:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:19:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:20:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-01 23:22:57 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:22:57 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:23:58 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:25:00 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:26:05 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:27:13 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:28:29 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:30:01 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:32:05 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:35:05 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:38:05 WARNING (Thread-3) [homeassistant.components.mqtt] Disconnected from MQTT server 192.168.86.198:1888 (1) +2021-11-01 23:55:05 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:55:05 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:55:05 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'online' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-01 23:55:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 00:05:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 00:27:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:30:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:36:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:40:33 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:43:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:44:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:47:33 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:53:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:54:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 00:55:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 00:58:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:01:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:02:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:07:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:08:33 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:09:33 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:11:03 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:13:33 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 01:45:50 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 02:36:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 03:26:05 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 04:16:15 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 04:54:33 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 05:06:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 05:51:34 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 05:56:36 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 06:46:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 07:36:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 08:27:08 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 09:17:20 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 10:07:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 10:28:43 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-11-02 10:57:38 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 11:47:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 12:37:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 13:28:00 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 14:18:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 15:08:13 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 15:58:23 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 16:48:29 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 17:38:33 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 18:28:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 19:18:46 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 20:08:56 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 20:10:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 21:00:18 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 21:50:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 22:40:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-02 22:43:40 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-02 23:30:47 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 00:20:55 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 00:48:21 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.home is taking over 10 seconds +2021-11-03 01:11:03 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 02:01:09 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 02:51:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 03:06:21 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.home is taking over 10 seconds +2021-11-03 03:06:41 ERROR (SyncWorker_0) [pyecobee] Connection to ecobee timed out while attempting to get thermostats. Possible connectivity outage. +2021-11-03 03:09:21 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.home is taking over 10 seconds +2021-11-03 03:09:41 ERROR (SyncWorker_2) [pyecobee] Connection to ecobee timed out while attempting to get thermostats. Possible connectivity outage. +2021-11-03 03:12:21 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.home is taking over 10 seconds +2021-11-03 03:12:41 ERROR (SyncWorker_0) [pyecobee] Connection to ecobee timed out while attempting to get thermostats. Possible connectivity outage. +2021-11-03 03:15:21 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.home is taking over 10 seconds +2021-11-03 03:15:41 ERROR (SyncWorker_5) [pyecobee] Connection to ecobee timed out while attempting to get thermostats. Possible connectivity outage. +2021-11-03 03:18:21 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.home is taking over 10 seconds +2021-11-03 03:18:41 ERROR (SyncWorker_0) [pyecobee] Connection to ecobee timed out while attempting to get thermostats. Possible connectivity outage. +2021-11-03 03:21:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'mappingproxy object' has no attribute 'hvac_action' when rendering '{{ states.climate.home.attributes.hvac_action }}' +2021-11-03 03:21:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'mappingproxy object' has no attribute 'preset_mode' when rendering '{{ states.climate.home.attributes.preset_mode }}' +2021-11-03 03:21:12 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'mappingproxy object' has no attribute 'climate_mode' when rendering '{{ states.climate.home.attributes.climate_mode }}' +2021-11-03 03:41:23 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 03:49:41 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 03:51:41 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 04:31:30 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 05:21:39 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 06:11:47 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 07:01:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 07:51:58 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 08:42:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 08:46:42 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 08:47:42 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 09:32:05 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 116, in _command_proxy + await response.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 470, in write + await self._payload_writer.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 107, in write + self._write(chunk) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 116, in _command_proxy + await response.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 470, in write + await self._payload_writer.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 107, in write + self._write(chunk) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 116, in _command_proxy + await response.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 470, in write + await self._payload_writer.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 107, in write + self._write(chunk) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 116, in _command_proxy + await response.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 470, in write + await self._payload_writer.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 107, in write + self._write(chunk) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 116, in _command_proxy + await response.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 470, in write + await self._payload_writer.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 107, in write + self._write(chunk) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 116, in _command_proxy + await response.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 470, in write + await self._payload_writer.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 107, in write + self._write(chunk) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 116, in _command_proxy + await response.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 470, in write + await self._payload_writer.write(data) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 107, in write + self._write(chunk) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 114, in _command_proxy + await response.prepare(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 378, in prepare + return await self._start(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 386, in _start + await self._write_headers() + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 458, in _write_headers + await writer.write_headers(status_line, self._headers) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 119, in write_headers + self._write(buf) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 114, in _command_proxy + await response.prepare(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 378, in prepare + return await self._start(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 386, in _start + await self._write_headers() + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 458, in _write_headers + await writer.write_headers(status_line, self._headers) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 119, in write_headers + self._write(buf) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:11:38 ERROR (MainThread) [aiohttp.server] Error handling request +Traceback (most recent call last): + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request + resp = await self._request_handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle + resp = await handler(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 220, in forwarded_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 144, in auth_middleware + return await handler(request) + File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle + result = await result + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 78, in _handle + return await self._command_proxy(path, request) + File "/usr/src/homeassistant/homeassistant/components/hassio/http.py", line 114, in _command_proxy + await response.prepare(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 378, in prepare + return await self._start(request) + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 386, in _start + await self._write_headers() + File "/usr/local/lib/python3.9/site-packages/aiohttp/web_response.py", line 458, in _write_headers + await writer.write_headers(status_line, self._headers) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 119, in write_headers + self._write(buf) + File "/usr/local/lib/python3.9/site-packages/aiohttp/http_writer.py", line 67, in _write + raise ConnectionResetError("Cannot write to closing transport") +ConnectionResetError: Cannot write to closing transport +2021-11-03 10:22:19 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 11:12:31 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 12:02:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 12:52:45 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 13:42:51 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 14:32:54 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 15:23:01 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 16:13:10 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 17:03:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 17:53:26 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 18:43:37 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 19:31:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 19:33:41 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 19:34:14 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 19:36:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 20:23:49 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 21:13:54 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 21:41:34 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 151, in async_init + flow, result = await task + File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 177, in _async_init + result = await self._async_handle_step(flow, flow.init_step, data, init_done) + File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 256, in _async_handle_step + result: FlowResult = await getattr(flow, method)(user_input) + File "/usr/src/homeassistant/homeassistant/components/ipp/config_flow.py", line 125, in async_step_zeroconf + info = await validate_input(self.hass, self.discovery_info) + File "/usr/src/homeassistant/homeassistant/components/ipp/config_flow.py", line 50, in validate_input + printer = await ipp.printer() + File "/usr/local/lib/python3.9/site-packages/pyipp/ipp.py", line 208, in printer + response_data = await self.execute( + File "/usr/local/lib/python3.9/site-packages/pyipp/ipp.py", line 177, in execute + response = await self._request(data=message) + File "/usr/local/lib/python3.9/site-packages/pyipp/ipp.py", line 146, in _request + return await response.read() + File "/usr/local/lib/python3.9/site-packages/aiohttp/client_reqrep.py", line 1032, in read + self._body = await self.content.read() + File "/usr/local/lib/python3.9/site-packages/aiohttp/streams.py", line 370, in read + block = await self.readany() + File "/usr/local/lib/python3.9/site-packages/aiohttp/streams.py", line 392, in readany + await self._wait("readany") + File "/usr/local/lib/python3.9/site-packages/aiohttp/streams.py", line 306, in _wait + await waiter +aiohttp.client_exceptions.ClientPayloadError: Response payload is not completed +2021-11-03 21:48:18 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 151, in async_init + flow, result = await task + File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 177, in _async_init + result = await self._async_handle_step(flow, flow.init_step, data, init_done) + File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 256, in _async_handle_step + result: FlowResult = await getattr(flow, method)(user_input) + File "/usr/src/homeassistant/homeassistant/components/ipp/config_flow.py", line 125, in async_step_zeroconf + info = await validate_input(self.hass, self.discovery_info) + File "/usr/src/homeassistant/homeassistant/components/ipp/config_flow.py", line 50, in validate_input + printer = await ipp.printer() + File "/usr/local/lib/python3.9/site-packages/pyipp/ipp.py", line 208, in printer + response_data = await self.execute( + File "/usr/local/lib/python3.9/site-packages/pyipp/ipp.py", line 177, in execute + response = await self._request(data=message) + File "/usr/local/lib/python3.9/site-packages/pyipp/ipp.py", line 146, in _request + return await response.read() + File "/usr/local/lib/python3.9/site-packages/aiohttp/client_reqrep.py", line 1032, in read + self._body = await self.content.read() + File "/usr/local/lib/python3.9/site-packages/aiohttp/streams.py", line 370, in read + block = await self.readany() + File "/usr/local/lib/python3.9/site-packages/aiohttp/streams.py", line 392, in readany + await self._wait("readany") + File "/usr/local/lib/python3.9/site-packages/aiohttp/streams.py", line 306, in _wait + await waiter +aiohttp.client_exceptions.ClientPayloadError: Response payload is not completed +2021-11-03 22:04:04 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 22:10:44 ERROR (MainThread) [homeassistant.components.sonarr.sensor] Error communicating with API: Timeout occurred while connecting to API +2021-11-03 22:54:11 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-03 23:40:41 ERROR (MainThread) [homeassistant.components.hue.sensor_base] Timeout fetching sensor data +2021-11-03 23:40:41 ERROR (MainThread) [homeassistant.components.hue.light] Timeout fetching light data +2021-11-03 23:44:16 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-04 00:34:22 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'dict object' has no attribute 'click' when rendering '{{ value_json.click }}' +2021-11-04 01:07:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-04 01:07:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-04 01:07:55 ERROR (MainThread) [homeassistant.util.logging] Exception in availability_message_received when handling msg on 'zigbee2mqtt/bridge/state': 'offline' +Traceback (most recent call last): + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 36, in wrapper + _log_message(msg) + File "/usr/src/homeassistant/homeassistant/components/mqtt/debug_info.py", line 26, in _log_message + messages = debug_info["entities"][entity_id]["subscriptions"][ +KeyError: 'zigbee2mqtt/bridge/state' + +2021-11-04 01:08:06 ERROR (MainThread) [homeassistant.components.hassio.handler] Client error on /host/reboot request Server disconnected +2021-11-04 01:08:06 ERROR (MainThread) [homeassistant.components.hassio] Failed to to call /host/reboot - diff --git a/home-assistant.log.fault b/home-assistant.log.fault new file mode 100644 index 0000000..e69de29 diff --git a/scenes.yaml b/scenes.yaml index e69de29..d3846b8 100644 --- a/scenes.yaml +++ b/scenes.yaml @@ -0,0 +1,177 @@ +- id: '1633716797998' + name: LightsOn + entities: + light.lamp_left: + min_mireds: 153 + max_mireds: 500 + effect_list: + - colorloop + - random + supported_color_modes: + - color_temp + - hs + color_mode: color_temp + brightness: 255 + color_temp: 366 + hs_color: + - 28.327 + - 64.71 + rgb_color: + - 255 + - 167 + - 89 + xy_color: + - 0.524 + - 0.387 + effect: none + friendly_name: Lamp left + supported_features: 63 + state: 'on' + light.lamp_right: + min_mireds: 153 + max_mireds: 500 + effect_list: + - colorloop + - random + supported_color_modes: + - color_temp + - hs + color_mode: color_temp + brightness: 255 + color_temp: 366 + hs_color: + - 28.327 + - 64.71 + rgb_color: + - 255 + - 167 + - 89 + xy_color: + - 0.524 + - 0.387 + effect: none + friendly_name: Lamp right + supported_features: 63 + state: 'on' + light.table: + min_mireds: 153 + max_mireds: 500 + effect_list: + - colorloop + - random + supported_color_modes: + - color_temp + - hs + color_mode: color_temp + brightness: 255 + color_temp: 366 + hs_color: + - 28.327 + - 64.71 + rgb_color: + - 255 + - 167 + - 89 + xy_color: + - 0.524 + - 0.387 + effect: none + friendly_name: Table + supported_features: 63 + state: 'on' + light.sengled_e11_g13_1d3e0b03_level_on_off: + supported_color_modes: + - brightness + color_mode: brightness + brightness: 41 + off_brightness: + friendly_name: Entry Way + supported_features: 41 + state: 'on' + light.sengled_e11_g13_fd3e0b03_level_on_off: + supported_color_modes: + - brightness + color_mode: brightness + brightness: 254 + off_brightness: + friendly_name: Dinning Rom + supported_features: 41 + state: 'on' + light.sengled_e11_g13_ba220b03_level_on_off: + supported_color_modes: + - brightness + color_mode: brightness + brightness: 254 + off_brightness: + friendly_name: Living Room + supported_features: 41 + state: 'on' + light.sengled_e11_g13_d6681403_level_on_off: + supported_color_modes: + - brightness + color_mode: brightness + brightness: 254 + off_brightness: + friendly_name: Office + supported_features: 41 + state: 'on' +- id: '1633716868581' + name: LightsOff + entities: + light.lamp_left: + min_mireds: 153 + max_mireds: 500 + effect_list: + - colorloop + - random + supported_color_modes: + - color_temp + - hs + friendly_name: Lamp left + supported_features: 63 + state: 'off' + light.lamp_right: + min_mireds: 153 + max_mireds: 500 + effect_list: + - colorloop + - random + supported_color_modes: + - color_temp + - hs + friendly_name: Lamp right + supported_features: 63 + state: 'off' + light.table: + min_mireds: 153 + max_mireds: 500 + effect_list: + - colorloop + - random + supported_color_modes: + - color_temp + - hs + friendly_name: Table + supported_features: 63 + state: 'off' + light.sengled_e11_g13_1d3e0b03_level_on_off: + supported_color_modes: + - brightness + off_brightness: + friendly_name: Entry Way + supported_features: 41 + state: 'off' + light.sengled_e11_g13_fd3e0b03_level_on_off: + supported_color_modes: + - brightness + off_brightness: + friendly_name: Dinning Rom + supported_features: 41 + state: 'off' + light.sengled_e11_g13_ba220b03_level_on_off: + supported_color_modes: + - brightness + off_brightness: + friendly_name: Living Room + supported_features: 41 + state: 'off' diff --git a/ui-lovelace.yaml b/ui-lovelace.yaml index 8c5153e..c078664 100644 --- a/ui-lovelace.yaml +++ b/ui-lovelace.yaml @@ -17,7 +17,8 @@ views: - type: entities entities: - - switch.linear_nortek_security_control_llc_ps15z_2_plug_in_appliance_module_switch + - switch.plug_in_appliance_module + - switch.sonoff_s31_lite_zb_9478b723_on_off - light.table - light.lamp_left - light.lamp_right @@ -27,7 +28,7 @@ views: - light.sengled_e11_g13_fd3e0b03_level_on_off - type: entity-filter entities: - - device_tracker.dan_dansphone + - device_tracker.sm_n960u - sensor.dan - sensor.guest state_filter: @@ -101,3 +102,9 @@ views: # - automation.set_home_mode - type: thermostat entity: climate.home + - title: Grow + cards: + - type: entities + entities: + - switch.ewelink_sa_003_zigbee_33eeea22_on_off + diff --git a/zigbee.db b/zigbee.db index 36b9e80..8b0bf8e 100644 Binary files a/zigbee.db and b/zigbee.db differ diff --git a/zigbee2mqtt/.configuration.yaml.bk b/zigbee2mqtt/.configuration.yaml.bk new file mode 100644 index 0000000..26ba848 --- /dev/null +++ b/zigbee2mqtt/.configuration.yaml.bk @@ -0,0 +1,54 @@ +{ + "external_converters": [], + "devices": [ + "devices.yaml" + ], + "groups": [ + "groups.yaml" + ], + "homeassistant": true, + "permit_join": true, + "mqtt": { + "base_topic": "zigbee2mqtt", + "server": "mqtt://192.168.86.198:1888", + "user": "hassio", + "password": "1234", + "client_id": "hassio" + }, + "serial": { + "port": "/dev/ttyACM0" + }, + "advanced": { + "log_level": "warn", + "pan_id": 6754, + "channel": 11, + "network_key": [ + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 13 + ], + "availability_blocklist": [], + "availability_passlist": [] + }, + "device_options": {}, + "blocklist": [], + "passlist": [], + "queue": {}, + "frontend": { + "port": 8099 + }, + "experimental": {} +} diff --git a/zigbee2mqtt/configuration.yaml b/zigbee2mqtt/configuration.yaml new file mode 100644 index 0000000..26ba848 --- /dev/null +++ b/zigbee2mqtt/configuration.yaml @@ -0,0 +1,54 @@ +{ + "external_converters": [], + "devices": [ + "devices.yaml" + ], + "groups": [ + "groups.yaml" + ], + "homeassistant": true, + "permit_join": true, + "mqtt": { + "base_topic": "zigbee2mqtt", + "server": "mqtt://192.168.86.198:1888", + "user": "hassio", + "password": "1234", + "client_id": "hassio" + }, + "serial": { + "port": "/dev/ttyACM0" + }, + "advanced": { + "log_level": "warn", + "pan_id": 6754, + "channel": 11, + "network_key": [ + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 13 + ], + "availability_blocklist": [], + "availability_passlist": [] + }, + "device_options": {}, + "blocklist": [], + "passlist": [], + "queue": {}, + "frontend": { + "port": 8099 + }, + "experimental": {} +} diff --git a/zigbee2mqtt/coordinator_backup.json b/zigbee2mqtt/coordinator_backup.json new file mode 100644 index 0000000..68f3331 --- /dev/null +++ b/zigbee2mqtt/coordinator_backup.json @@ -0,0 +1,38 @@ +{ + "metadata": { + "format": "zigpy/open-coordinator-backup", + "version": 1, + "source": "zigbee-herdsman@0.13.145", + "internal": { + "date": "2021-11-04T05:07:56.275Z", + "znpVersion": 0 + } + }, + "stack_specific": { + "zstack": {} + }, + "coordinator_ieee": "00124b001cde5997", + "pan_id": "1a62", + "extended_pan_id": "00124b001cde5997", + "nwk_update_id": 0, + "security_level": 5, + "channel": 11, + "channel_mask": [ + 11 + ], + "network_key": { + "key": "01030507090b0d0f00020406080a0c0d", + "sequence_number": 0, + "frame_counter": 0 + }, + "devices": [ + { + "nwk_address": "2767", + "ieee_address": "00158d00070b32d6" + }, + { + "nwk_address": "bee6", + "ieee_address": "00158d0006f39e88" + } + ] +} \ No newline at end of file diff --git a/zigbee2mqtt/database.db b/zigbee2mqtt/database.db new file mode 100644 index 0000000..131681b --- /dev/null +++ b/zigbee2mqtt/database.db @@ -0,0 +1,3 @@ +{"id":1,"type":"Coordinator","ieeeAddr":"0x00124b001cde5997","nwkAddr":0,"manufId":0,"epList":[1,2,3,4,5,6,8,10,11,12,13,47,110,242],"endpoints":{"1":{"profId":260,"epId":1,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"2":{"profId":257,"epId":2,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"3":{"profId":260,"epId":3,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"4":{"profId":263,"epId":4,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"5":{"profId":264,"epId":5,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"6":{"profId":265,"epId":6,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"8":{"profId":260,"epId":8,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"10":{"profId":260,"epId":10,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"11":{"profId":260,"epId":11,"devId":1024,"inClusterList":[1281],"outClusterList":[1280,1282],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"12":{"profId":49246,"epId":12,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"13":{"profId":260,"epId":13,"devId":5,"inClusterList":[25],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"47":{"profId":260,"epId":47,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"110":{"profId":260,"epId":110,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}},"242":{"profId":41440,"epId":242,"devId":5,"inClusterList":[],"outClusterList":[],"clusters":{},"binds":[],"configuredReportings":[],"meta":{}}},"interviewCompleted":true,"meta":{},"lastSeen":null} +{"id":2,"type":"EndDevice","ieeeAddr":"0x00158d00070b32d6","nwkAddr":10087,"manufId":4151,"manufName":"LUMI","powerSource":"Battery","modelId":"lumi.sensor_magnet.aq2","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":24321,"inClusterList":[0,3,65535,6],"outClusterList":[0,4,65535],"clusters":{"genBasic":{"attributes":{"65281":{"1":3015,"3":18,"4":5032,"5":254,"6":[0,1],"10":0,"100":0},"modelId":"lumi.sensor_magnet.aq2","appVersion":3,"manufacturerName":"LUMI","powerSource":3,"zclVersion":1,"stackVersion":2,"hwVersion":2,"dateCode":"20161128","swBuildId":"3000-0001"}},"genOnOff":{"attributes":{"onOff":0}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":3,"stackVersion":2,"hwVersion":2,"dateCode":"20161128","swBuildId":"3000-0001","zclVersion":1,"interviewCompleted":true,"meta":{},"lastSeen":1635999522830} +{"id":3,"type":"EndDevice","ieeeAddr":"0x00158d0006f39e88","nwkAddr":48870,"manufId":4151,"manufName":"LUMI","modelId":"lumi.remote.b1acn01","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":259,"inClusterList":[0,18,3],"outClusterList":[0],"clusters":{"genBasic":{"attributes":{"65281":{"1":3095,"3":27,"4":5032,"5":39,"6":[0,1],"10":0},"modelId":"lumi.remote.b1acn01","appVersion":2,"manufacturerName":"LUMI","zclVersion":1,"stackVersion":2,"hwVersion":2,"dateCode":"20180525"}},"genMultistateInput":{"attributes":{"presentValue":1}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":2,"stackVersion":2,"hwVersion":2,"dateCode":"20180525","zclVersion":1,"interviewCompleted":true,"meta":{},"lastSeen":1636000461197} \ No newline at end of file diff --git a/zigbee2mqtt/devices.yaml b/zigbee2mqtt/devices.yaml new file mode 100644 index 0000000..85c185d --- /dev/null +++ b/zigbee2mqtt/devices.yaml @@ -0,0 +1,9 @@ +'0x00158d00070b32d6': + friendly_name: Door + debounce: 1 + optimistic: true +'0x00158d0006f39e88': + friendly_name: Office Switch + debounce: 1 + optimistic: true + debounce_ignore: [] diff --git a/zigbee2mqtt/groups.yaml b/zigbee2mqtt/groups.yaml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/zigbee2mqtt/groups.yaml @@ -0,0 +1 @@ +{} diff --git a/zigbee2mqtt/log/2021-09-18.22-26-17/log.txt b/zigbee2mqtt/log/2021-09-18.22-26-17/log.txt new file mode 100644 index 0000000..90d61e9 --- /dev/null +++ b/zigbee2mqtt/log/2021-09-18.22-26-17/log.txt @@ -0,0 +1,15 @@ +warn 2021-09-18 22:26:25: `permit_join` set to `true` in configuration.yaml. +warn 2021-09-18 22:26:25: Allowing new devices to join. +warn 2021-09-18 22:26:25: Set `permit_join` to `false` once you joined all devices. +error 2021-09-18 22:27:06: Not connected to MQTT server! +error 2021-09-18 22:27:16: Not connected to MQTT server! +error 2021-09-18 22:27:26: Not connected to MQTT server! +error 2021-09-18 22:27:36: Not connected to MQTT server! +error 2021-09-18 22:27:46: Not connected to MQTT server! +error 2021-09-18 22:27:56: Not connected to MQTT server! +error 2021-09-18 22:28:06: Not connected to MQTT server! +error 2021-09-18 22:28:16: Not connected to MQTT server! +error 2021-09-18 22:28:26: Not connected to MQTT server! +error 2021-09-18 22:28:36: Not connected to MQTT server! +error 2021-09-18 22:28:39: Not connected to MQTT server! +error 2021-09-18 22:28:39: Cannot send message: topic: 'zigbee2mqtt/bridge/state', payload: 'offline diff --git a/zigbee2mqtt/log/2021-09-18.22-32-59/log.txt b/zigbee2mqtt/log/2021-09-18.22-32-59/log.txt new file mode 100644 index 0000000..db7147a --- /dev/null +++ b/zigbee2mqtt/log/2021-09-18.22-32-59/log.txt @@ -0,0 +1,5 @@ +warn 2021-09-18 22:33:08: `permit_join` set to `true` in configuration.yaml. +warn 2021-09-18 22:33:08: Allowing new devices to join. +warn 2021-09-18 22:33:08: Set `permit_join` to `false` once you joined all devices. +error 2021-09-18 22:34:21: Not connected to MQTT server! +error 2021-09-18 22:34:21: Cannot send message: topic: 'zigbee2mqtt/bridge/state', payload: 'offline diff --git a/zigbee2mqtt/log/2021-09-18.22-34-44/log.txt b/zigbee2mqtt/log/2021-09-18.22-34-44/log.txt new file mode 100644 index 0000000..45bed6f --- /dev/null +++ b/zigbee2mqtt/log/2021-09-18.22-34-44/log.txt @@ -0,0 +1,47 @@ +warn 2021-09-18 22:34:52: `permit_join` set to `true` in configuration.yaml. +warn 2021-09-18 22:34:52: Allowing new devices to join. +warn 2021-09-18 22:34:52: Set `permit_join` to `false` once you joined all devices. +error 2021-09-18 22:35:43: Not connected to MQTT server! +error 2021-09-18 22:35:43: Cannot send message: topic: 'zigbee2mqtt/bridge/response/permit_join', payload: '{"data":{"time":254,"value":true},"status":"ok","transaction":"y14ej-1"} +error 2021-09-18 22:35:47: Not connected to MQTT server! +error 2021-09-18 22:35:47: Cannot send message: topic: 'zigbee2mqtt/bridge/response/permit_join', payload: '{"data":{"time":254,"value":true},"status":"ok","transaction":"y14ej-2"} +error 2021-09-18 22:39:57: Not connected to MQTT server! +error 2021-09-18 22:39:57: Cannot send message: topic: 'zigbee2mqtt/bridge/event', payload: '{"data":{"friendly_name":"0x00158d00070b32d6","ieee_address":"0x00158d00070b32d6"},"type":"device_joined"} +error 2021-09-18 22:39:57: Not connected to MQTT server! +error 2021-09-18 22:39:57: Cannot send message: topic: 'zigbee2mqtt/bridge/event', payload: '{"data":{"friendly_name":"0x00158d00070b32d6","ieee_address":"0x00158d00070b32d6","status":"started"},"type":"device_interview"} +error 2021-09-18 22:39:57: Not connected to MQTT server! +error 2021-09-18 22:39:57: Cannot send message: topic: 'zigbee2mqtt/bridge/log', payload: '{"message":{"friendly_name":"0x00158d00070b32d6"},"type":"device_connected"} +error 2021-09-18 22:39:57: Not connected to MQTT server! +error 2021-09-18 22:39:57: Cannot send message: topic: 'zigbee2mqtt/bridge/log', payload: '{"message":"interview_started","meta":{"friendly_name":"0x00158d00070b32d6"},"type":"pairing"} +error 2021-09-18 22:39:58: Not connected to MQTT server! +error 2021-09-18 22:39:58: Cannot send message: topic: 'zigbee2mqtt/bridge/event', payload: '{"data":{"friendly_name":"0x00158d00070b32d6","ieee_address":"0x00158d00070b32d6"},"type":"device_announce"} +error 2021-09-18 22:39:58: Not connected to MQTT server! +error 2021-09-18 22:39:58: Cannot send message: topic: 'zigbee2mqtt/bridge/log', payload: '{"message":"announce","meta":{"friendly_name":"0x00158d00070b32d6"},"type":"device_announced"} +error 2021-09-18 22:40:16: Not connected to MQTT server! +error 2021-09-18 22:40:16: Cannot send message: topic: 'zigbee2mqtt/bridge/response/device/configure', payload: '{"data":{"id":"0x00158d00070b32d6"},"error":"Device '0x00158d00070b32d6' cannot be configured","status":"error","transaction":"g9glj-1"} +error 2021-09-18 22:40:29: Not connected to MQTT server! +error 2021-09-18 22:40:29: Cannot send message: topic: 'zigbee2mqtt/bridge/event', payload: '{"data":{"definition":{"description":"Aqara door & window contact sensor","exposes":[{"access":1,"description":"Remaining battery in %","name":"battery","property":"battery","type":"numeric","unit":"%","value_max":100,"value_min":0},{"access":1,"description":"Indicates if the contact is closed (= true) or open (= false)","name":"contact","property":"contact","type":"binary","value_off":true,"value_on":false},{"access":1,"description":"Measured temperature value","name":"temperature","property":"temperature","type":"numeric","unit":"°C"},{"access":1,"description":"Voltage of the battery in millivolts","name":"voltage","property":"voltage","type":"numeric","unit":"mV"},{"access":1,"description":"Link quality (signal strength)","name":"linkquality","property":"linkquality","type":"numeric","unit":"lqi","value_max":255,"value_min":0}],"model":"MCCGQ11LM","supports_ota":false,"vendor":"Xiaomi"},"friendly_name":"0x00158d00070b32d6","ieee_address":"0x00158d00070b32d6","status":"successful","supported":true},"type":"device_interview"} +error 2021-09-18 22:40:29: Not connected to MQTT server! +error 2021-09-18 22:40:29: Cannot send message: topic: 'zigbee2mqtt/bridge/log', payload: '{"message":"interview_successful","meta":{"description":"Aqara door & window contact sensor","friendly_name":"0x00158d00070b32d6","model":"MCCGQ11LM","supported":true,"vendor":"Xiaomi"},"type":"pairing"} +error 2021-09-18 22:40:52: Not connected to MQTT server! +error 2021-09-18 22:40:52: Cannot send message: topic: 'zigbee2mqtt/0x00158d00070b32d6', payload: ' +error 2021-09-18 22:40:52: Not connected to MQTT server! +error 2021-09-18 22:40:52: Cannot send message: topic: 'homeassistant/sensor/0x00158d00070b32d6/battery/config', payload: '{"availability":[{"topic":"zigbee2mqtt/bridge/state"}],"device":{"identifiers":["zigbee2mqtt_0x00158d00070b32d6"],"manufacturer":"Xiaomi","model":"Aqara door & window contact sensor (MCCGQ11LM)","name":"Door","sw_version":"Zigbee2MQTT 1.21.1-dev"},"device_class":"battery","enabled_by_default":true,"json_attributes_topic":"zigbee2mqtt/Door","name":"Door battery","state_class":"measurement","state_topic":"zigbee2mqtt/Door","unique_id":"0x00158d00070b32d6_battery_zigbee2mqtt","unit_of_measurement":"%","value_template":"{{ value_json.battery }}"} +error 2021-09-18 22:40:53: Not connected to MQTT server! +error 2021-09-18 22:40:53: Cannot send message: topic: 'homeassistant/binary_sensor/0x00158d00070b32d6/contact/config', payload: '{"availability":[{"topic":"zigbee2mqtt/bridge/state"}],"device":{"identifiers":["zigbee2mqtt_0x00158d00070b32d6"],"manufacturer":"Xiaomi","model":"Aqara door & window contact sensor (MCCGQ11LM)","name":"Door","sw_version":"Zigbee2MQTT 1.21.1-dev"},"device_class":"door","json_attributes_topic":"zigbee2mqtt/Door","name":"Door contact","payload_off":true,"payload_on":false,"state_topic":"zigbee2mqtt/Door","unique_id":"0x00158d00070b32d6_contact_zigbee2mqtt","value_template":"{{ value_json.contact }}"} +error 2021-09-18 22:40:53: Not connected to MQTT server! +error 2021-09-18 22:40:53: Cannot send message: topic: 'homeassistant/sensor/0x00158d00070b32d6/temperature/config', payload: '{"availability":[{"topic":"zigbee2mqtt/bridge/state"}],"device":{"identifiers":["zigbee2mqtt_0x00158d00070b32d6"],"manufacturer":"Xiaomi","model":"Aqara door & window contact sensor (MCCGQ11LM)","name":"Door","sw_version":"Zigbee2MQTT 1.21.1-dev"},"device_class":"temperature","enabled_by_default":true,"json_attributes_topic":"zigbee2mqtt/Door","name":"Door temperature","state_class":"measurement","state_topic":"zigbee2mqtt/Door","unique_id":"0x00158d00070b32d6_temperature_zigbee2mqtt","unit_of_measurement":"°C","value_template":"{{ value_json.temperature }}"} +error 2021-09-18 22:40:53: Not connected to MQTT server! +error 2021-09-18 22:40:53: Cannot send message: topic: 'homeassistant/sensor/0x00158d00070b32d6/voltage/config', payload: '{"availability":[{"topic":"zigbee2mqtt/bridge/state"}],"device":{"identifiers":["zigbee2mqtt_0x00158d00070b32d6"],"manufacturer":"Xiaomi","model":"Aqara door & window contact sensor (MCCGQ11LM)","name":"Door","sw_version":"Zigbee2MQTT 1.21.1-dev"},"device_class":"voltage","enabled_by_default":false,"json_attributes_topic":"zigbee2mqtt/Door","name":"Door voltage","state_class":"measurement","state_topic":"zigbee2mqtt/Door","unique_id":"0x00158d00070b32d6_voltage_zigbee2mqtt","unit_of_measurement":"mV","value_template":"{{ value_json.voltage }}"} +error 2021-09-18 22:40:53: Not connected to MQTT server! +error 2021-09-18 22:40:53: Cannot send message: topic: 'homeassistant/sensor/0x00158d00070b32d6/linkquality/config', payload: '{"availability":[{"topic":"zigbee2mqtt/bridge/state"}],"device":{"identifiers":["zigbee2mqtt_0x00158d00070b32d6"],"manufacturer":"Xiaomi","model":"Aqara door & window contact sensor (MCCGQ11LM)","name":"Door","sw_version":"Zigbee2MQTT 1.21.1-dev"},"enabled_by_default":false,"icon":"mdi:signal","json_attributes_topic":"zigbee2mqtt/Door","name":"Door linkquality","state_class":"measurement","state_topic":"zigbee2mqtt/Door","unique_id":"0x00158d00070b32d6_linkquality_zigbee2mqtt","unit_of_measurement":"lqi","value_template":"{{ value_json.linkquality }}"} +error 2021-09-18 22:40:53: Not connected to MQTT server! +error 2021-09-18 22:40:53: Cannot send message: topic: 'zigbee2mqtt/Door', payload: '{"battery":null,"contact":null,"linkquality":63,"temperature":null,"voltage":null} +error 2021-09-18 22:40:53: Not connected to MQTT server! +error 2021-09-18 22:40:53: Cannot send message: topic: 'zigbee2mqtt/bridge/response/device/rename', payload: '{"data":{"from":"0x00158d00070b32d6","homeassistant_rename":false,"to":"Door"},"status":"ok","transaction":"g9glj-2"} +error 2021-09-18 22:46:23: Not connected to MQTT server! +error 2021-09-18 22:46:23: Cannot send message: topic: 'zigbee2mqtt/bridge/response/device/configure', payload: '{"data":{"id":"Door"},"error":"Device 'Door' cannot be configured","status":"error","transaction":"g3pec-1"} +error 2021-09-18 22:47:55: Not connected to MQTT server! +error 2021-09-18 22:47:55: Cannot send message: topic: 'zigbee2mqtt/bridge/response/device/configure', payload: '{"data":{"id":"Door"},"error":"Device 'Door' cannot be configured","status":"error","transaction":"g3pec-2"} +error 2021-09-18 22:55:30: Not connected to MQTT server! +error 2021-09-18 22:55:30: Cannot send message: topic: 'zigbee2mqtt/bridge/state', payload: 'offline diff --git a/zigbee2mqtt/log/2021-09-18.22-55-52/log.txt b/zigbee2mqtt/log/2021-09-18.22-55-52/log.txt new file mode 100644 index 0000000..1aa5437 --- /dev/null +++ b/zigbee2mqtt/log/2021-09-18.22-55-52/log.txt @@ -0,0 +1,14 @@ +warn 2021-09-18 22:56:01: `permit_join` set to `true` in configuration.yaml. +warn 2021-09-18 22:56:01: Allowing new devices to join. +warn 2021-09-18 22:56:01: Set `permit_join` to `false` once you joined all devices. +warn 2021-09-18 22:56:30: Device 'Door' left the network +error 2021-09-18 22:56:33: Not connected to MQTT server! +error 2021-09-18 22:56:33: Cannot send message: topic: 'zigbee2mqtt/bridge/event', payload: '{"data":{"friendly_name":"Door","ieee_address":"0x00158d00070b32d6"},"type":"device_joined"} +error 2021-09-18 22:56:33: Not connected to MQTT server! +error 2021-09-18 22:56:33: Cannot send message: topic: 'zigbee2mqtt/bridge/log', payload: '{"message":{"friendly_name":"Door"},"type":"device_connected"} +error 2021-09-18 22:56:33: Not connected to MQTT server! +error 2021-09-18 22:56:33: Cannot send message: topic: 'zigbee2mqtt/bridge/event', payload: '{"data":{"friendly_name":"Door","ieee_address":"0x00158d00070b32d6"},"type":"device_announce"} +error 2021-09-18 22:56:33: Not connected to MQTT server! +error 2021-09-18 22:56:33: Cannot send message: topic: 'zigbee2mqtt/bridge/log', payload: '{"message":"announce","meta":{"friendly_name":"Door"},"type":"device_announced"} +error 2021-09-18 23:04:23: Not connected to MQTT server! +error 2021-09-18 23:04:23: Cannot send message: topic: 'zigbee2mqtt/bridge/state', payload: 'offline diff --git a/zigbee2mqtt/log/2021-09-18.23-04-46/log.txt b/zigbee2mqtt/log/2021-09-18.23-04-46/log.txt new file mode 100644 index 0000000..1b8e723 --- /dev/null +++ b/zigbee2mqtt/log/2021-09-18.23-04-46/log.txt @@ -0,0 +1,4 @@ +warn 2021-09-18 23:04:55: `permit_join` set to `true` in configuration.yaml. +warn 2021-09-18 23:04:55: Allowing new devices to join. +warn 2021-09-18 23:04:55: Set `permit_join` to `false` once you joined all devices. +error 2021-09-27 21:39:50: Adapter disconnected, stopping diff --git a/zigbee2mqtt/log/2021-09-27.21-40-02/log.txt b/zigbee2mqtt/log/2021-09-27.21-40-02/log.txt new file mode 100644 index 0000000..75da09b --- /dev/null +++ b/zigbee2mqtt/log/2021-09-27.21-40-02/log.txt @@ -0,0 +1,3 @@ +warn 2021-09-27 21:40:14: `permit_join` set to `true` in configuration.yaml. +warn 2021-09-27 21:40:14: Allowing new devices to join. +warn 2021-09-27 21:40:14: Set `permit_join` to `false` once you joined all devices. diff --git a/zigbee2mqtt/log/2021-10-12.12-05-51/log.txt b/zigbee2mqtt/log/2021-10-12.12-05-51/log.txt new file mode 100644 index 0000000..ba45066 --- /dev/null +++ b/zigbee2mqtt/log/2021-10-12.12-05-51/log.txt @@ -0,0 +1,3 @@ +warn 2021-10-12 12:06:02: `permit_join` set to `true` in configuration.yaml. +warn 2021-10-12 12:06:02: Allowing new devices to join. +warn 2021-10-12 12:06:02: Set `permit_join` to `false` once you joined all devices. diff --git a/zigbee2mqtt/log/2021-10-16.12-24-07/log.txt b/zigbee2mqtt/log/2021-10-16.12-24-07/log.txt new file mode 100644 index 0000000..6e99743 --- /dev/null +++ b/zigbee2mqtt/log/2021-10-16.12-24-07/log.txt @@ -0,0 +1,10 @@ +warn 2021-10-16 12:24:19: `permit_join` set to `true` in configuration.yaml. +warn 2021-10-16 12:24:19: Allowing new devices to join. +warn 2021-10-16 12:24:19: Set `permit_join` to `false` once you joined all devices. +warn 2021-10-18 15:28:55: Device '0x00158d0006f39e88' left the network +warn 2021-10-18 15:28:55: Device '0x00158d0006f39e88' left the network +warn 2021-10-18 15:29:31: Device '0x00158d0006f39e88' left the network +warn 2021-10-18 15:29:49: Device '0x00158d0006f39e88' left the network +error 2021-10-18 15:29:51: Failed to interview '0x00158d0006f39e88', device has not successfully been paired +warn 2021-10-18 15:30:20: Device '0x00158d0006f39e88' left the network +error 2021-10-18 18:04:26: Adapter disconnected, stopping diff --git a/zigbee2mqtt/log/2021-10-18.18-04-37/log.txt b/zigbee2mqtt/log/2021-10-18.18-04-37/log.txt new file mode 100644 index 0000000..d46f431 --- /dev/null +++ b/zigbee2mqtt/log/2021-10-18.18-04-37/log.txt @@ -0,0 +1,271 @@ +warn 2021-10-18 18:04:48: `permit_join` set to `true` in configuration.yaml. +warn 2021-10-18 18:04:48: Allowing new devices to join. +warn 2021-10-18 18:04:48: Set `permit_join` to `false` once you joined all devices. +error 2021-10-20 13:32:04: Not connected to MQTT server! +error 2021-10-20 13:32:14: Not connected to MQTT server! +error 2021-10-20 13:32:24: Not connected to MQTT server! +error 2021-10-20 13:32:34: Not connected to MQTT server! +error 2021-10-20 13:32:44: Not connected to MQTT server! +error 2021-10-20 13:32:54: Not connected to MQTT server! +error 2021-10-20 13:33:04: Not connected to MQTT server! +error 2021-10-20 13:33:14: Not connected to MQTT server! +error 2021-10-20 13:33:24: Not connected to MQTT server! +error 2021-10-20 13:33:34: Not connected to MQTT server! +error 2021-10-20 13:33:44: Not connected to MQTT server! +error 2021-10-20 13:33:54: Not connected to MQTT server! +error 2021-10-20 13:34:04: Not connected to MQTT server! +error 2021-10-20 13:34:14: Not connected to MQTT server! +error 2021-10-20 13:34:24: Not connected to MQTT server! +error 2021-10-20 13:34:34: Not connected to MQTT server! +error 2021-10-20 13:34:44: Not connected to MQTT server! +error 2021-10-20 13:34:54: Not connected to MQTT server! +error 2021-10-20 13:35:04: Not connected to MQTT server! +error 2021-10-20 13:35:14: Not connected to MQTT server! +error 2021-10-20 13:35:24: Not connected to MQTT server! +error 2021-10-20 13:35:34: Not connected to MQTT server! +error 2021-10-20 13:35:44: Not connected to MQTT server! +error 2021-10-20 13:35:54: Not connected to MQTT server! +error 2021-10-20 13:36:04: Not connected to MQTT server! +error 2021-10-20 13:36:14: Not connected to MQTT server! +error 2021-10-20 13:36:24: Not connected to MQTT server! +error 2021-10-20 13:36:34: Not connected to MQTT server! +error 2021-10-20 13:36:44: Not connected to MQTT server! +error 2021-10-20 13:36:54: Not connected to MQTT server! +error 2021-10-20 13:37:04: Not connected to MQTT server! +error 2021-10-20 13:37:14: Not connected to MQTT server! +error 2021-10-20 13:37:24: Not connected to MQTT server! +error 2021-10-20 13:37:34: Not connected to MQTT server! +error 2021-10-20 13:37:44: Not connected to MQTT server! +error 2021-10-20 13:37:54: Not connected to MQTT server! +error 2021-10-20 13:38:04: Not connected to MQTT server! +error 2021-10-20 13:38:14: Not connected to MQTT server! +error 2021-10-20 13:38:24: Not connected to MQTT server! +error 2021-10-20 13:38:34: Not connected to MQTT server! +error 2021-10-20 13:38:44: Not connected to MQTT server! +error 2021-10-20 13:38:54: Not connected to MQTT server! +error 2021-10-20 13:39:04: Not connected to MQTT server! +error 2021-10-20 13:39:14: Not connected to MQTT server! +error 2021-10-20 13:39:24: Not connected to MQTT server! +error 2021-10-28 12:36:54: Not connected to MQTT server! +error 2021-10-28 12:37:04: Not connected to MQTT server! +error 2021-10-28 12:37:14: Not connected to MQTT server! +error 2021-10-28 12:37:24: Not connected to MQTT server! +error 2021-10-28 12:37:34: Not connected to MQTT server! +error 2021-10-28 12:37:44: Not connected to MQTT server! +error 2021-10-28 12:37:54: Not connected to MQTT server! +error 2021-10-28 12:38:04: Not connected to MQTT server! +error 2021-10-28 12:38:14: Not connected to MQTT server! +error 2021-10-28 12:38:24: Not connected to MQTT server! +error 2021-10-28 12:38:34: Not connected to MQTT server! +error 2021-10-28 12:39:34: Not connected to MQTT server! +error 2021-10-28 12:39:44: Not connected to MQTT server! +error 2021-10-28 12:39:54: Not connected to MQTT server! +error 2021-10-28 12:40:04: Not connected to MQTT server! +error 2021-10-28 12:40:14: Not connected to MQTT server! +error 2021-10-28 12:40:24: Not connected to MQTT server! +error 2021-10-28 12:40:34: Not connected to MQTT server! +error 2021-10-28 12:40:44: Not connected to MQTT server! +error 2021-10-28 12:40:54: Not connected to MQTT server! +error 2021-10-28 12:41:04: Not connected to MQTT server! +error 2021-10-28 12:41:14: Not connected to MQTT server! +error 2021-10-28 12:41:24: Not connected to MQTT server! +error 2021-10-28 12:41:34: Not connected to MQTT server! +error 2021-10-28 12:41:44: Not connected to MQTT server! +error 2021-10-28 12:41:54: Not connected to MQTT server! +error 2021-10-28 12:42:04: Not connected to MQTT server! +error 2021-10-28 12:42:14: Not connected to MQTT server! +error 2021-10-28 12:42:24: Not connected to MQTT server! +error 2021-10-28 12:42:34: Not connected to MQTT server! +error 2021-10-28 12:42:44: Not connected to MQTT server! +error 2021-10-28 12:42:54: Not connected to MQTT server! +error 2021-10-28 12:43:04: Not connected to MQTT server! +error 2021-10-28 12:43:14: Not connected to MQTT server! +error 2021-10-28 12:43:24: Not connected to MQTT server! +error 2021-10-28 12:43:34: Not connected to MQTT server! +error 2021-10-28 12:43:44: Not connected to MQTT server! +error 2021-11-01 23:14:08: Not connected to MQTT server! +error 2021-11-01 23:23:37: Not connected to MQTT server! +error 2021-11-01 23:23:47: Not connected to MQTT server! +error 2021-11-01 23:23:57: Not connected to MQTT server! +error 2021-11-01 23:24:07: Not connected to MQTT server! +error 2021-11-01 23:24:17: Not connected to MQTT server! +error 2021-11-01 23:24:27: Not connected to MQTT server! +error 2021-11-01 23:24:37: Not connected to MQTT server! +error 2021-11-01 23:24:47: Not connected to MQTT server! +error 2021-11-01 23:24:57: Not connected to MQTT server! +error 2021-11-01 23:25:07: Not connected to MQTT server! +error 2021-11-01 23:25:17: Not connected to MQTT server! +error 2021-11-01 23:25:27: Not connected to MQTT server! +error 2021-11-01 23:25:37: Not connected to MQTT server! +error 2021-11-01 23:25:47: Not connected to MQTT server! +error 2021-11-01 23:25:57: Not connected to MQTT server! +error 2021-11-01 23:26:07: Not connected to MQTT server! +error 2021-11-01 23:26:17: Not connected to MQTT server! +error 2021-11-01 23:26:27: Not connected to MQTT server! +error 2021-11-01 23:26:37: Not connected to MQTT server! +error 2021-11-01 23:26:47: Not connected to MQTT server! +error 2021-11-01 23:26:57: Not connected to MQTT server! +error 2021-11-01 23:27:07: Not connected to MQTT server! +error 2021-11-01 23:27:17: Not connected to MQTT server! +error 2021-11-01 23:27:27: Not connected to MQTT server! +error 2021-11-01 23:27:37: Not connected to MQTT server! +error 2021-11-01 23:27:47: Not connected to MQTT server! +error 2021-11-01 23:27:57: Not connected to MQTT server! +error 2021-11-01 23:28:07: Not connected to MQTT server! +error 2021-11-01 23:28:17: Not connected to MQTT server! +error 2021-11-01 23:28:27: Not connected to MQTT server! +error 2021-11-01 23:28:37: Not connected to MQTT server! +error 2021-11-01 23:28:47: Not connected to MQTT server! +error 2021-11-01 23:28:57: Not connected to MQTT server! +error 2021-11-01 23:29:07: Not connected to MQTT server! +error 2021-11-01 23:29:17: Not connected to MQTT server! +error 2021-11-01 23:29:27: Not connected to MQTT server! +error 2021-11-01 23:29:38: Not connected to MQTT server! +error 2021-11-01 23:29:48: Not connected to MQTT server! +error 2021-11-01 23:29:58: Not connected to MQTT server! +error 2021-11-01 23:30:08: Not connected to MQTT server! +error 2021-11-01 23:30:18: Not connected to MQTT server! +error 2021-11-01 23:30:28: Not connected to MQTT server! +error 2021-11-01 23:30:38: Not connected to MQTT server! +error 2021-11-01 23:30:48: Not connected to MQTT server! +error 2021-11-01 23:30:58: Not connected to MQTT server! +error 2021-11-01 23:31:08: Not connected to MQTT server! +error 2021-11-01 23:31:18: Not connected to MQTT server! +error 2021-11-01 23:31:28: Not connected to MQTT server! +error 2021-11-01 23:31:38: Not connected to MQTT server! +error 2021-11-01 23:31:48: Not connected to MQTT server! +error 2021-11-01 23:31:58: Not connected to MQTT server! +error 2021-11-01 23:32:08: Not connected to MQTT server! +error 2021-11-01 23:32:18: Not connected to MQTT server! +error 2021-11-01 23:32:28: Not connected to MQTT server! +error 2021-11-01 23:32:38: Not connected to MQTT server! +error 2021-11-01 23:32:48: Not connected to MQTT server! +error 2021-11-01 23:32:58: Not connected to MQTT server! +error 2021-11-01 23:33:08: Not connected to MQTT server! +error 2021-11-01 23:33:18: Not connected to MQTT server! +error 2021-11-01 23:33:28: Not connected to MQTT server! +error 2021-11-01 23:33:38: Not connected to MQTT server! +error 2021-11-01 23:33:48: Not connected to MQTT server! +error 2021-11-01 23:33:58: Not connected to MQTT server! +error 2021-11-01 23:34:08: Not connected to MQTT server! +error 2021-11-01 23:34:18: Not connected to MQTT server! +error 2021-11-01 23:34:28: Not connected to MQTT server! +error 2021-11-01 23:34:38: Not connected to MQTT server! +error 2021-11-01 23:34:48: Not connected to MQTT server! +error 2021-11-01 23:34:58: Not connected to MQTT server! +error 2021-11-01 23:35:08: Not connected to MQTT server! +error 2021-11-01 23:35:18: Not connected to MQTT server! +error 2021-11-01 23:35:28: Not connected to MQTT server! +error 2021-11-01 23:35:38: Not connected to MQTT server! +error 2021-11-01 23:35:48: Not connected to MQTT server! +error 2021-11-01 23:35:58: Not connected to MQTT server! +error 2021-11-01 23:36:08: Not connected to MQTT server! +error 2021-11-01 23:36:18: Not connected to MQTT server! +error 2021-11-01 23:36:28: Not connected to MQTT server! +error 2021-11-01 23:36:38: Not connected to MQTT server! +error 2021-11-01 23:36:48: Not connected to MQTT server! +error 2021-11-01 23:36:58: Not connected to MQTT server! +error 2021-11-01 23:37:08: Not connected to MQTT server! +error 2021-11-01 23:37:18: Not connected to MQTT server! +error 2021-11-01 23:37:28: Not connected to MQTT server! +error 2021-11-01 23:37:38: Not connected to MQTT server! +error 2021-11-01 23:37:48: Not connected to MQTT server! +error 2021-11-01 23:37:58: Not connected to MQTT server! +error 2021-11-01 23:38:08: Not connected to MQTT server! +error 2021-11-01 23:38:18: Not connected to MQTT server! +error 2021-11-01 23:38:28: Not connected to MQTT server! +error 2021-11-01 23:38:38: Not connected to MQTT server! +error 2021-11-01 23:38:48: Not connected to MQTT server! +error 2021-11-01 23:38:58: Not connected to MQTT server! +error 2021-11-01 23:39:08: Not connected to MQTT server! +error 2021-11-01 23:39:18: Not connected to MQTT server! +error 2021-11-01 23:39:28: Not connected to MQTT server! +error 2021-11-01 23:39:38: Not connected to MQTT server! +error 2021-11-01 23:39:48: Not connected to MQTT server! +error 2021-11-01 23:39:58: Not connected to MQTT server! +error 2021-11-01 23:40:08: Not connected to MQTT server! +error 2021-11-01 23:40:18: Not connected to MQTT server! +error 2021-11-01 23:40:28: Not connected to MQTT server! +error 2021-11-01 23:40:38: Not connected to MQTT server! +error 2021-11-01 23:40:48: Not connected to MQTT server! +error 2021-11-01 23:40:58: Not connected to MQTT server! +error 2021-11-01 23:41:08: Not connected to MQTT server! +error 2021-11-01 23:41:18: Not connected to MQTT server! +error 2021-11-01 23:41:28: Not connected to MQTT server! +error 2021-11-01 23:41:38: Not connected to MQTT server! +error 2021-11-01 23:41:48: Not connected to MQTT server! +error 2021-11-01 23:41:58: Not connected to MQTT server! +error 2021-11-01 23:42:08: Not connected to MQTT server! +error 2021-11-01 23:42:18: Not connected to MQTT server! +error 2021-11-01 23:42:28: Not connected to MQTT server! +error 2021-11-01 23:42:38: Not connected to MQTT server! +error 2021-11-01 23:42:48: Not connected to MQTT server! +error 2021-11-01 23:42:58: Not connected to MQTT server! +error 2021-11-01 23:43:08: Not connected to MQTT server! +error 2021-11-01 23:43:18: Not connected to MQTT server! +error 2021-11-01 23:43:28: Not connected to MQTT server! +error 2021-11-01 23:43:38: Not connected to MQTT server! +error 2021-11-01 23:43:48: Not connected to MQTT server! +error 2021-11-01 23:43:58: Not connected to MQTT server! +error 2021-11-01 23:44:08: Not connected to MQTT server! +error 2021-11-01 23:44:16: Not connected to MQTT server! +error 2021-11-01 23:44:16: Cannot send message: topic: 'zigbee2mqtt/Door', payload: '{"battery":100,"contact":true,"linkquality":31,"temperature":19,"voltage":3015} +error 2021-11-01 23:44:18: Not connected to MQTT server! +error 2021-11-01 23:44:28: Not connected to MQTT server! +error 2021-11-01 23:44:38: Not connected to MQTT server! +error 2021-11-01 23:44:48: Not connected to MQTT server! +error 2021-11-01 23:44:58: Not connected to MQTT server! +error 2021-11-01 23:45:08: Not connected to MQTT server! +error 2021-11-01 23:45:18: Not connected to MQTT server! +error 2021-11-01 23:45:28: Not connected to MQTT server! +error 2021-11-01 23:45:38: Not connected to MQTT server! +error 2021-11-01 23:45:48: Not connected to MQTT server! +error 2021-11-01 23:45:58: Not connected to MQTT server! +error 2021-11-01 23:46:08: Not connected to MQTT server! +error 2021-11-01 23:46:18: Not connected to MQTT server! +error 2021-11-01 23:46:28: Not connected to MQTT server! +error 2021-11-01 23:46:38: Not connected to MQTT server! +error 2021-11-01 23:46:48: Not connected to MQTT server! +error 2021-11-01 23:46:58: Not connected to MQTT server! +error 2021-11-01 23:47:08: Not connected to MQTT server! +error 2021-11-01 23:47:18: Not connected to MQTT server! +error 2021-11-01 23:47:28: Not connected to MQTT server! +error 2021-11-01 23:47:38: Not connected to MQTT server! +error 2021-11-01 23:47:48: Not connected to MQTT server! +error 2021-11-01 23:47:58: Not connected to MQTT server! +error 2021-11-01 23:48:08: Not connected to MQTT server! +error 2021-11-01 23:48:18: Not connected to MQTT server! +error 2021-11-01 23:48:28: Not connected to MQTT server! +error 2021-11-01 23:48:38: Not connected to MQTT server! +error 2021-11-01 23:48:48: Not connected to MQTT server! +error 2021-11-01 23:48:58: Not connected to MQTT server! +error 2021-11-01 23:49:08: Not connected to MQTT server! +error 2021-11-01 23:49:18: Not connected to MQTT server! +error 2021-11-01 23:49:28: Not connected to MQTT server! +error 2021-11-01 23:49:38: Not connected to MQTT server! +error 2021-11-01 23:49:48: Not connected to MQTT server! +error 2021-11-01 23:49:58: Not connected to MQTT server! +error 2021-11-01 23:50:08: Not connected to MQTT server! +error 2021-11-01 23:50:18: Not connected to MQTT server! +error 2021-11-01 23:50:28: Not connected to MQTT server! +error 2021-11-01 23:50:38: Not connected to MQTT server! +error 2021-11-01 23:50:48: Not connected to MQTT server! +error 2021-11-01 23:50:58: Not connected to MQTT server! +error 2021-11-01 23:51:08: Not connected to MQTT server! +error 2021-11-01 23:51:18: Not connected to MQTT server! +error 2021-11-01 23:51:28: Not connected to MQTT server! +error 2021-11-01 23:51:38: Not connected to MQTT server! +error 2021-11-01 23:51:48: Not connected to MQTT server! +error 2021-11-01 23:51:58: Not connected to MQTT server! +error 2021-11-01 23:52:08: Not connected to MQTT server! +error 2021-11-01 23:52:18: Not connected to MQTT server! +error 2021-11-01 23:52:28: Not connected to MQTT server! +error 2021-11-01 23:52:38: Not connected to MQTT server! +error 2021-11-01 23:52:48: Not connected to MQTT server! +error 2021-11-01 23:52:58: Not connected to MQTT server! +error 2021-11-01 23:53:08: Not connected to MQTT server! +error 2021-11-01 23:53:18: Not connected to MQTT server! +error 2021-11-01 23:53:28: Not connected to MQTT server! +error 2021-11-01 23:53:38: Not connected to MQTT server! +error 2021-11-01 23:53:49: Not connected to MQTT server! +error 2021-11-01 23:53:59: Not connected to MQTT server! diff --git a/zigbee2mqtt/log/2021-11-04.01-14-56/log.txt b/zigbee2mqtt/log/2021-11-04.01-14-56/log.txt new file mode 100644 index 0000000..a501300 --- /dev/null +++ b/zigbee2mqtt/log/2021-11-04.01-14-56/log.txt @@ -0,0 +1,3 @@ +warn 2021-11-04 01:15:08: `permit_join` set to `true` in configuration.yaml. +warn 2021-11-04 01:15:08: Allowing new devices to join. +warn 2021-11-04 01:15:08: Set `permit_join` to `false` once you joined all devices. diff --git a/zigbee2mqtt/state.json b/zigbee2mqtt/state.json new file mode 100644 index 0000000..5022f00 --- /dev/null +++ b/zigbee2mqtt/state.json @@ -0,0 +1,12 @@ +{ + "0x00158d00070b32d6": { + "contact": true, + "voltage": 3015, + "battery": 100, + "temperature": 18 + }, + "0x00158d0006f39e88": { + "voltage": 3095, + "battery": 100 + } +} \ No newline at end of file diff --git a/zwcfg_0xf9bd3698.xml b/zwcfg_0xf9bd3698.xml index ecf5a99..405a52c 100644 --- a/zwcfg_0xf9bd3698.xml +++ b/zwcfg_0xf9bd3698.xml @@ -21,7 +21,7 @@ - +