@@ -1613,6 +1613,7 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
16131613 self ._bin_data_format = None
16141614 self ._bin_data_size = None
16151615 self ._bin_data = None
1616+ self ._mode_scale = {}
16161617
16171618 __slots__ = [
16181619# ~autogen generic-class-slots classes.sensor>currentClass
@@ -1632,8 +1633,21 @@ def __init__(self, address=None, name_pattern=SYSTEM_DEVICE_NAME_CONVENTION, nam
16321633 '_bin_data_format' ,
16331634 '_bin_data_size' ,
16341635 '_bin_data' ,
1636+ '_mode_scale'
16351637 ]
16361638
1639+ def _scale (self , mode ):
1640+ """
1641+ Returns value scaling coefficient for the given mode.
1642+ """
1643+ if mode in self ._mode_scale :
1644+ scale = self ._mode_scale [mode ]
1645+ else :
1646+ scale = 10 ** (- self .decimals )
1647+ self ._mode_scale [mode ] = scale
1648+
1649+ return scale
1650+
16371651# ~autogen generic-get-set classes.sensor>currentClass
16381652
16391653 @property
@@ -2116,7 +2130,7 @@ def distance_centimeters(self):
21162130 if self .auto_mode :
21172131 self .mode = self .MODE_US_DIST_CM
21182132
2119- return self .value (0 )
2133+ return self .value (0 ) * self . _scale ( 'US_DIST_CM' )
21202134
21212135 @property
21222136 def distance_inches (self ):
@@ -2128,7 +2142,7 @@ def distance_inches(self):
21282142 if self .auto_mode :
21292143 self .mode = self .MODE_US_DIST_IN
21302144
2131- return self .value (0 )
2145+ return self .value (0 ) * self . _scale ( 'US_DIST_IN' )
21322146
21332147 @property
21342148 def other_sensor_present (self ):
@@ -2309,7 +2323,7 @@ def sound_pressure(self):
23092323 if self .auto_mode :
23102324 self .mode = self .MODE_DB
23112325
2312- return self .value (0 )
2326+ return self .value (0 ) * self . _scale ( 'DB' )
23132327
23142328 @property
23152329 def sound_pressure_low (self ):
@@ -2321,7 +2335,7 @@ def sound_pressure_low(self):
23212335 if self .auto_mode :
23222336 self .mode = self .MODE_DBA
23232337
2324- return self .value (0 )
2338+ return self .value (0 ) * self . _scale ( 'DBA' )
23252339
23262340class LightSensor (Sensor ):
23272341
@@ -2361,7 +2375,7 @@ def reflected_light_intensity(self):
23612375 if self .auto_mode :
23622376 self .mode = self .MODE_REFLECT
23632377
2364- return self .value (0 )
2378+ return self .value (0 ) * self . _scale ( 'REFLECT' )
23652379
23662380 @property
23672381 def ambient_light_intensity (self ):
@@ -2372,7 +2386,7 @@ def ambient_light_intensity(self):
23722386 if self .auto_mode :
23732387 self .mode = self .MODE_AMBIENT
23742388
2375- return self .value (0 )
2389+ return self .value (0 ) * self . _scale ( 'AMBIENT' )
23762390
23772391
23782392# ~autogen
0 commit comments