From d5592e56623f5de47c497e2283cc2bee9e70cd80 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 28 Nov 2022 21:14:38 +0100 Subject: [PATCH] #751 boot time when NTP connected --- interface/.typesafe-i18n.json | 2 +- interface/package-lock.json | 174 +++++++++++++-------------- interface/package.json | 6 +- lib/framework/NTPSettingsService.cpp | 3 +- src/system.cpp | 23 +++- src/system.h | 9 +- 6 files changed, 115 insertions(+), 102 deletions(-) diff --git a/interface/.typesafe-i18n.json b/interface/.typesafe-i18n.json index 29ebade77..38811b0eb 100644 --- a/interface/.typesafe-i18n.json +++ b/interface/.typesafe-i18n.json @@ -1,5 +1,5 @@ { "adapter": "react", "baseLocale": "pl", - "$schema": "https://unpkg.com/typesafe-i18n@5.17.0/schema/typesafe-i18n.json" + "$schema": "https://unpkg.com/typesafe-i18n@5.17.1/schema/typesafe-i18n.json" } \ No newline at end of file diff --git a/interface/package-lock.json b/interface/package-lock.json index 614945f32..9bd895607 100644 --- a/interface/package-lock.json +++ b/interface/package-lock.json @@ -11,8 +11,8 @@ "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", "@msgpack/msgpack": "^2.8.0", - "@mui/icons-material": "^5.10.15", - "@mui/material": "^5.10.15", + "@mui/icons-material": "^5.10.16", + "@mui/material": "^5.10.16", "@table-library/react-table-library": "4.0.23", "@types/lodash": "^4.14.190", "@types/node": "^18.11.9", @@ -34,7 +34,7 @@ "react-router-dom": "^6.4.3", "react-scripts": "5.0.1", "sockette": "^2.0.6", - "typesafe-i18n": "^5.17.0", + "typesafe-i18n": "^5.17.1", "typescript": "^4.9.3" }, "devDependencies": { @@ -3091,14 +3091,14 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-alpha.107", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.107.tgz", - "integrity": "sha512-HX/BD8CSe+Y/dpbZ5aKJScJhKQ/Hw6du2yd68Upv2cO67bwixyZ64h3aNcdDu7RQzI7nrZQm0JykffP1Orgq0g==", + "version": "5.0.0-alpha.108", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.108.tgz", + "integrity": "sha512-KjzRUts2i/ODlMfywhFTqTzQl+Cr9nlDSZxJcnYjrbOV/iRyQNBTDoiFJt+XEdRi0fZBHnk74AFbnP56ehybsA==", "dependencies": { "@babel/runtime": "^7.20.1", "@emotion/is-prop-valid": "^1.2.0", - "@mui/types": "^7.2.1", - "@mui/utils": "^5.10.15", + "@mui/types": "^7.2.2", + "@mui/utils": "^5.10.16", "@popperjs/core": "^2.11.6", "clsx": "^1.2.1", "prop-types": "^15.8.1", @@ -3123,18 +3123,18 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.15.tgz", - "integrity": "sha512-xFcS0LpdF0Q1qJrrNsYUv9PU+ovvhCEPTOMw2jcpEFtl3CA87dLpvztORR5oE2UBFjWF7qLQLOwboQU1+xC7Cw==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.16.tgz", + "integrity": "sha512-eK9+olw2ZbXX+vGrtKnN01/vLP1aX0Lq0xok35bqWM1aB93Dcmky/xPNf8h31oJ/C+IzJBjZaZMEDzVZg4Qc0A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" } }, "node_modules/@mui/icons-material": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.15.tgz", - "integrity": "sha512-fXkz7CtYTt4AH4YYT67VFhM/A3YCUqZGGLp/3BlzRPQRNEfFKknw3MgG1S5UYrY5weti8jxMx3mwwfhVP8OMhQ==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.16.tgz", + "integrity": "sha512-jjCc0IF6iyLiucQCu5igg3fOscSqbbvRCmyRxXgzOcLR56B0sg2L8o+ZfJ0dAg59+wvgtXaxvjze/mJg0B4iWA==", "dependencies": { "@babel/runtime": "^7.20.1" }, @@ -3157,16 +3157,16 @@ } }, "node_modules/@mui/material": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.15.tgz", - "integrity": "sha512-OqoHfUtVMppFHgk2M95j+pR8MWfLKhzSdz4aKEfIpFrHIHbYang+oY7Iy/exX+vqpZSEGHgHQ0cGX0hGTGx9cg==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.16.tgz", + "integrity": "sha512-JSHcDQQ+k30NKkCM/0KX6jq4F5LOrbFKZpS+cEl7scZWOCJpUPH5ccAT5a7O8wzrgNZ8Y9PnwzNvWBrfShpJFw==", "dependencies": { "@babel/runtime": "^7.20.1", - "@mui/base": "5.0.0-alpha.107", - "@mui/core-downloads-tracker": "^5.10.15", - "@mui/system": "^5.10.15", - "@mui/types": "^7.2.1", - "@mui/utils": "^5.10.15", + "@mui/base": "5.0.0-alpha.108", + "@mui/core-downloads-tracker": "^5.10.16", + "@mui/system": "^5.10.16", + "@mui/types": "^7.2.2", + "@mui/utils": "^5.10.16", "@types/react-transition-group": "^4.4.5", "clsx": "^1.2.1", "csstype": "^3.1.1", @@ -3201,12 +3201,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.15.tgz", - "integrity": "sha512-l7CsUj5kYdYz118/JHSvZZTYE9WnIWwln0td5jYATnYw9cNX4ygD6AkKOUYZ1Jitp1YLJqcO8jCP9E5/Nql9IQ==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz", + "integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==", "dependencies": { "@babel/runtime": "^7.20.1", - "@mui/utils": "^5.10.15", + "@mui/utils": "^5.10.16", "prop-types": "^15.8.1" }, "engines": { @@ -3227,9 +3227,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.10.14", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.14.tgz", - "integrity": "sha512-bgKdM57ExogWpIfhL/ngSlzF4FhbH00vYF+Y5VALTob4uslFqje0xzoWmbfcCn4cZt2NXxZJIwhsq4vzo5itlw==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz", + "integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==", "dependencies": { "@babel/runtime": "^7.20.1", "@emotion/cache": "^11.10.5", @@ -3258,15 +3258,15 @@ } }, "node_modules/@mui/system": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.15.tgz", - "integrity": "sha512-WZmgmpYTMXAaD++QetaaM/miwhNh1JJY1dH7MJH/3Fuv3r3gnhfzE6A55lDqWxkQmlWUO2DCn/cnNZ0FkSdZUg==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.16.tgz", + "integrity": "sha512-OqI9B1jZ9zQ/dmoqseku4CzdEs9DbLiiMOaWxC3WeAJxM1UavlCgXz0encqm93LIlmSL7TjuHN1/rW8BJCnU8A==", "dependencies": { "@babel/runtime": "^7.20.1", - "@mui/private-theming": "^5.10.15", - "@mui/styled-engine": "^5.10.14", - "@mui/types": "^7.2.1", - "@mui/utils": "^5.10.15", + "@mui/private-theming": "^5.10.16", + "@mui/styled-engine": "^5.10.16", + "@mui/types": "^7.2.2", + "@mui/utils": "^5.10.16", "clsx": "^1.2.1", "csstype": "^3.1.1", "prop-types": "^15.8.1" @@ -3297,9 +3297,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.1.tgz", - "integrity": "sha512-c5mSM7ivD8EsqK6HUi9hQPr5V7TJ/IRThUQ9nWNYPdhCGriTSQV4vL6DflT99LkM+wLiIS1rVjphpEWxERep7A==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz", + "integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==", "peerDependencies": { "@types/react": "*" }, @@ -3310,9 +3310,9 @@ } }, "node_modules/@mui/utils": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.15.tgz", - "integrity": "sha512-6AW4MLBUijJi31hxx+6utTJM2q/4hbO+QiMdtwM+f4Iy+BfFnh/elhb08apxNYLfuugPnXXpkDmzEjg+8uDU9g==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz", + "integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==", "dependencies": { "@babel/runtime": "^7.20.1", "@types/prop-types": "^15.7.5", @@ -16424,9 +16424,9 @@ } }, "node_modules/typesafe-i18n": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.17.0.tgz", - "integrity": "sha512-YRy/WdQizZfrW21v5dzsOOTuEmkaMx4Z2G0QjgxWBgS0TNf10Sk/rPwqtcnR9VOAyRCJt/GtZqgDzFRvdsB3zA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.17.1.tgz", + "integrity": "sha512-SWgsOPHsewtzo4O197cvLPOk8iv7VX/5W+DoM42SoP6HTUQxz610BJSSYaSsu0Yx1ilCLvBtKtBVTzA54A2qTQ==", "bin": { "typesafe-i18n": "cli/typesafe-i18n.mjs" }, @@ -19640,14 +19640,14 @@ "integrity": "sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==" }, "@mui/base": { - "version": "5.0.0-alpha.107", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.107.tgz", - "integrity": "sha512-HX/BD8CSe+Y/dpbZ5aKJScJhKQ/Hw6du2yd68Upv2cO67bwixyZ64h3aNcdDu7RQzI7nrZQm0JykffP1Orgq0g==", + "version": "5.0.0-alpha.108", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.108.tgz", + "integrity": "sha512-KjzRUts2i/ODlMfywhFTqTzQl+Cr9nlDSZxJcnYjrbOV/iRyQNBTDoiFJt+XEdRi0fZBHnk74AFbnP56ehybsA==", "requires": { "@babel/runtime": "^7.20.1", "@emotion/is-prop-valid": "^1.2.0", - "@mui/types": "^7.2.1", - "@mui/utils": "^5.10.15", + "@mui/types": "^7.2.2", + "@mui/utils": "^5.10.16", "@popperjs/core": "^2.11.6", "clsx": "^1.2.1", "prop-types": "^15.8.1", @@ -19655,29 +19655,29 @@ } }, "@mui/core-downloads-tracker": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.15.tgz", - "integrity": "sha512-xFcS0LpdF0Q1qJrrNsYUv9PU+ovvhCEPTOMw2jcpEFtl3CA87dLpvztORR5oE2UBFjWF7qLQLOwboQU1+xC7Cw==" + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.10.16.tgz", + "integrity": "sha512-eK9+olw2ZbXX+vGrtKnN01/vLP1aX0Lq0xok35bqWM1aB93Dcmky/xPNf8h31oJ/C+IzJBjZaZMEDzVZg4Qc0A==" }, "@mui/icons-material": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.15.tgz", - "integrity": "sha512-fXkz7CtYTt4AH4YYT67VFhM/A3YCUqZGGLp/3BlzRPQRNEfFKknw3MgG1S5UYrY5weti8jxMx3mwwfhVP8OMhQ==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.10.16.tgz", + "integrity": "sha512-jjCc0IF6iyLiucQCu5igg3fOscSqbbvRCmyRxXgzOcLR56B0sg2L8o+ZfJ0dAg59+wvgtXaxvjze/mJg0B4iWA==", "requires": { "@babel/runtime": "^7.20.1" } }, "@mui/material": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.15.tgz", - "integrity": "sha512-OqoHfUtVMppFHgk2M95j+pR8MWfLKhzSdz4aKEfIpFrHIHbYang+oY7Iy/exX+vqpZSEGHgHQ0cGX0hGTGx9cg==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.10.16.tgz", + "integrity": "sha512-JSHcDQQ+k30NKkCM/0KX6jq4F5LOrbFKZpS+cEl7scZWOCJpUPH5ccAT5a7O8wzrgNZ8Y9PnwzNvWBrfShpJFw==", "requires": { "@babel/runtime": "^7.20.1", - "@mui/base": "5.0.0-alpha.107", - "@mui/core-downloads-tracker": "^5.10.15", - "@mui/system": "^5.10.15", - "@mui/types": "^7.2.1", - "@mui/utils": "^5.10.15", + "@mui/base": "5.0.0-alpha.108", + "@mui/core-downloads-tracker": "^5.10.16", + "@mui/system": "^5.10.16", + "@mui/types": "^7.2.2", + "@mui/utils": "^5.10.16", "@types/react-transition-group": "^4.4.5", "clsx": "^1.2.1", "csstype": "^3.1.1", @@ -19687,19 +19687,19 @@ } }, "@mui/private-theming": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.15.tgz", - "integrity": "sha512-l7CsUj5kYdYz118/JHSvZZTYE9WnIWwln0td5jYATnYw9cNX4ygD6AkKOUYZ1Jitp1YLJqcO8jCP9E5/Nql9IQ==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.10.16.tgz", + "integrity": "sha512-0MArkJaOHRCKqL/GWjngGZmyOeRz+uxffhx82bKcewr8swqV7xx7EFP02pk0L/gLdfcvYdqwH4YTVjG/+TaKrg==", "requires": { "@babel/runtime": "^7.20.1", - "@mui/utils": "^5.10.15", + "@mui/utils": "^5.10.16", "prop-types": "^15.8.1" } }, "@mui/styled-engine": { - "version": "5.10.14", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.14.tgz", - "integrity": "sha512-bgKdM57ExogWpIfhL/ngSlzF4FhbH00vYF+Y5VALTob4uslFqje0xzoWmbfcCn4cZt2NXxZJIwhsq4vzo5itlw==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.10.16.tgz", + "integrity": "sha512-ZMSjXvtiGwGDKqrSlXhpxK2voUaF2/lpC/pSTfFmZvKH9j9a9h1/iwo3ybgjFVYGgbfNeW4h0xEchiRohu9xsw==", "requires": { "@babel/runtime": "^7.20.1", "@emotion/cache": "^11.10.5", @@ -19708,30 +19708,30 @@ } }, "@mui/system": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.15.tgz", - "integrity": "sha512-WZmgmpYTMXAaD++QetaaM/miwhNh1JJY1dH7MJH/3Fuv3r3gnhfzE6A55lDqWxkQmlWUO2DCn/cnNZ0FkSdZUg==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.10.16.tgz", + "integrity": "sha512-OqI9B1jZ9zQ/dmoqseku4CzdEs9DbLiiMOaWxC3WeAJxM1UavlCgXz0encqm93LIlmSL7TjuHN1/rW8BJCnU8A==", "requires": { "@babel/runtime": "^7.20.1", - "@mui/private-theming": "^5.10.15", - "@mui/styled-engine": "^5.10.14", - "@mui/types": "^7.2.1", - "@mui/utils": "^5.10.15", + "@mui/private-theming": "^5.10.16", + "@mui/styled-engine": "^5.10.16", + "@mui/types": "^7.2.2", + "@mui/utils": "^5.10.16", "clsx": "^1.2.1", "csstype": "^3.1.1", "prop-types": "^15.8.1" } }, "@mui/types": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.1.tgz", - "integrity": "sha512-c5mSM7ivD8EsqK6HUi9hQPr5V7TJ/IRThUQ9nWNYPdhCGriTSQV4vL6DflT99LkM+wLiIS1rVjphpEWxERep7A==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.2.tgz", + "integrity": "sha512-siex8cZDtWeC916cXOoUOnEQQejuMYmHtc4hM6VkKVYaBICz3VIiqyiAomRboTQHt2jchxQ5Q5ATlbcDekTxDA==", "requires": {} }, "@mui/utils": { - "version": "5.10.15", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.15.tgz", - "integrity": "sha512-6AW4MLBUijJi31hxx+6utTJM2q/4hbO+QiMdtwM+f4Iy+BfFnh/elhb08apxNYLfuugPnXXpkDmzEjg+8uDU9g==", + "version": "5.10.16", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.10.16.tgz", + "integrity": "sha512-3MB/SGsgiiu9Z55CFmAfiONUoR7AAue/H4F6w3mc2LnhFQCsoVvXhioDPcsiRpUMIQr34jDPzGXdCuqWooPCXQ==", "requires": { "@babel/runtime": "^7.20.1", "@types/prop-types": "^15.7.5", @@ -29109,9 +29109,9 @@ } }, "typesafe-i18n": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.17.0.tgz", - "integrity": "sha512-YRy/WdQizZfrW21v5dzsOOTuEmkaMx4Z2G0QjgxWBgS0TNf10Sk/rPwqtcnR9VOAyRCJt/GtZqgDzFRvdsB3zA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.17.1.tgz", + "integrity": "sha512-SWgsOPHsewtzo4O197cvLPOk8iv7VX/5W+DoM42SoP6HTUQxz610BJSSYaSsu0Yx1ilCLvBtKtBVTzA54A2qTQ==", "requires": {} }, "typescript": { diff --git a/interface/package.json b/interface/package.json index dde1c0b2e..42e2ad379 100644 --- a/interface/package.json +++ b/interface/package.json @@ -7,8 +7,8 @@ "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", "@msgpack/msgpack": "^2.8.0", - "@mui/icons-material": "^5.10.15", - "@mui/material": "^5.10.15", + "@mui/icons-material": "^5.10.16", + "@mui/material": "^5.10.16", "@table-library/react-table-library": "4.0.23", "@types/lodash": "^4.14.190", "@types/node": "^18.11.9", @@ -30,7 +30,7 @@ "react-router-dom": "^6.4.3", "react-scripts": "5.0.1", "sockette": "^2.0.6", - "typesafe-i18n": "^5.17.0", + "typesafe-i18n": "^5.17.1", "typescript": "^4.9.3" }, "scripts": { diff --git a/lib/framework/NTPSettingsService.cpp b/lib/framework/NTPSettingsService.cpp index a9b943cc9..3df0d3118 100644 --- a/lib/framework/NTPSettingsService.cpp +++ b/lib/framework/NTPSettingsService.cpp @@ -50,7 +50,7 @@ void NTPSettingsService::configureNTP() { emsesp::EMSESP::system_.ntp_connected(false); if (connected_ && _state.enabled) { emsesp::EMSESP::logger().info("Starting NTP"); - sntp_set_sync_interval(3600000); // onehour + sntp_set_sync_interval(3600000); // one hour sntp_set_time_sync_notification_cb(ntp_received); configTzTime(_state.tzFormat.c_str(), _state.server.c_str()); } else { @@ -83,4 +83,5 @@ void NTPSettingsService::configureTime(AsyncWebServerRequest * request, JsonVari void NTPSettingsService::ntp_received(struct timeval * tv) { // emsesp::EMSESP::logger().info("NTP sync to %d sec", tv->tv_sec); emsesp::EMSESP::system_.ntp_connected(true); + emsesp::EMSESP::system_.send_info_mqtt("connected"); } diff --git a/src/system.cpp b/src/system.cpp index 22ffa0068..cdeba2322 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -540,6 +540,16 @@ void System::send_info_mqtt(const char * event_str) { StaticJsonDocument doc; doc["event"] = event_str; doc["version"] = EMSESP_APP_VERSION; + + // if NTP is enabled send the boot_time in local time in ISO 8601 format (eg: 2022-11-15 20:46:38) + // https://github.com/emsesp/EMS-ESP32/issues/751 + if (ntp_connected()) { + char time_string[25]; + time_t now = time(nullptr); // grab the current instant in unix seconds + strftime(time_string, 25, "%F %T", localtime(&now)); + doc["boot_time"] = time_string; + } + #ifndef EMSESP_STANDALONE if (EMSESP::system_.ethernet_connected()) { doc["connection"] = "ethernet"; @@ -582,7 +592,7 @@ bool System::heartbeat_json(JsonObject & output) { output["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3); output["uptime_sec"] = uuid::get_uptime_sec(); - bool value_b = EMSESP::system_.ntp_connected(); + bool value_b = ntp_connected(); if (Mqtt::ha_enabled()) { char s[12]; output["ntp_status"] = Helpers::render_boolean(s, value_b); // for HA always render as string @@ -1404,10 +1414,19 @@ std::string System::reset_reason(uint8_t cpu) const { // set NTP status void System::ntp_connected(bool b) { if (b != ntp_connected_) { - LOG_INFO(b ? "NTP connected" : "NTP disconnected"); + LOG_INFO(b ? "NTP connected" : "NTP disconnected"); // if changed report it } ntp_connected_ = b; ntp_last_check_ = b ? uuid::get_uptime_sec() : 0; } +// get NTP status +bool System::ntp_connected() { + // timeout 2 hours, ntp sync is normally every hour. + if ((uuid::get_uptime_sec() - ntp_last_check_ > 7201) && ntp_connected_) { + ntp_connected(false); + } + return ntp_connected_; +} + } // namespace emsesp diff --git a/src/system.h b/src/system.h index 3cf4106f1..e13efd3a8 100644 --- a/src/system.h +++ b/src/system.h @@ -180,14 +180,7 @@ class System { } void ntp_connected(bool b); - - bool ntp_connected() { - // timeout 2 hours, ntp sync is normally every hour. - if ((uuid::get_uptime_sec() - ntp_last_check_ > 7201) && ntp_connected_) { - ntp_connected(false); - } - return ntp_connected_; - } + bool ntp_connected(); bool network_connected() { #ifndef EMSESP_STANDALONE