修改了Web后台的部分界面,增加了HAmqtt中的总电量传感器,后台新增mqtt上报频率设置

This commit is contained in:
OOP
2025-03-03 21:49:41 +08:00
parent e1e00b60ce
commit 9f9d4c7a56
4468 changed files with 1473046 additions and 10728 deletions

View File

@@ -0,0 +1,226 @@
/**
*****************************************************************************
* @file rtc.h
* @author Yancy
* @version V1.0.0
* @date 19-June-2013
* @brief rtc module driver header file
* change log:
* Modify by Sam -20140624
*****************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT 2013 MVSilicon </center></h2>
*/
#ifndef __RTC_H__
#define __RTC_H__
#ifdef __cplusplus
extern "C" {
#endif//__cplusplus
#include "type.h"
/**
* <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD>memory<72>ֽ<EFBFBD><D6BD><EFBFBD>,<2C>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾݴ<C9BE><DDB4>Լ<EFBFBD><D4BC><EFBFBD>Ҫ֧<D2AA>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD>
*/
#define MEM_SIZE_PER_ALARM 6
/**
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ֧<CAB1><D6A7>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
#define MAX_ALARM_NUM 2
/**
* <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
*/
#define ALARM_STATUS_OPENED 0x01 /**< <20><><EFBFBD><EFBFBD>״̬ */
#define ALARM_STATUS_CLOSED 0x02 /**< <20>ر<EFBFBD>״̬ */
#define ALARM_STATUS_UNUSED 0x03 /**< δʹ<CEB4><CAB9>״̬ */
/**
* <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
*/
typedef enum _RTC_ALARM_MODE
{
ALARM_MODE_ONCE_ONLY = 1, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ALARM_MODE_PER_DAY, /**< ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ALARM_MODE_PER_WEEK, /**< ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ALARM_MODE_WORKDAY, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ALARM_MODE_USER_DEFINED, /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
ALARM_MODE_MAX,
} RTC_ALARM_MODE;
#pragma pack(1) /*Ensure this structure is byte aligned, and not use padding bytes */
typedef struct _ALARM_INFO
{
uint32_t AlarmTimeAsSeconds;
uint8_t AlarmStatus : 2;
uint8_t AlarmMode : 4;
uint8_t AlarmData; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>bit0<74><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>죬bit6<74><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} ALARM_TIME_INFO;
#pragma pack()
/**
* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><E5B6A8>
*/
typedef struct _RTC_DATE_TIME
{
uint16_t Year; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint8_t Mon; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint8_t Date; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint8_t WDay; /**< <20><><EFBFBD>ںţ<DABA>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>1~6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>6 */
uint8_t Hour; /**< Сʱ<D0A1><CAB1> */
uint8_t Min; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
uint8_t Sec; /**< <20><><EFBFBD><EFBFBD> */
} RTC_DATE_TIME;
/**
* ũ<><C5A9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><E5B6A8>
*/
typedef struct _RTC_LUNAR_DATE
{
uint16_t Year; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
uint8_t Month; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
uint8_t Date; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
uint8_t MonthDays; /**< ũ<><C5A9>ÿ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30 or 29*/
bool IsLeapMonth; /**< <20>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>*/
} RTC_LUNAR_DATE;
/**
* @brief RTCģ<43><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
* @param AlarmWorkMem:<3A>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӹ<EFBFBD><D3B9>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD>׵<EFBFBD>ַ<EFBFBD><D6B7>
* @param AlarmWorkMemSize<7A><65><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӹ<EFBFBD><D3B9>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD><D5BC>Ĵ<EFBFBD>С<EFBFBD><D0A1>AlarmWorkMemSize<7A>ɿͻ<C9BF>ϣ<EFBFBD><CFA3>ͬʱ֧<CAB1>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>memory<72>ռ<EFBFBD><D5BC><EFBFBD>rtc.h<><68><EFBFBD>ɺ궨<C9BA><EAB6A8>MEM_SIZE_PER_ALARMȷ<4D><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>
* 8<><38><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ô<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD>СӦΪMEM_SIZE_PER_ALARM*8<><38><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
* #define MAX_ALARM_NUM 8 //<2F><><EFBFBD><EFBFBD>ͬʱ֧<CAB1><D6A7>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* uint8_t AlarmWorkMem[MEM_SIZE_PER_ALARM * MAX_ALARM_NUM];
* RtcInit(AlarmWorkMem, MEM_SIZE_PER_ALARM * MAX_ALARM_NUM);
* @return NONE
*/
void RtcInit(uint8_t* AlarmWorkMem, uint8_t AlarmWorkMemSize);
/**
* @brief <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
* @param ʱ<><CAB1><EFBFBD><EFBFBD><E1B9B9>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ڷ<EFBFBD><DAB7>ص<EFBFBD>ǰʱ<C7B0><CAB1>
* @return NONE
*/
void RtcGetCurrTime(RTC_DATE_TIME* CurrTime);
/**
* @brief <20><><EFBFBD>õ<EFBFBD>ǰʱ<C7B0><CAB1>
* @param ʱ<><CAB1><EFBFBD><EFBFBD><E1B9B9>ָ<EFBFBD>룬ΪҪ<CEAA><D2AA><EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>ֵ
* @return NONE
*/
void RtcSetCurrTime(RTC_DATE_TIME* CurrTime);
/**
* @brief Get days count in the month of the year
* @param Year: the year number
* @param Month: the month number
* @return days count in the month of the year
*/
uint8_t RtcGetMonthDays(uint16_t Year, uint8_t Month);
/**
* @brief <20><>ȡij<C8A1><C4B3><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
* @param AlarmTime<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><E1B9B9>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
* @param AlarmMode: <20><><EFBFBD><EFBFBD>ģʽָ<CABD><EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
* @param ModeData: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ʱ<EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͬʱ<CDAC><CAB1>Ч<EFBFBD><D0A7>
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>FALSE<53><45>
*/
bool RtcGetAlarmTime(uint8_t AlarmID, uint8_t* AlarmMode, uint8_t* AlarmData, RTC_DATE_TIME* AlarmTime);
/**
* @brief <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
* @param AlarmTime<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><E1B9B9>ָ<EFBFBD><EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
* @param AlarmMode: <20><><EFBFBD><EFBFBD>ģʽ
* @param ModeData: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ʱ<EFBFBD><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͬʱ<CDAC><CAB1>Ч<EFBFBD><D0A7>
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>FALSE<53><45>
*/
bool RtcSetAlarmTime(uint8_t AlarmID, uint8_t AlarmMode, uint8_t AlarmData, RTC_DATE_TIME* AlarmTime);
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
* @param AlarmStatus<75><73>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>״̬
* @arg ALARM_STATUS_OPENED
* @arg ALARM_STATUS_CLOSED
* @arg ALARM_STATUS_UNUSED
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD>FALSE<53><45>
*/
bool RtcAlarmSetStatus(uint8_t AlarmID, uint8_t AlarmStatus);
/**
* @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD>ӵ<EFBFBD>״̬(<28><><EFBFBD><EFBFBD>/<2F>ر<EFBFBD>ʹ<CEB4><CAB9>)<29><>
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
* ALARM_STATUS_OPENED
* ALARM_STATUS_CLOSED
* ALARM_STATUS_UNUSED
*/
uint8_t RtcGetAlarmStatus(uint8_t AlarmID);
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>ˡ<EFBFBD>
* @param NONE
* @return <20><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾû<CABE><C3BB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>0<EFBFBD><30>ֵ<EFBFBD><D6B5>ʾ<EFBFBD><CABE>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
*/
uint8_t RtcCheckAlarmFlag(void);
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
* @param NONE
* @return NONE
*/
void RtcAlarmIntClear(void);
/**
* @brief <20><><EFBFBD>ӵ<EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>󣬱<EFBFBD><F3A3ACB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD>
* @param NONE
* @return NONE
*/
void RtcAlarmArrivedProcess(void);
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תũ<D7AA><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param DateTime:<3A><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><E1B9B9>ָ<EFBFBD><EFBFBD><EBA3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param LunarDate:ũ<><C5A9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><E1B9B9>ָ<EFBFBD><EFBFBD><EBA3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return NONE
*/
void SolarToLunar(RTC_DATE_TIME* DateTime, RTC_LUNAR_DATE* LunarDate);
/**
* @brief <20><>ȡũ<C8A1><C5A9><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
* @param Year:ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20><><EFBFBD><EFBFBD>0-9, <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>: {"<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>"}
*/
uint8_t GetHeavenlyStem(uint16_t Year);
/**
* @brief <20><>ȡũ<C8A1><C5A9><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>֧
* @param Year:ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <20><><EFBFBD><EFBFBD>0-11, <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6>֧: {"<22><>", "<22><>", "<22><>", "î", "<22><>", "<22><>", "<22><>", "δ", "<22><>", "<22><>", "<22><>", "<22><>"}
* <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6>Ф: {"<22><>", "ţ", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>"}
*/
uint8_t GetEarthlyBranch(uint16_t Year);
#ifdef __cplusplus
}
#endif//__cplusplus
#endif