@@ -82,16 +82,24 @@ const matchings = {
82
82
humidity : [ 'rel. luftfeuchte' , 'luftfeuchtigkeit' , 'luftfeuchte' ] ,
83
83
pressure : [ 'luftdruck' , 'druck' ] ,
84
84
signal : [ 'stärke' , 'signal' ] ,
85
+ noise_laeq : [ 'schallpegel' , 'geräuschpegel' ] ,
85
86
} ;
86
87
87
88
const findSensorId = function findSensorId ( sensors , value_type ) {
88
89
// temperature, humidity and pressure values
89
90
// are named either directly or with a prefix
90
91
// separated by underscores. The last element
91
92
// should be the the desired phenomenon
92
- let [ vt_sensortype , vt_phenomenon ] = value_type
93
- . toLowerCase ( )
94
- . split ( '_' ) ;
93
+ let [ vt_sensortype , vt_phenomenon ] = [ ] ;
94
+ const splitAtIndex = value_type . toLowerCase ( ) . indexOf ( '_' ) ;
95
+ if ( splitAtIndex > 0 ) {
96
+ [ vt_sensortype , vt_phenomenon ] = [
97
+ value_type . toLowerCase ( ) . slice ( 0 , splitAtIndex ) ,
98
+ value_type . toLowerCase ( ) . slice ( splitAtIndex + 1 ) ,
99
+ ] ;
100
+ } else {
101
+ [ vt_sensortype , vt_phenomenon ] = value_type . toLowerCase ( ) . split ( '_' ) ;
102
+ }
95
103
96
104
// DHT11 and DHT22 sensors have no underscore prefix
97
105
if ( ! vt_phenomenon && [ 'temperature' , 'humidity' ] . includes ( vt_sensortype ) ) {
@@ -110,9 +118,10 @@ const findSensorId = function findSensorId (sensors, value_type) {
110
118
const title = sensor . title . toLowerCase ( ) ;
111
119
const type = sensor . sensorType . toLowerCase ( ) ;
112
120
if (
113
- ( title === vt_phenomenon || matchings [ vt_phenomenon ] . includes ( title ) || matchings [ vt_phenomenon ] . some ( alias => title . includes ( alias ) ) )
114
- &&
115
- ( type . startsWith ( vt_sensortype ) )
121
+ ( title === vt_phenomenon ||
122
+ matchings [ vt_phenomenon ] . includes ( title ) ||
123
+ matchings [ vt_phenomenon ] . some ( ( alias ) => title . includes ( alias ) ) ) &&
124
+ type . startsWith ( vt_sensortype )
116
125
) {
117
126
sensorId = sensor . _id . toString ( ) ;
118
127
break ;
@@ -137,7 +146,6 @@ const transformLuftdatenJson = function transformLuftdatenJson (json, sensors) {
137
146
return outArray ;
138
147
} ;
139
148
140
-
141
149
module . exports = {
142
150
decodeMessage : function ( message , { sensors } = { } ) {
143
151
if ( ! sensors ) {
@@ -159,7 +167,9 @@ module.exports = {
159
167
}
160
168
161
169
if ( ! json . sensordatavalues ) {
162
- return Promise . reject ( new Error ( 'Invalid luftdaten json. Missing `sensordatavalues`' ) ) ;
170
+ return Promise . reject (
171
+ new Error ( 'Invalid luftdaten json. Missing `sensordatavalues`' )
172
+ ) ;
163
173
}
164
174
165
175
const transformedMeasurements = transformLuftdatenJson ( json , sensors ) ;
@@ -170,6 +180,8 @@ module.exports = {
170
180
return transformAndValidateMeasurements ( transformedMeasurements ) ;
171
181
}
172
182
173
- return Promise . reject ( new Error ( 'Cannot decode empty message (luftdaten decoder)' ) ) ;
174
- }
183
+ return Promise . reject (
184
+ new Error ( 'Cannot decode empty message (luftdaten decoder)' )
185
+ ) ;
186
+ } ,
175
187
} ;
0 commit comments