/* eslint-disable max-len */
export enum mysensor_command {
    C_PRESENTATION = 0, // !< Sent by a node when they present attached sensors. This is usually done in presentation() at startup.
    C_SET = 1, // !< This message is sent from or to a sensor when a sensor value should be updated.
    C_REQ = 2, // !< Requests a variable value (usually from an actuator destined for controller).
    C_INTERNAL = 3, // !< Internal MySensors messages (also include common messages provided/generated by the library).
    C_STREAM = 4, // !< For firmware and other larger chunks of data that need to be divided into pieces.
}

export enum mysensor_sensor {
    S_DOOR = 0, // !< Door sensor, V_TRIPPED, V_ARMED
    S_MOTION = 1, // !< Motion sensor, V_TRIPPED, V_ARMED
    S_SMOKE = 2, // !< Smoke sensor, V_TRIPPED, V_ARMED
    S_BINARY = 3, // !< Binary light or relay, V_STATUS, V_WATT
    S_LIGHT = 3, // !< \deprecated Same as S_BINARY
    S_DIMMER = 4, // !< Dimmable light or fan device, V_STATUS (on/off), V_PERCENTAGE (dimmer level 0-100), V_WATT
    S_COVER = 5, // !< Blinds or window cover, V_UP, V_DOWN, V_STOP, V_PERCENTAGE (open/close to a percentage)
    S_TEMP = 6, // !< Temperature sensor, V_TEMP
    S_HUM = 7, // !< Humidity sensor, V_HUM
    S_BARO = 8, // !< Barometer sensor, V_PRESSURE, V_FORECAST
    S_WIND = 9, // !< Wind sensor, V_WIND, V_GUST
    S_RAIN = 10, // !< Rain sensor, V_RAIN, V_RAINRATE
    S_UV = 11, // !< Uv sensor, V_UV
    S_WEIGHT = 12, // !< Personal scale sensor, V_WEIGHT, V_IMPEDANCE
    S_POWER = 13, // !< Power meter, V_WATT, V_KWH, V_VAR, V_VA, V_POWER_FACTOR
    S_HEATER = 14, // !< Header device, V_HVAC_SETPOINT_HEAT, V_HVAC_FLOW_STATE, V_TEMP
    S_DISTANCE = 15, // !< Distance sensor, V_DISTANCE
    S_LIGHT_LEVEL = 16, // !< Light level sensor, V_LIGHT_LEVEL (uncalibrated in percentage),  V_LEVEL (light level in lux)
    S_ARDUINO_NODE = 17, // !< Used (internally) for presenting a non-repeating Arduino node
    S_ARDUINO_REPEATER_NODE = 18, // !< Used (internally) for presenting a repeating Arduino node
    S_LOCK = 19, // !< Lock device, V_LOCK_STATUS
    S_IR = 20, // !< IR device, V_IR_SEND, V_IR_RECEIVE
    S_WATER = 21, // !< Water meter, V_FLOW, V_VOLUME
    S_AIR_QUALITY = 22, // !< Air quality sensor, V_LEVEL
    S_CUSTOM = 23, // !< Custom sensor
    S_DUST = 24, // !< Dust sensor, V_LEVEL
    S_SCENE_CONTROLLER = 25, // !< Scene controller device, V_SCENE_ON, V_SCENE_OFF.
    S_RGB_LIGHT = 26, // !< RGB light. Send color component data using V_RGB. Also supports V_WATT
    S_RGBW_LIGHT = 27, // !< RGB light with an additional White component. Send data using V_RGBW. Also supports V_WATT
    S_COLOR_SENSOR = 28, // !< Color sensor, send color information using V_RGB
    S_HVAC = 29, // !< Thermostat/HVAC device. V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COLD, V_HVAC_FLOW_STATE, V_HVAC_FLOW_MODE, V_TEMP
    S_MULTIMETER = 30, // !< Multimeter device, V_VOLTAGE, V_CURRENT, V_IMPEDANCE
    S_SPRINKLER = 31, // !< Sprinkler, V_STATUS (turn on/off), V_TRIPPED (if fire detecting device)
    S_WATER_LEAK = 32, // !< Water leak sensor, V_TRIPPED, V_ARMED
    S_SOUND = 33, // !< Sound sensor, V_TRIPPED, V_ARMED, V_LEVEL (sound level in dB)
    S_VIBRATION = 34, // !< Vibration sensor, V_TRIPPED, V_ARMED, V_LEVEL (vibration in Hz)
    S_MOISTURE = 35, // !< Moisture sensor, V_TRIPPED, V_ARMED, V_LEVEL (water content or moisture in percentage?)
    S_INFO = 36, // !< LCD text device / Simple information device on controller, V_TEXT
    S_GAS = 37, // !< Gas meter, V_FLOW, V_VOLUME
    S_GPS = 38, // !< GPS Sensor, V_POSITION
    S_WATER_QUALITY = 39, // !< V_TEMP, V_PH, V_ORP, V_EC, V_STATUS
}

