Skip to content

Commit

Permalink
add uom conversion, thanks to @Duhlin12
Browse files Browse the repository at this point in the history
  • Loading branch information
CFenner committed Jun 24, 2024
1 parent 4c0b5c3 commit b2b86f9
Showing 1 changed file with 70 additions and 2 deletions.
72 changes: 70 additions & 2 deletions netatmo.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ Module.register('netatmo', {
fontClassMeasurement: 'xsmall',
thresholdCO2Average: 800,
thresholdCO2Bad: 1800,
unitOfMeasurementWind: '',
mockData: false,
},
notifications: {
Expand Down Expand Up @@ -80,6 +81,12 @@ Module.register('netatmo', {
this.sendSocketNotification(this.notifications.DATA)
}, this.config.updateInterval * 60 * 1000 + this.config.initialDelay * 1000)
},
updateUnitOfMeasurements (userPreferences) {
if (this.config.unitOfMeasurementWind === ''){

Check failure on line 85 in netatmo.js

View workflow job for this annotation

GitHub Actions / ESLint

Missing space before opening brace
this.config.unitOfMeasurementWind = this.convertNetatmoWindUOM(userPreferences.windunit)
console.log('Using user preferred unit of measurement for wind values %o', this.config.unitOfMeasurementWind)
}
},
updateModuleList (stationList) {
let moduleList = []

Expand Down Expand Up @@ -285,7 +292,7 @@ Module.register('netatmo', {
return value.toFixed(1)// + ' mm/h'
case this.measurement.WIND_STRENGTH:
case this.measurement.GUST_STRENGTH:
return value.toFixed(0)// + ' km/h'
return this.convertWindUnit(value, this.config.unitOfMeasurementWind)
case this.measurement.WIND_ANGLE:
case this.measurement.GUST_ANGLE:
return `${this.getDirection(value)} | ${value}`// + '°'
Expand All @@ -296,6 +303,51 @@ Module.register('netatmo', {
return value
}
},
convertNetatmoWindUOM (unit) {
switch (unit) {
case 4:
return 'KT'
case 3:
return 'BFT'
case 2:
return 'MS'
case 1:
return 'MPH'
case 0:
default:
return 'KPH'
}
},
convertWindUnit (value, unit) {
switch (unit) {
case 'MPH':
return (value / 1.609).toFixed(1)
case 'MS':
return (value / 3.6).toFixed(1)
case 'BFT':
return this.convertToBeaufort(value)
case 'KT':
return (value / 1.852).toFixed(1)
case 'KPH':
default:
return value.toFixed(1)
}
},
convertToBeaufort (value) {
if (value < 1) return 0
if (value <= 5) return 1
if (value <= 11) return 2
if (value <= 19) return 3
if (value <= 28) return 4
if (value <= 38) return 5
if (value <= 49) return 6
if (value <= 61) return 7
if (value <= 74) return 8
if (value <= 88) return 9
if (value <= 102) return 10
if (value <= 117) return 11
return 12
},
getUnit (measurement) {
switch (measurement) {
case this.measurement.CO2:
Expand All @@ -317,14 +369,29 @@ Module.register('netatmo', {
return 'mm/h'
case this.measurement.WIND_STRENGTH:
case this.measurement.GUST_STRENGTH:
return 'km/h'
return this.getWindUnitLabel(this.config.unitOfMeasurementWind)
case this.measurement.WIND_ANGLE:
case this.measurement.GUST_ANGLE:
return '°'
default:
return ''
}
},
getWindUnitLabel (unit) {
switch (unit) {
case 'MPH':
return 'mph'
case 'MS':
return 'm/s'
case 'BFT':
return 'Bft'
case 'KT':
return 'kt'
case 'KMH':
default:
return 'km/h'
}
},
getDirection (value) {
if (value < 11.25) return 'N'
if (value < 33.75) return 'NNE'
Expand Down Expand Up @@ -446,6 +513,7 @@ Module.register('netatmo', {
console.log('Devices %o', payload.payloadReturn.devices)
const stationList = payload.payloadReturn.devices
const userPreferences = payload.payloadReturn.user.administrative
this.updateUnitOfMeasurements(userPreferences)
this.updateModuleList(stationList)
this.updateDom(this.config.animationSpeed)
} else if (payload.status === 'INVALID_TOKEN') {
Expand Down

0 comments on commit b2b86f9

Please sign in to comment.