public IMukFlapWinterSummerReply03Telemetry Build()
        {
            var flapPwmSetting = _data[3] * 256 + _data[4];

            var temperatureAddress1 = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[5], _data[6]), 0.01, 0.0, new BytesPair(0x85, 0x00));
            var temperatureAddress2 = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[7], _data[8]), 0.01, 0.0, new BytesPair(0x85, 0x00));

            var incomingSignals = new IncomingSignalsBuilder(_data[10]).Build();
            var outgoingSignals = _data[12];

            var analogInput        = (_data[14] + _data[13] * 256) * 0.1;      // voltage
            var automaticModeStage = new MukFlapWorkmodeStageBuilder(_data[16] + _data[15] * 256).Build();

            var diagnostic1 = new MukFlapDiagnostic1Builder(_data[18] + _data[17] * 256).Build();
            var diagnostic2 = new MukFlapDiagnostic2Builder(_data[20] + _data[19] * 256).Build();
            var diagnostic3 = new MukFlapDiagnosticOneWireSensorBuilder(_data[22] + _data[21] * 256).Build();
            var diagnostic4 = new MukFlapDiagnosticOneWireSensorBuilder(_data[24] + _data[23] * 256).Build();

            var reserve11 = _data[26] + _data[25] * 256;
            var reserve12 = _data[28] + _data[27] * 256;
            var reserve13 = _data[30] + _data[29] * 256;
            var reserve14 = _data[32] + _data[31] * 256;
            var reserve15 = _data[34] + _data[33] * 256;
            var reserve16 = _data[36] + _data[35] * 256;

            var reserve17           = _data[38] + _data[37] * 256;
            var reserve18           = _data[40] + _data[39] * 256;
            var firmwareBuildNumber = _data[42] + _data[41] * 256;
            var reserve20           = _data[44] + _data[43] * 256;

            return(new MukFlapWinterSummerReply03Telemetry(flapPwmSetting, temperatureAddress1, temperatureAddress2, incomingSignals, outgoingSignals, analogInput, automaticModeStage, diagnostic1, diagnostic2, diagnostic3, diagnostic4, reserve11, reserve12, reserve13, reserve14, reserve15, reserve16, reserve17, reserve18, firmwareBuildNumber, reserve20));
        }
        public IMukFlapReturnAirReply03Telemetry Build()
        {
            var flapPwmSetting = _data[3] * 256 + _data[4];

            var temperatureAddress1 = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[5], _data[6]), 0.01, 0.0, new BytesPair(0x85, 0x00));
            var temperatureAddress2 = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[7], _data[8]), 0.01, 0.0, new BytesPair(0x85, 0x00));

            var incomingSignals = new MukFlapReturnAirIncomingSignalsBuilder(_data[10]).Build();

            var outgoingSignals            = _data[12];
            var outgoingSignalsDescription = new MukFlapReturnAirOutgoingSignalsBuilder(outgoingSignals).Build();

            var analogInput        = (_data[14] + _data[13] * 256) * 0.1;      // voltage
            var automaticModeStage = new MukFlapWorkmodeStageBuilder(_data[16] + _data[15] * 250).Build();

            var diagnostic1 = new MukFlapAirRecycleDiagnostic1Builder(_data[18] + _data[17] * 256).Build();
            var diagnostic2 = new MukFlapDiagnostic2Builder(_data[20] + _data[19] * 256).Build();
            var diagnostic3 = new MukFlapDiagnosticOneWireSensorBuilder(_data[22] + _data[21] * 256).Build();
            var diagnostic4 = new MukFlapDiagnosticOneWireSensorBuilder(_data[24] + _data[23] * 256).Build();

            var concentratorState   = _data[26] + _data[25] * 256;
            var concentratorDrivers = _data[28] + _data[27] * 256;
            var concentratorVoltage = _data[30] + _data[29] * 256;
            var reserve14           = _data[32] + _data[31] * 256;
            var reserve15           = _data[34] + _data[33] * 256;
            var firmwareBuildNumber = _data[36] + _data[35] * 256;

            var reserve17 = _data[38] + _data[37] * 256;
            var reserve18 = _data[40] + _data[39] * 256;


            return(new MukFlapReturnAirReply03Telemetry(
                       flapPwmSetting, temperatureAddress1, temperatureAddress2,
                       incomingSignals,
                       outgoingSignals,
                       outgoingSignalsDescription,
                       analogInput,
                       automaticModeStage,
                       diagnostic1,
                       diagnostic2,
                       diagnostic3,
                       diagnostic4,

                       concentratorState,
                       new MukFlapReturnAirConcentratorStatusBuilderFromByte(_data[26]).Build(),

                       concentratorDrivers,
                       concentratorVoltage,

                       reserve14,
                       reserve15,

                       firmwareBuildNumber,

                       reserve17,
                       reserve18));
        }
        public IMukFlapOuterAirReply03Telemetry Build()
        {
            var flapPosition = _data[3] * 256 + _data[4];

            var temperatureAddress1 = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[5], _data[6]), 0.01, 0.0, new BytesPair(0x85, 0x00));
            var temperatureAddress2 = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[7], _data[8]), 0.01, 0.0, new BytesPair(0x85, 0x00));

            var incomingSignals = new IncomingSignalsBuilder(_data[10]).Build();
            var outgoingSignals = _data[12];

            var analogInput        = (_data[14] + _data[13] * 256) * 0.1;      // voltage
            var automaticModeStage = new MukFlapWorkmodeStageBuilder(_data[16] + _data[15] * 250).Build();

            var diagnostic1 = new MukFlapDiagnostic1Builder(_data[18] + _data[17] * 256).Build();
            var diagnostic2 = new MukFlapOuterAirDiagnostic2Builder(_data[20] + _data[19] * 256).Build();
            var diagnostic3 = new MukFlapDiagnosticOneWireSensorBuilder(_data[22] + _data[21] * 256).Build();
            var diagnostic4 = new MukFlapDiagnosticOneWireSensorBuilder(_data[24] + _data[23] * 256).Build();

            var emersonDiagnostic   = new EmersonDiagnosticCircuit1Builder(_data[26] + _data[25] * 256).Build();
            var emersonTemperature  = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[27], _data[28]), 0.01, 0.0, new BytesPair(0x7F, 0xFF));
            var emersonPressure     = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[29], _data[30]), 0.01, 0.0, new BytesPair(0x7F, 0xFF));
            var emersonValveSetting = _data[32] + _data[31] * 256;


            var emersionDiagnostic2  = new EmersonDiagnosticCircuit2Builder(_data[34] + _data[33] * 256).Build();
            var emersonTemperature2  = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[35], _data[36]), 0.01, 0.0, new BytesPair(0x7F, 0xFF));
            var emersonPressure2     = new SensorIndicationDoubleBasedOnBytesPair(new BytesPair(_data[37], _data[38]), 0.01, 0.0, new BytesPair(0x7F, 0xFF));
            var emersonValveSetting2 = _data[40] + _data[39] * 256;

            var firmwareBuildNumber = _data[42] + _data[41] * 256;

            return(new MukFlapReply03Telemetry(
                       flapPosition, temperatureAddress1, temperatureAddress2,
                       incomingSignals,
                       outgoingSignals,
                       analogInput,
                       automaticModeStage,
                       diagnostic1,
                       diagnostic2,
                       diagnostic3,
                       diagnostic4,

                       emersonDiagnostic,
                       emersonTemperature,
                       emersonPressure,
                       emersonValveSetting,

                       emersionDiagnostic2,
                       emersonTemperature2,
                       emersonPressure2,
                       emersonValveSetting2,

                       firmwareBuildNumber
                       ));
        }
        public string Format(BytesPair?value)
        {
            if (!value.HasValue)
            {
                return(_nullFormat);
            }
            var sensorIndication = new SensorIndicationDoubleBasedOnBytesPair(value.Value, _modifier, _addition, _noLinkCode);

            if (sensorIndication.NoLinkWithSensor)
            {
                return(_noLinkFormat);
            }
            return(sensorIndication.Indication.ToString(_format));
        }
