在学习@4489@xinmeng_wit@sipower经验,今天把监控数据上传到阿里云平台了,这里分享一下成果吧:
上网的代码,前面的网友已经写得很清楚了,我这里主要是说一下我的实现思路:
创建一个定时器每一秒钟用串口送获取电源监控模块的命令,接收到数据后生成u8g2在本地的OLED屏展示,同时上报服务器:
/*
* 功能:创建串口1接收任务,接收数据并把数据解析出来,存放在buff中,由U8g2显示函数定时刷新。上传服务器
*
*
*/
static void application_task1_entry(void *arg)
{
int ret = -1;
uint32_t rx_size = 0;
float Irms=0; //电流有效值
float Vrms=0; //电压有效值
float Frequency=0; //频率
float PowerFactor=1;//功率因数
float PActive=0; //有功功率
double W_KWH=0; //累积功耗
int n=0;
const char *dev_id = "0";
int pkt_id = 0;
char report_buf[128];
while (1) {
ret = hal_uart_recv_II(&uart1, uart_data_buf, 24,
&rx_size, UART_RX_TIMEOUT);
// LOGD(TAG, "RECV len:%d data:%x",rx_size,uart_data_buf[0]);
if (rx_size == 24)
{
if((uart_data_buf[0] == 0x55) && (uart_data_buf[0] == 0x55))
{
Vrms=(double)(((uint32_t)uart_data_buf[6]<<24)|((uint32_t)uart_data_buf[7]<<16)|((uint32_t)uart_data_buf[8]<<8)|((uint32_t)uart_data_buf[9]<<0))/1000.0;
Irms=(double)(((uint32_t)uart_data_buf[10]<<24)|((uint32_t)uart_data_buf[11]<<16)|((uint32_t)uart_data_buf[12]<<8)|((uint32_t)uart_data_buf[13]<<0))/1000.0;
PActive=(double)(((uint32_t)uart_data_buf[14]<<24)|((uint32_t)uart_data_buf[15]<<16)|((uint32_t)uart_data_buf[16]<<8)|((uint32_t)uart_data_buf[17]<<0))/1000.0;
Frequency=(double)(((uint32_t)uart_data_buf[18]<<24)|((uint32_t)uart_data_buf[19]<<16)|((uint32_t)uart_data_buf[n++]<<8)|((uint32_t)uart_data_buf[20]<<0))/1000.0;
sprintf(disp_Vrms,"%.1fV",Vrms);
sprintf(disp_Irms,"%.2fA",Irms);
sprintf(disp_PActive,"%.2fW",PActive);
sprintf(disp_Frequency,"%.2fHz",Frequency);
snprintf(report_buf,128,"{\\\"temperature\\\":8,\\\"LightVolt\\\":%.1f,\\\"ActivePower\\\":%.2f,\\\"LightCurrent\\\":%.2f}",Vrms,PActive,Irms);
w800_living_idmpp(dev_id, report_buf, &pkt_id); }
}
aos_msleep(50);
}
aos_task_exit(0);
}
非常感谢好人的帮忙,原来想用http给我自己的服务器发数据来展示数据的,结果连上一看,我的服务器是https,这样还需要带证书。唉,只好屈服阿里吧,用着他的服务器先完成作业。
引用: 梦溪开物 发表于 2022-5-11 15:36 楼主说的要带”证书“是什么呀?
就是,https相对http要多带一个东西。
引用: full_stack 发表于 2022-6-5 01:34 自己的服务器是在哪建立的?
阿里云