import React, { useEffect, useState } from 'react'; import * as datav from '@jiaminghi/data-view-react'; import styles from './sliderData.less'; import { connect } from '@@/plugin-dva/exports'; import { JSONPath } from 'jsonpath-plus'; interface propsData { data: any; MQTTMessage: any; } /** * 底部轮播 * @constructor */ const SliderData: React.FC = (props) => { const { data, MQTTMessage } = props; const [voltage, setVoltage] = useState({ ua: 0 }); const [current, setCurrent] = useState({ ia: 0 }); const [activePower, setActivePower] = useState({ active_power: 0 }); const [controlData, setControlData] = useState({ power: data.power ? data.power : 0, mode: data.mode, set_temp: data.set_temp, temperature: data.temperature, humidity: data.humidity, air_quality: data.air_quality, co2: data.co2, }); useEffect(() => { // 电 if ( MQTTMessage.message?.DeviceCode === 'DT645-4G' && MQTTMessage.message?.SubDeviceId !== '' && data.electric_id !== '' && MQTTMessage.message?.SubDeviceId === data.electric_id ) { // 电压 if (Object.keys(MQTTMessage.message.Data)[0] === 'voltage') { setVoltage({ ua: JSONPath({ json: MQTTMessage.message.Data, path: '$.voltage.ua' })[0] }); } // 电流 if (Object.keys(MQTTMessage.message.Data)[0] === 'current') { setCurrent({ ia: JSONPath({ json: MQTTMessage.message.Data, path: '$.current.ia' })[0] }); } // 用电量 if (Object.keys(MQTTMessage.message.Data)[0] === 'power') { setActivePower({ active_power: JSONPath({ json: MQTTMessage.message.Data, path: '$.power.active_power', })[0], }); } } //温湿度等 if ( MQTTMessage.message?.DeviceCode === data.device_id && MQTTMessage.message?.SubDeviceId === '' ) { setControlData({ power: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.power' })[0], mode: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.mode' })[0], set_temp: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.set_temp' })[0], temperature: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.temperature' })[0], humidity: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.humidity' })[0], air_quality: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.air_quality' })[0], co2: JSONPath({ json: MQTTMessage.message.Data, path: '$.status.co2' })[0], }); } }, [MQTTMessage.message?.DeviceCode && MQTTMessage.message?.SubDeviceId]); const handleCo2Grade = (co2: number) => { if (co2 >= 0 && co2 < 800) { return '#90c456'; } if (co2 >= 800 && co2 < 1600) { return '#eceb3b'; } if (co2 >= 1600) { return '#e4151b'; } return ''; }; const handlePm25Grade = (pm25: number) => { if (pm25 >= 0 && pm25 <= 50) { return '#90c456'; } if (pm25 > 50 && pm25 < 150) { return '#eceb3b'; } if (pm25 >= 150) { return '#e4151b'; } return ''; }; return (
{data?.home_name ? data?.home_name : '我的家'}
管理员 {data?.admin}
是否在线 {/*{data?.is_online ? '在线' : '离线'}*/} 在线
运行状态 {{ 0: '关', 1: '开' }[controlData.power]}
模式 {{ 0: '制冷', 1: '制热', 2: '除湿', 3: '送风', 4: '加湿' }[controlData?.mode]}
设定温度
{controlData?.set_temp}°C
室内温度
{controlData?.temperature}°C
湿度
{controlData?.humidity}%rh
PM25
{controlData?.air_quality}μg/m³
CO2
{controlData?.co2}
用电量
{activePower?.active_power}kwh
电压
{voltage?.ua}V
电流
{current?.ia}A
); }; export default connect(({ MQTTMessage }: any) => ({ MQTTMessage, }))(SliderData);