Source code for sensirion_shdlc_svm40.commands.algorithm_parameters

# -*- coding: utf-8 -*-
# (c) Copyright 2020 Sensirion AG, Switzerland

##############################################################################
##############################################################################
#                 _____         _    _ _______ _____ ____  _   _
#                / ____|   /\  | |  | |__   __|_   _/ __ \| \ | |
#               | |       /  \ | |  | |  | |    | || |  | |  \| |
#               | |      / /\ \| |  | |  | |    | || |  | | . ` |
#               | |____ / ____ \ |__| |  | |   _| || |__| | |\  |
#                \_____/_/    \_\____/   |_|  |_____\____/|_| \_|
#
#     THIS FILE IS AUTOMATICALLY GENERATED AND MUST NOT BE EDITED MANUALLY!
#
# Generator:    sensirion-shdlc-interface-generator 0.8.2
# Product:      SVM40
# Version:      0.3.0
#
##############################################################################
##############################################################################

# flake8: noqa

from __future__ import absolute_import, division, print_function
from sensirion_shdlc_driver.command import ShdlcCommand
from struct import pack, unpack

import logging
log = logging.getLogger(__name__)


[docs]class Svm40CmdAlgorithmParametersBase(ShdlcCommand): """ SHDLC command 0x60: "Algorithm Parameters". """
[docs] def __init__(self, *args, **kwargs): """ Constructor. """ super(Svm40CmdAlgorithmParametersBase, self).__init__( 0x60, *args, **kwargs)
[docs]class Svm40CmdGetTemperatureOffsetForRhtMeasurements(Svm40CmdAlgorithmParametersBase): """ Get Temperature Offset For Rht Measurements Command Gets the T-Offset for the temperature compensation of the RHT algorithm. """
[docs] def __init__(self): """ Constructor. """ super(Svm40CmdGetTemperatureOffsetForRhtMeasurements, self).__init__( data=b"".join([bytes(bytearray([0x01]))]), max_response_time=0.05, post_processing_time=0.0, min_response_length=0, max_response_length=255 )
[docs] @staticmethod def interpret_response(data): """ :return: Temperature offset whith is used for the RHT measurements. Firmware versions prior to 2.0 will return a float value (4 bytes). For firmware version >= 2.0 an int16 value (2 bytes) is returned. Float temperature values are in degrees celsius with no scaling. Integer temperature values are in degrees celsius with a scaling of 200. :rtype: bytes """ t_offset = bytes(data[0:]) # bytearray return t_offset
[docs]class Svm40CmdGetVocTuningParameters(Svm40CmdAlgorithmParametersBase): """ Get Voc Tuning Parameters Command Gets the currently set parameters for customizing the VOC algorithm """
[docs] def __init__(self): """ Constructor. """ super(Svm40CmdGetVocTuningParameters, self).__init__( data=b"".join([bytes(bytearray([0x08]))]), max_response_time=0.05, post_processing_time=0.0, min_response_length=8, max_response_length=8 )
[docs] @staticmethod def interpret_response(data): """ :return: - voc_index_offset (int) - VOC index representing typical (average) conditions. The default value is 100. - learning_time_hours (int) - Time constant of long-term estimator in hours. Past events will be forgotten after about twice the learning time. The default value is 12 hours. - gating_max_duration_minutes (int) - Maximum duration of gating in minutes (freeze of estimator during high VOC index signal). Zero disables the gating. The default value is 180 minutes. - std_initial (int) - Initial estimate for standard deviation. Lower value boosts events during initial learning period, but may result in larger device-to-device variations. The default value is 50. :rtype: tuple """ voc_index_offset = int(unpack(">h", data[0:2])[0]) # int16 learning_time_hours = int(unpack(">h", data[2:4])[0]) # int16 gating_max_duration_minutes = int(unpack(">h", data[4:6])[0]) # int16 std_initial = int(unpack(">h", data[6:8])[0]) # int16 return voc_index_offset,\ learning_time_hours,\ gating_max_duration_minutes,\ std_initial
[docs]class Svm40CmdStoreNvData(Svm40CmdAlgorithmParametersBase): """ Store Nv Data Command Stores all algorithm parameters to the non-volatile memory. """
[docs] def __init__(self): """ Constructor. """ super(Svm40CmdStoreNvData, self).__init__( data=b"".join([bytes(bytearray([0x80]))]), max_response_time=0.5, post_processing_time=0.0, min_response_length=0, max_response_length=0 )
[docs]class Svm40CmdSetTemperatureOffsetForRhtMeasurements(Svm40CmdAlgorithmParametersBase): """ Set Temperature Offset For Rht Measurements Command Sets the T-Offset for the temperature compensation of the RHT algorithm. .. note:: Execute the store command after writing the parameter to store it in the non-volatile memory of the device otherwise the parameter will be reset upton a device reset. """
[docs] def __init__(self, t_offset): """ Constructor. :param bytes t_offset: Temperature offset in degrees celsius. Accepted data formats are either a float value (4 bytes) or an int16 value (2 bytes). Float temperature values are in degrees celsius with no scaling. Integer temperature values are in degrees celsius with a scaling of 200. """ super(Svm40CmdSetTemperatureOffsetForRhtMeasurements, self).__init__( data=b"".join([bytes(bytearray([0x81])), bytes(bytearray(t_offset))]), max_response_time=0.05, post_processing_time=0.0, min_response_length=0, max_response_length=0 )
[docs]class Svm40CmdSetVocTuningParameters(Svm40CmdAlgorithmParametersBase): """ Set Voc Tuning Parameters Command Sets parameters to customize the VOC algorithm. This command is only available in idle mode. .. note:: Execute the store command after writing the parameter to store it in the non-volatile memory of the device otherwise the parameter will be reset upton a device reset. """
[docs] def __init__(self, voc_index_offset, learning_time_hours, gating_max_duration_minutes, std_initial): """ Constructor. :param int voc_index_offset: VOC index representing typical (average) conditions. The default value is 100. :param int learning_time_hours: Time constant of long-term estimator in hours. Past events will be forgotten after about twice the learning time. The default value is 12 hours. :param int gating_max_duration_minutes: Maximum duration of gating in minutes (freeze of estimator during high VOC index signal). Set to zero to disable the gating. The default value is 180 minutes. :param int std_initial: Initial estimate for standard deviation. Lower value boosts events during initial learning period, but may result in larger device-to-device variations. The default value is 50. """ super(Svm40CmdSetVocTuningParameters, self).__init__( data=b"".join([bytes(bytearray([0x88])), pack(">h", voc_index_offset), pack(">h", learning_time_hours), pack(">h", gating_max_duration_minutes), pack(">h", std_initial)]), max_response_time=0.05, post_processing_time=0.0, min_response_length=0, max_response_length=0 )