package com.ruoyi.bst.device.service;

import com.ruoyi.bst.device.domain.Device;
import com.ruoyi.bst.device.domain.DeviceVO;
import com.ruoyi.bst.device.domain.enums.DevicePowerStatus;
import com.ruoyi.iot.constants.IotConstants;
import com.ruoyi.iot.domain.response.CommandResponse;
import com.ruoyi.iot.interfaces.IotDevice;
import org.apache.poi.hpsf.Decimal;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

public interface DeviceIotService {


    /**
     * 刷新设备数据
     * @param deviceId
     * @param onlineTypeCommand
     */
    void pullDeviceInfo(Long deviceId, String onlineTypeCommand);

    /**
     * 拉取最新设备数据
     */
    void pullDeviceInfo(DeviceVO device, String onlineType);


    /**
     * 拉取设备信息，并保存到数据库
     */
    void pullDeviceInfoList(List<DeviceVO> list, String onlineType);

    /**
     * 根据mac修改在线状态
     */
    int updateOnlineStatusByMac(String mac, String status);

    /**
     * 开关设备
     */
    int switchDevice(Long deviceId, boolean open, String reason);

    /**
     * 切换设备通电状态（通/断电）
     *
     * @param device 设备id
     * @param status 通电状态
     * @param reason
     */
    int switchDevice(DeviceVO device, DevicePowerStatus status, String reason);



    /**
     * 设置电量系数
     */
    boolean setWxs(Long deviceId, BigDecimal wxs, String reason);

    /**
     * 设置反转参数
     */
    boolean setSet(Long deviceId, String set, String reason);


    /**
     * 记录初始化读数
     */
    int initTotalEle(Long deviceId);

}