Example #5
0
        public string ConvertToSomething(BytesPair?value)
        {
            if (!value.HasValue)
            {
                return("?");
            }

            var si = new SensorIndicationDoubleBasedOnBytesPair(value.Value, _multiplier, _addition, _noLinkCode);

            if (si.NoLinkWithSensor)
            {
                return("Обрыв датчика");
            }

            return(si.Indication.ToString(_format));
        }
Example #6
0
        private void CmdListenerKsmOnDataReceived(IList <byte> bytes, IList <BytesPair> data)
        {
            _uiNotifier.Notify(() =>
            {
                Version   = IsFullVersion ? new TextFormatterDotted(UnknownText).Format(data[34]) : OkLinkText;
                WorkStage = new TextFormatterWorkStage().Format(data[8]);

                // КСМ, бит "Нет связи с МУК вентилятора испарителя" взведен
                if (data[16].HighFirstUnsignedValue.GetBit(2))
                {
                    MukInfo3      = NoLinkText;
                    MukInfoColor3 = NoLinkColor;

                    EvaporatorFanControllerInfo      = NoLinkText;
                    EvaporatorFanControllerInfoColor = NoLinkColor;

                    SensorOuterAirInfo      = NoLinkText;
                    SensorOuterAirInfoColor = NoLinkColor;

                    SensorRecycleAirInfo      = NoLinkText;
                    SensorRecycleAirInfoColor = NoLinkColor;

                    SensorSupplyAirInfo      = NoLinkText;
                    SensorSupplyAirInfoColor = NoLinkColor;

                    FanEvaporatorInfo  = NoLinkText;
                    FanEvaporatorColor = NoLinkColor;

                    CalculatedTemperatureSetting = NoLinkText;
                }

                // КСМ, бит "Нет связи с МУК тёплого " взведен
                if (data[16].HighFirstUnsignedValue.GetBit(6))
                {
                }


                var oneWireSensor1 = new SensorIndicationDoubleBasedOnBytesPair(data[0], 0.01, 0.0, new BytesPair(0x85, 0x00));
                if (oneWireSensor1.NoLinkWithSensor)
                {
                    SensorInteriorAirInfo1      = NoSensorText;
                    SensorInteriorAirInfoColor1 = NoSensorColor;
                }
                else
                {
                    SensorInteriorAirInfo1      = oneWireSensor1.Indication.ToString("f2");
                    SensorInteriorAirInfoColor1 = OkSensorColor;
                }

                var oneWireSensor2 = new SensorIndicationDoubleBasedOnBytesPair(data[1], 0.01, 0.0, new BytesPair(0x85, 0x00));
                if (oneWireSensor2.NoLinkWithSensor)
                {
                    SensorInteriorAirInfo2      = NoSensorText;
                    SensorInteriorAirInfoColor2 = NoSensorColor;
                }
                else
                {
                    SensorInteriorAirInfo2      = oneWireSensor2.Indication.ToString("f2");
                    SensorInteriorAirInfoColor2 = OkSensorColor;
                }
            });
        }