export enum mysensor_data {
    V_TEMP = 0, // !< S_TEMP. Temperature S_TEMP, S_HEATER, S_HVAC
    V_HUM = 1, // !< S_HUM. Humidity
    V_STATUS = 2, // !< S_BINARY, S_DIMMER, S_SPRINKLER, S_HVAC, S_HEATER. Used for setting/reporting binary (on/off) status. 1=on, 0=off
    V_LIGHT = 2, // !< \deprecated Same as V_STATUS
    V_PERCENTAGE = 3, // !< S_DIMMER. Used for sending a percentage value 0-100 (%).
    V_DIMMER = 3, // !< \deprecated Same as V_PERCENTAGE
    V_PRESSURE = 4, // !< S_BARO. Atmospheric Pressure
    V_FORECAST = 5, // !< S_BARO. Whether forecast. string of 'stable', 'sunny', 'cloudy', 'unstable', 'thunderstorm' or 'unknown'
    V_RAIN = 6, // !< S_RAIN. Amount of rain
    V_RAINRATE = 7, // !< S_RAIN. Rate of rain
    V_WIND = 8, // !< S_WIND. Wind speed
    V_GUST = 9, // !< S_WIND. Gust
    V_DIRECTION = 10, // !< S_WIND. Wind direction 0-360 (degrees)
    V_UV = 11, // !< S_UV. UV light level
    V_WEIGHT = 12, // !< S_WEIGHT. Weight(for scales etc)
    V_DISTANCE = 13, // !< S_DISTANCE. Distance
    V_IMPEDANCE = 14, // !< S_MULTIMETER, S_WEIGHT. Impedance value
    V_ARMED = 15, // !< S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER. Armed status of a security sensor. 1 = Armed, 0 = Bypassed
    V_TRIPPED = 16, // !< S_DOOR, S_MOTION, S_SMOKE, S_SPRINKLER, S_WATER_LEAK, S_SOUND, S_VIBRATION, S_MOISTURE. Tripped status of a security sensor. 1 = Tripped, 0
    V_WATT = 17, // !< S_POWER, S_BINARY, S_DIMMER, S_RGB_LIGHT, S_RGBW_LIGHT. Watt value for power meters
    V_KWH = 18, // !< S_POWER. Accumulated number of KWH for a power meter
    V_SCENE_ON = 19, // !< S_SCENE_CONTROLLER. Turn on a scene
    V_SCENE_OFF = 20, // !< S_SCENE_CONTROLLER. Turn of a scene
    V_HVAC_FLOW_STATE = 21, // !< S_HEATER, S_HVAC. HVAC flow state ('Off', 'HeatOn', 'CoolOn', or 'AutoChangeOver')
    V_HEATER = 21, // !< \deprecated Same as V_HVAC_FLOW_STATE
    V_HVAC_SPEED = 22, // !< S_HVAC, S_HEATER. HVAC/Heater fan speed ('Min', 'Normal', 'Max', 'Auto')
    V_LIGHT_LEVEL = 23, // !< S_LIGHT_LEVEL. Uncalibrated light level. 0-100%. Use V_LEVEL for light level in lux
    V_VAR1 = 24, // !< VAR1
    V_VAR2 = 25, // !< VAR2
    V_VAR3 = 26, // !< VAR3
    V_VAR4 = 27, // !< VAR4
    V_VAR5 = 28, // !< VAR5
    V_UP = 29, // !< S_COVER. Window covering. Up
    V_DOWN = 30, // !< S_COVER. Window covering. Down
    V_STOP = 31, // !< S_COVER. Window covering. Stop
    V_IR_SEND = 32, // !< S_IR. Send out an IR-command
    V_IR_RECEIVE = 33, // !< S_IR. This message contains a received IR-command
    V_FLOW = 34, // !< S_WATER. Flow of water (in meter)
    V_VOLUME = 35, // !< S_WATER. Water volume
    V_LOCK_STATUS = 36, // !< S_LOCK. Set or get lock status. 1=Locked, 0=Unlocked
    V_LEVEL = 37, // !< S_DUST, S_AIR_QUALITY, S_SOUND (dB), S_VIBRATION (hz), S_LIGHT_LEVEL (lux)
    V_VOLTAGE = 38, // !< S_MULTIMETER
    V_CURRENT = 39, // !< S_MULTIMETER
    V_RGB = 40, // !< S_RGB_LIGHT, S_COLOR_SENSOR. Sent as ASCII hex: RRGGBB (RR=red, GG=green, BB=blue component)
    V_RGBW = 41, // !< S_RGBW_LIGHT. Sent as ASCII hex: RRGGBBWW (WW=white component)
    V_ID = 42, // !< Used for sending in sensors hardware ids (i.e. OneWire DS1820b).
    V_UNIT_PREFIX = 43, // !< Allows sensors to send in a string representing the unit prefix to be displayed in GUI, not parsed by controller! E.g. cm, m, km, inch.
    V_HVAC_SETPOINT_COOL = 44, // !< S_HVAC. HVAC cool setpoint (Integer between 0-100)
    V_HVAC_SETPOINT_HEAT = 45, // !< S_HEATER, S_HVAC. HVAC/Heater setpoint (Integer between 0-100)
    V_HVAC_FLOW_MODE = 46, // !< S_HVAC. Flow mode for HVAC ('Auto', 'ContinuousOn', 'PeriodicOn')
    V_TEXT = 47, // !< S_INFO. Text message to display on LCD or controller device
    V_CUSTOM = 48, // !< Custom messages used for controller/inter node specific commands, preferably using S_CUSTOM device type.
    V_POSITION = 49, // !< GPS position and altitude. Payload: latitude;longitude;altitude(m). E.g. '55.722526;13.017972;18'
    V_IR_RECORD = 50, // !< Record IR codes S_IR for playback
    V_PH = 51, // !< S_WATER_QUALITY, water PH
    V_ORP = 52, // !< S_WATER_QUALITY, water ORP : redox potential in mV
    V_EC = 53, // !< S_WATER_QUALITY, water electric conductivity μS/cm (microSiemens/cm)
    V_VAR = 54, // !< S_POWER, Reactive power: volt-ampere reactive (var)
    V_VA = 55, // !< S_POWER, Apparent power: volt-ampere (VA)
    V_POWER_FACTOR = 56, // !< S_POWER, Ratio of real power to apparent power: floating point value in the range [-1,..,1]
}

