ZWaveLib.Values.EnergyValue.Parse C# (CSharp) Method

Parse() public static method

public static Parse ( byte message ) : EnergyValue
message byte
return EnergyValue
        public static EnergyValue Parse(byte[] message)
        {
            ZWaveValue zvalue = ZWaveValue.ExtractValueFromBytes(message, 4);
            EnergyValue energy = new EnergyValue();
            energy.Value = zvalue.Value;
            if (Enum.IsDefined(typeof(ZWaveEnergyScaleType), zvalue.Scale))
            {
                energy.Parameter = (ZWaveEnergyScaleType)zvalue.Scale;
            }
            switch (energy.Parameter)
            {
            // Accumulated power consumption kW/h
            case ZWaveEnergyScaleType.kWh:
                //energy.EventType = EventParameter.MeterKwHour;
                // TODO: The following is fix for AeonLabs HEM G2
                // TODO: https://github.com/genielabs/ZWaveLib/pull/186
                // TODO: possibly move this fix to ZWaveValue.ExtractValueFromBytes method
                if ((message[2] & 0x80) == 0x80)
                    energy.EventType = EventParameter.MeterAcVolt;
                else
                    energy.EventType = EventParameter.MeterKwHour;
                break;
            // Accumulated power consumption kilo Volt Ampere / hours (kVA/h)
            case ZWaveEnergyScaleType.kVAh:
                energy.EventType = EventParameter.MeterKvaHour;
                break;
            // Instant power consumption Watt
            case ZWaveEnergyScaleType.Watt:
                // TODO: The following is fix for Qubino Smart Meter
                // TODO: possibly move this fix to ZWaveValue.ExtractValueFromBytes method
                if ((message[2] & 0xA1) == 0xA1)
                    energy.EventType = EventParameter.MeterPower;
                else
                    energy.EventType = EventParameter.MeterWatt;
                break;
            // Pulses count
            case ZWaveEnergyScaleType.Pulses:
                energy.EventType = EventParameter.MeterPulses;
                break;
            // AC load Voltage
            case ZWaveEnergyScaleType.ACVolt:
                energy.EventType = EventParameter.MeterAcVolt;
                break;
            // AC load Current
            case ZWaveEnergyScaleType.ACCurrent:
                energy.EventType = EventParameter.MeterAcCurrent;
                break;
            // Power Factor
            case ZWaveEnergyScaleType.PowerFactor:
                energy.EventType = EventParameter.MeterPower;
                break;
            default:
                // Unknown value ?
                energy = null;
                break;
            }
            return energy;
        }

Usage Example

Esempio n. 1
0
        public static SensorValue Parse(byte[] message)
        {
            SensorValue sensor = new SensorValue();
            //
            ZWaveValue zvalue = ZWaveValue.ExtractValueFromBytes(message, 11);
            //
            byte key = message[9];

            if (key == (byte)ZWaveSensorParameter.Temperature)
            {
                sensor.Parameter = ZWaveSensorParameter.Temperature;
                // convert from Fahrenheit to Celsius if needed
                sensor.Value     = (zvalue.Scale == (int)ZWaveTemperatureScaleType.Fahrenheit ? SensorValue.FahrenheitToCelsius(zvalue.Value) : zvalue.Value);
                sensor.EventType = EventParameter.SensorTemperature;
            }
            else if (key == (byte)ZWaveSensorParameter.GeneralPurposeValue)
            {
                sensor.Parameter = ZWaveSensorParameter.GeneralPurposeValue;
                sensor.Value     = zvalue.Value;
                sensor.EventType = EventParameter.Generic;
            }
            else if (key == (byte)ZWaveSensorParameter.Luminance)
            {
                sensor.Parameter = ZWaveSensorParameter.Luminance;
                sensor.Value     = zvalue.Value;
                sensor.EventType = EventParameter.SensorLuminance;
            }
            else if (key == (byte)ZWaveSensorParameter.RelativeHumidity)
            {
                sensor.Parameter = ZWaveSensorParameter.RelativeHumidity;
                sensor.Value     = zvalue.Value;
                sensor.EventType = EventParameter.SensorHumidity;
            }
            else if (key == (byte)ZWaveSensorParameter.Power)
            {
                //sensor.Value = BitConverter.ToUInt16(new byte[2] { message[12], message[11] }, 0) / 10D;
                //sensor.Value = ((double)int.Parse(
                //    message[12].ToString("X2") + message[13].ToString("X2") + message[14].ToString("X2"),
                //    System.Globalization.NumberStyles.HexNumber
                //    )) / 1000D;
                // TODO: this might be very buggy.... to be tested
                EnergyValue energy = EnergyValue.Parse(message);
                sensor.Parameter = ZWaveSensorParameter.Power;
                sensor.Value     = energy.Value;
                sensor.EventType = EventParameter.MeterPower;
            }
            else
            {
                sensor.Value = zvalue.Value;
            }
            //
            return(sensor);
        }
All Usage Examples Of ZWaveLib.Values.EnergyValue::Parse
EnergyValue