Example #7
0
        private void CmdListenerKsmOnDataReceived(IList <byte> bytes, IList <BytesPair> data)
        {
            _uiNotifier.Notify(() =>
            {
                Version   = IsFullVersion ? new TextFormatterDotted(UnknownText).Format(data[27]) : OkLinkText;
                WorkStage = new TextFormatterWorkStage().Format(data[8]);

                // КСМ, бит "Нет связи с МУК заслонки наружного воздуха" взведен
                if (data[16].HighFirstUnsignedValue.GetBit(0))
                {
                    MukInfo2      = NoLinkText;
                    MukInfoColor2 = NoLinkColor;

                    FlapAirOuterDiagInfo5Color = NoLinkColor;
                    FlapAirOuterDiagInfo5      = NoLinkText;

                    FlapAirOuterDiagInfo6Color = NoLinkColor;
                    FlapAirOuterDiagInfo6      = NoLinkText;

                    // TODO: do I need check emerson here?
                    EmersonInfo      = NoLinkText;
                    EmersonInfoColor = NoLinkColor;
                }

                // КСМ, бит "Нет связи с МУК вентилятора испарителя" взведен
                if (data[16].HighFirstUnsignedValue.GetBit(2))
                {
                    MukInfo3      = NoLinkText;
                    MukInfoColor3 = NoLinkColor;

                    EvaporatorFanControllerInfo      = NoLinkText;
                    EvaporatorFanControllerInfoColor = NoLinkColor;

                    FanEvaporatorInfo  = NoLinkText;
                    FanEvaporatorColor = NoLinkColor;

                    CalculatedTemperatureSetting = NoLinkText;
                }

                var siOuter = new SensorIndicationDoubleBasedOnBytesPair(data[0], 0.01, 0.00, new BytesPair(0x85, 0x00));
                if (siOuter.NoLinkWithSensor)
                {
                    SensorOuterAirInfo      = NoSensorText;
                    SensorOuterAirInfoColor = NoSensorColor;
                }
                else
                {
                    SensorOuterAirInfo      = siOuter.Indication.ToString("f2");
                    SensorOuterAirInfoColor = OkSensorColor;
                }

                var siRecycle = new SensorIndicationDoubleBasedOnBytesPair(data[4], 0.01, 0.00, new BytesPair(0x85, 0x00));
                if (siRecycle.NoLinkWithSensor)
                {
                    SensorRecycleAirInfo      = NoSensorText;
                    SensorRecycleAirInfoColor = NoSensorColor;
                }
                else
                {
                    SensorRecycleAirInfo      = siRecycle.Indication.ToString("f2");
                    SensorRecycleAirInfoColor = OkSensorColor;
                }

                // КСМ, бит "Нет связи с МУК тёплого пола" взведен
                if (data[16].HighFirstUnsignedValue.GetBit(6))
                {
                    MukInfo5      = NoLinkText;
                    MukInfoColor5 = NoLinkColor;

                    MukWarmFloorPwm      = NoLinkText;
                    MukWarmFloorPwmColor = NoLinkColor;
                }
                else
                {
                    //MukInfo5 = OkLinkText;
                    MukInfoColor5 = OkLinkColor;
                }

                // BS-SM state.
                if (data[17].HighFirstUnsignedValue.GetBit(0))
                {
                    // TODO: Faults reset?
                    BsSmInfo         = NoLinkText;
                    BsSmInfoColor    = NoLinkColor;
                    Voltage3000Color = UnknownColor;
                    Voltage3000Text  = HiVoltageUnknownText;
                }

                // BVS state.
                if (data[17].HighFirstUnsignedValue.GetBit(1))
                {
                    // TODO: AutoVm reset?
                    BvsInfo         = NoLinkText;
                    BvsInfoColor    = NoLinkColor;
                    Voltage380Color = UnknownColor;
                    Voltage380Text  = HiVoltageUnknownText;

                    AutoVm1.IsOk = null;
                    AutoVm2.IsOk = null;
                    AutoVm3.IsOk = null;
                    AutoVm4.IsOk = null;
                    AutoVm5.IsOk = null;
                    AutoVm6.IsOk = null;
                    AutoVm7.IsOk = null;

                    AutoVm8.IsOk  = null;
                    AutoVm9.IsOk  = null;
                    AutoVm10.IsOk = null;
                }
                else
                {
                    BvsInfo      = OkLinkText;
                    BvsInfoColor = OkLinkColor;
                }
            });
        }