export enum mysensor_internal {
    I_BATTERY_LEVEL = 0, // !< Battery level
    I_TIME = 1, // !< Time (request/response)
    I_VERSION = 2, // !< Version
    I_ID_REQUEST = 3, // !< ID request
    I_ID_RESPONSE = 4, // !< ID response
    I_INCLUSION_MODE = 5, // !< Inclusion mode
    I_CONFIG = 6, // !< Config (request/response)
    I_FIND_PARENT_REQUEST = 7, // !< Find parent
    I_FIND_PARENT_RESPONSE = 8, // !< Find parent response
    I_LOG_MESSAGE = 9, // !< Log message
    I_CHILDREN = 10, // !< Children
    I_SKETCH_NAME = 11, // !< Sketch name
    I_SKETCH_VERSION = 12, // !< Sketch version
    I_REBOOT = 13, // !< Reboot request
    I_GATEWAY_READY = 14, // !< Gateway ready
    I_SIGNING_PRESENTATION = 15, // !< Provides signing related preferences (first byte is preference version)
    I_NONCE_REQUEST = 16, // !< Request for a nonce
    I_NONCE_RESPONSE = 17, // !< Payload is nonce data
    I_HEARTBEAT_REQUEST = 18, // !< Heartbeat request
    I_PRESENTATION = 19, // !< Presentation message
    I_DISCOVER_REQUEST = 20, // !< Discover request
    I_DISCOVER_RESPONSE = 21, // !< Discover response
    I_HEARTBEAT_RESPONSE = 22, // !< Heartbeat response
    I_LOCKED = 23, // !< Node is locked (reason in string-payload)
    I_PING = 24, // !< Ping sent to node, payload incremental hop counter
    I_PONG = 25, // !< In return to ping, sent back to sender, payload incremental hop counter
    I_REGISTRATION_REQUEST = 26, // !< Register request to GW
    I_REGISTRATION_RESPONSE = 27, // !< Register response from GW
    I_DEBUG = 28, // !< Debug message
    I_SIGNAL_REPORT_REQUEST = 29, // !< Device signal strength request
    I_SIGNAL_REPORT_REVERSE = 30, // !< Internal
    I_SIGNAL_REPORT_RESPONSE = 31, // !< Device signal strength response (RSSI)
    I_PRE_SLEEP_NOTIFICATION = 32, // !< Message sent before node is going to sleep
    I_POST_SLEEP_NOTIFICATION = 33, // !< Message sent after node woke up (if enabled)
}

export enum mysensor_stream {
    ST_FIRMWARE_CONFIG_REQUEST = 0, // !< Request new FW, payload contains current FW details
    ST_FIRMWARE_CONFIG_RESPONSE = 1, // !< New FW details to initiate OTA FW update
    ST_FIRMWARE_REQUEST = 2, // !< Request FW block
    ST_FIRMWARE_RESPONSE = 3, // !< Response FW block
    ST_SOUND = 4, // !< Sound
    ST_IMAGE = 5, // !< Image
}

export enum mysensor_payload {
    P_STRING = 0, // !< Payload type is string
    P_BYTE = 1, // !< Payload type is byte
    P_INT16 = 2, // !< Payload type is INT16
    P_UINT16 = 3, // !< Payload type is UINT16
    P_LONG32 = 4, // !< Payload type is INT32
    P_ULONG32 = 5, // !< Payload type is UINT32
    P_CUSTOM = 6, // !< Payload type is binary
    P_FLOAT32 = 7, // !< Payload type is float32
}
