From d56f66e61f86212242614c8b2849f6db53f480a0 Mon Sep 17 00:00:00 2001 From: Matthew Oslan Date: Wed, 4 Mar 2020 22:36:43 -0500 Subject: [PATCH 1/4] Don't reset scale on error for manual mode --- routes/weather.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/routes/weather.ts b/routes/weather.ts index eb5b192..95a8d12 100644 --- a/routes/weather.ts +++ b/routes/weather.ts @@ -210,7 +210,7 @@ export const getWateringData = async function( req: express.Request, res: expres adjustmentOptions = JSON.parse( "{" + adjustmentOptionsString + "}" ); } catch ( err ) { // If the JSON is not valid then abort the calculation - sendWateringError( res, new CodedError( ErrorCode.MalformedAdjustmentOptions ) ); + sendWateringError( res, new CodedError( ErrorCode.MalformedAdjustmentOptions ), adjustmentMethod != ManualAdjustmentMethod ); return; } @@ -219,7 +219,7 @@ export const getWateringData = async function( req: express.Request, res: expres try { coordinates = await resolveCoordinates( location ); } catch ( err ) { - sendWateringError( res, makeCodedError( err ) ); + sendWateringError( res, makeCodedError( err ), adjustmentMethod != ManualAdjustmentMethod ); return; } @@ -236,11 +236,11 @@ export const getWateringData = async function( req: express.Request, res: expres // Make sure that the PWS ID and API key look valid. if ( !pwsId ) { - sendWateringError( res, new CodedError( ErrorCode.InvalidPwsId ) ); + sendWateringError( res, new CodedError( ErrorCode.InvalidPwsId ), adjustmentMethod != ManualAdjustmentMethod ); return; } if ( !apiKey ) { - sendWateringError( res, new CodedError( ErrorCode.InvalidPwsApiKey ) ); + sendWateringError( res, new CodedError( ErrorCode.InvalidPwsApiKey ), adjustmentMethod != ManualAdjustmentMethod ); return; } @@ -278,7 +278,7 @@ export const getWateringData = async function( req: express.Request, res: expres adjustmentOptions, coordinates, weatherProvider, pws ); } catch ( err ) { - sendWateringError( res, makeCodedError( err ) ); + sendWateringError( res, makeCodedError( err ), adjustmentMethod != ManualAdjustmentMethod ); return; } @@ -293,7 +293,7 @@ export const getWateringData = async function( req: express.Request, res: expres try { wateringData = await weatherProvider.getWateringData( coordinates ); } catch ( err ) { - sendWateringError( res, makeCodedError( err ) ); + sendWateringError( res, makeCodedError( err ), adjustmentMethod != ManualAdjustmentMethod ); return; } } @@ -318,17 +318,20 @@ export const getWateringData = async function( req: express.Request, res: expres }; /** - * Sends a response to a watering scale request with an error code and a default watering scale of 100%. + * Sends a response to a watering scale request with an error code. * @param res The Express Response object to send the response through. * @param error The error code to send in the response body. + * @param resetScale Indicates if the `scale` field in the response should be set to 100. If this parameter is set to false, + * the field will be omitted. Newer firmware versions may ignore the value of this field since they will detect an error + * occurred, but older firmware versions will still update the watering scale accordingly. * @param useJson Indicates if the response body should use a JSON format instead of a format similar to URL query strings. */ -function sendWateringError( res: express.Response, error: CodedError, useJson: boolean = false ) { +function sendWateringError( res: express.Response, error: CodedError, resetScale: boolean = true, useJson: boolean = false ) { if ( error.errCode === ErrorCode.UnexpectedError ) { console.error( `An unexpected error occurred:`, error ); } - sendWateringData( res, { errCode: error.errCode, scale: 100 } ); + sendWateringData( res, { errCode: error.errCode, scale: resetScale ? 100 : undefined } ); } /** From 601f6130d77b377b6908d621556318b7c9651270 Mon Sep 17 00:00:00 2001 From: Matthew Oslan Date: Mon, 9 Mar 2020 16:56:13 -0400 Subject: [PATCH 2/4] Fix daylight saving time bug --- routes/weatherProviders/DarkSky.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/routes/weatherProviders/DarkSky.ts b/routes/weatherProviders/DarkSky.ts index f8133b7..100fcd4 100644 --- a/routes/weatherProviders/DarkSky.ts +++ b/routes/weatherProviders/DarkSky.ts @@ -41,7 +41,8 @@ export default class DarkSkyWeatherProvider extends WeatherProvider { ]; // Fail if not enough data is available. - if ( samples.length !== 24 ) { + // There will only be 23 samples on the day that daylight saving time begins. + if ( samples.length !== 24 && samples.length !== 23 ) { throw new CodedError( ErrorCode.InsufficientWeatherData ); } @@ -61,8 +62,8 @@ export default class DarkSkyWeatherProvider extends WeatherProvider { return { weatherProvider: "DarkSky", - temp: totals.temp / 24, - humidity: totals.humidity / 24 * 100, + temp: totals.temp / samples.length, + humidity: totals.humidity / samples.length * 100, precip: totals.precip, raining: samples[ samples.length - 1 ].precipIntensity > 0 }; From 0501159a1fad65cb671ebe9499b506091107ff23 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2020 21:00:13 +0000 Subject: [PATCH 3/4] Bump mixin-deep from 1.3.1 to 1.3.2 Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2. - [Release notes](https://github.com/jonschlinkert/mixin-deep/releases) - [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2) Signed-off-by: dependabot[bot] --- package-lock.json | 49 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 042b6ac..6fbd09f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "os-weather-service", - "version": "1.0.4", + "version": "2.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1140,7 +1140,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1161,12 +1162,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1181,17 +1184,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1308,7 +1314,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -1320,6 +1327,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1334,6 +1342,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1341,12 +1350,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -1365,6 +1376,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -1445,7 +1457,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1457,6 +1470,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1542,7 +1556,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -1578,6 +1593,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1597,6 +1613,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1640,12 +1657,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2219,9 +2238,9 @@ "dev": true }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", From 7ef70869c494a85f5c9eb31488bb470a00825af5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2020 21:00:14 +0000 Subject: [PATCH 4/4] Bump lodash from 4.17.11 to 4.17.15 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.15) Signed-off-by: dependabot[bot] --- package-lock.json | 49 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 042b6ac..0d86300 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "os-weather-service", - "version": "1.0.4", + "version": "2.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1140,7 +1140,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -1161,12 +1162,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1181,17 +1184,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1308,7 +1314,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -1320,6 +1327,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1334,6 +1342,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1341,12 +1350,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -1365,6 +1376,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -1445,7 +1457,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1457,6 +1470,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1542,7 +1556,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -1578,6 +1593,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1597,6 +1613,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1640,12 +1657,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -2084,9 +2103,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lowercase-keys": { "version": "1.0.1",