1、snmp 应用层网络管理协议
2、基于udp实现
3、snmp协议主要功能包括
服务端发送get 读请求节点的udp数据包
客服端设备主动进行trap上报数据
4、下图是PC机作为服务端发送get请求命令,
请求命令格式如下图:

5、设备节点主动trap上报报警信息实现代码

#include "trap.h"
#include "delay.h"
#include "sensor.h"
#include "FreeRTOS.h"
#include "semphr.h"
#include "snmp.h"
#include "tcpip.h"
#include "minIni.h"#include "dm9000.h"#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
#include "camera.h"
#include "adc.h"
#include "rtc.h"#include "lwip_comm.h"#define NUM_PRIVATE_TRAP_LIST    5
extern struct snmp_msg_trap trap_msg;struct trap_list trap_list_bank[NUM_PRIVATE_TRAP_LIST];
extern void vSendTrapCallback2( void * parameters );
struct trap_list * getNextFreePrivateTrapList();
extern void freePrivateTrapList(struct trap_list * list);void trap_task(void * pvParameters)
{portTickType xLastWakeTime;static unsigned char trap_flag=1;u8_t snmpauthentraps_set= 2;static ip_addr_t trap_addr;char msg_vol[5],msg_cur[5];struct snmp_obj_id objid = {10, {1,3,6,1,4,1,1,1,1}};//struct snmp_obj_id objid[22];
//  struct snmp_obj_id objid_vol = {10, {1,3,6,1,4,1,1,1,1}};
//  struct snmp_obj_id objid_cur = {10, {1,3,6,1,4,1,1,1,2}};
//  struct snmp_obj_id objid_tem = {10, {1,3,6,1,4,1,1,1,3}};
//  struct snmp_obj_id objid_hum = {10, {1,3,6,1,4,1,1,1,4}};
//  struct snmp_obj_id objid_water = {10, {1,3,6,1,4,1,1,1,5}};
//  struct snmp_obj_id objid_door = {10, {1,3,6,1,4,1,1,1,6}};
//  struct snmp_obj_id objid_sys12= {10, {1,3,6,1,4,1,1,1,7}};
//  struct snmp_obj_id objid_bak12 = {10, {1,3,6,1,4,1,1,1,8}};
//  struct snmp_obj_id objid_ups= {10, {1,3,6,1,4,1,1,1,9}};
//  struct snmp_obj_id objid_ac24 = {10, {1,3,6,1,4,1,1,1,10}};
//  struct snmp_obj_id objid_ac1= {10, {1,3,6,1,4,1,1,1,11}};
//  struct snmp_obj_id objid_ac2 = {10, {1,3,6,1,4,1,1,1,12}};
//  struct snmp_obj_id objid_ac3= {10, {1,3,6,1,4,1,1,1,13}};
//
//  struct snmp_obj_id objid_fan= {10, {1,3,6,1,4,1,1,1,14}};
//  struct snmp_obj_id objid_alarm = {10, {1,3,6,1,4,1,1,1,15}};
//  struct snmp_obj_id objid_light= {10, {1,3,6,1,4,1,1,1,16}};
//
//  struct snmp_obj_id objid_heat= {10, {1,3,6,1,4,1,1,1,17}};
//  struct snmp_obj_id objid_dc1= {10, {1,3,6,1,4,1,1,1,18}};
//  struct snmp_obj_id objid_dc2 = {10, {1,3,6,1,4,1,1,1,19}};
//  struct snmp_obj_id objid_dc3= {10, {1,3,6,1,4,1,1,1,20}};
//  struct snmp_obj_id objid_dc4= {10, {1,3,6,1,4,1,1,1,21}};struct snmp_varbind *vb;struct trap_list *vb_list;(void) pvParameters;//  trap_addr.addr=((u32_t)((lwipdev.snmpip[3]) & 0xff) << 24) | \
//                                           ((u32_t)((lwipdev.snmpip[2]) & 0xff) << 16) | \
//                                           ((u32_t)((lwipdev.snmpip[1]) & 0xff) << 8)  | \
//                                              (u32_t)((lwipdev.snmpip[0]) & 0xff);trap_addr.addr=((u32_t)((210) & 0xff) << 24) | \((u32_t)((0) & 0xff) << 16) | \((u32_t)((168) & 0xff) << 8)  | \(u32_t)((192) & 0xff);snmp_trap_dst_ip_set(0,&trap_addr);snmp_trap_dst_enable(0,trap_flag);snmp_set_snmpenableauthentraps(&snmpauthentraps_set);for ( ;; ){       xLastWakeTime = xTaskGetTickCount();      vb_list = getNextFreePrivateTrapList();vb_list->spc_trap = 12;changed_trap(&objid,SYS12_STAT);//    if(sys12_stat_changed)
//    {//     sys12_stat_changed=0;
//     objid[6]=objid_sys12;
//       changed_trap(&objid[6],SYS12_STAT);
//    }
//      if(bak12_stat_changed)
//      {//       bak12_stat_changed=0;
//     objid[7]=objid_bak12;
//       changed_trap(&objid[6],BAK12_STAT);
//      }
//    if(ups_stat_changed)
//      {//       ups_stat_changed=0;
//     objid[8]=objid_ups;
//       changed_trap(&objid[8],UPS_STAT);
//      }
//    if(ac24_stat_changed)
//      {//       ac24_stat_changed=0;
//     objid[9]=objid_ac24;
//       changed_trap(&objid_ac24,AC24_STAT);
//      }               // Wait for the next cycle.vTaskDelayUntil( &xLastWakeTime, 1000);}
}/** 函数名:struct trap_list * getNextFreePrivateTrapList()* 描述  :发送还没发送的trap  并标记已发送* 输入  :无* 输出  :无  */
struct trap_list * getNextFreePrivateTrapList()
{u8_t index;struct trap_list * result = NULL;   for(index = 0; index < NUM_PRIVATE_TRAP_LIST; index++){if(!trap_list_bank[index].in_use){trap_list_bank[index].in_use = 1;result = &trap_list_bank[index];         break;}}   return result;
}/** 函数名:void vSendTrapCallback2( void * parameters )* 描述  :trap上报回调函数* 输入  :无* 输出  :无  */
void vSendTrapCallback2( void * parameters )
{struct trap_list * param;if( parameters != NULL ){param = (struct trap_list *) parameters;trap_msg.outvb = param->vb_root;snmp_send_trap(SNMP_GENTRAP_ENTERPRISESPC,param->ent_oid,param->spc_trap);freePrivateTrapList(param);}
}/** 函数名:void freePrivateTrapList(struct trap_list * list)* 描述  :trap上报完释放内存* 输入  :无* 输出  :无    */
void freePrivateTrapList(struct trap_list * list)
{snmp_varbind_list_free(&list->vb_root);list->ent_oid = NULL;list->spc_trap = 0;list->in_use = 0;
}/** 函数名:void changed_trap(struct snmp_obj_id *objid,float VOL)* 描述  :指定节点  上报对应的  状态量* 输入  :无* 输出  :无  */
void changed_trap(struct snmp_obj_id *objid,u8 data)
{char msg[5];static u8 msglen;struct trap_list *vb_list;struct snmp_varbind *vb;vb_list->ent_oid =objid;sprintf(msg, "%d", data);msglen=strlen(msg);vb = snmp_varbind_alloc(objid, 4, msglen);if (vb!= NULL){msglen=strlen(msg);memcpy (vb->value, &msg, msglen);         snmp_varbind_tail_add(&vb_list->vb_root,vb);}                     tcpip_callback(vSendTrapCallback2, vb_list);
}

freertos 基于lwip实现的snmp协议相关推荐

  1. Java基于Snmp4j库实现SNMP协议的调用

    在进行SNMP协议调用之前,要先保证主机和目的机器可以通信,可以用ping工具来尝试连通性,如果可以通信,可直接跳转到第二章节和第三章节查看协议的调用:如果不能通信,即不在同一个网段,那么需要先按照第 ...

  2. lwIP中的snmp

    一.概述 lwIP官网介绍snmp lwip-SNMP移植 LwIP的SNMP学习笔记 RT论坛上的"LWIP下的SNMP协议" lwip下SNMP的移植实现,表的获取问题 How ...

  3. 配置snmp_多种设备基于 SNMP 协议的敏感信息泄露漏洞数据分析报告

    作者:知道创宇404实验室 1. 更新情况 2. 事件概述 SNMP协议[1],即简单网络管理协议(SNMP,Simple Network Management Protocol),默认端口为 161 ...

  4. zabbix基于SNMP 协议监控路由器

    zabbix基于SNMP 协议监控路由器 步骤 步骤超级方便. 1. 路由器上开启snmp 2. 确保外网能访问到 3. 用snmpwalk测试 4. 添加zabbix主机,SNMP interfac ...

  5. 基于snmp协议监控华为s5720交换机

    类别 节点信息 对应节点的OID 备注 设备状态监控 CPU利用率 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5 盒式设备获取CPU利用率和内存利用率的大小还可以使用另一个节点 ...

  6. 【正点原子FPGA连载】第三十一章基于lwip的echo server实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

    第三十一章基于lwip的echo server实验 随着物联网的兴起,万物互联需要一个强大而又灵活的协议体系,TCP/IP协议得天独厚,而在嵌入式网络设备中,由于硬件资源的限制,需要特殊的实现方式.L ...

  7. NetDevOps — SNMP 协议

    目录 文章目录 目录 SNMP 协议架构 局限性 SNMP SNMP 协议的第 1 个相关 RFC 1065 发布于 1988 年,距今已有 30 年. SNMP 在网络监控领域已经被广泛使用,例如: ...

  8. SNMP协议介绍和操作截图

    第一章 SNMP协议介绍 SNMP协议 基于TCP/IP的网络管理包含3个组成部分: 1) 一个管理信息库MIB(Management Information Base).管理信息库包含所有代理进程的 ...

  9. 系统监控之SNMP协议理解

    使用Mycat分布式数据库中间件时需要对各个性能指标进行监控,官方已经提供了一个监控软件,于是讨论起来监控是怎么具体可能有哪些实现,虽然知道已经有很多的监控软件可以使用,比如zabbix,但是今天听同 ...

最新文章

  1. linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码
  2. android 屏蔽快速点击,Android-如何防止用户过快频繁点击按钮(一)
  3. 句柄与指针的区别(二)
  4. 如何修改firefox的默认缩放比
  5. BZOJ4471 : 随机数生成器Ⅱ
  6. presto distinct用法
  7. Futter基础第1篇: 实现输出Hello World【MaterialApp、Scaffold】
  8. 番茄是水果还是蔬菜这事儿,居然闹到了最高法院?!
  9. java中enum怎么用_java 中enum的使用方法详解
  10. 思科路由器Ez***测试
  11. 网页版微博HTML解析和提取,使用Beautiful Soup抽取网页数据,解析微博用户关注信息...
  12. HenCoder Android开发进阶系列学习笔记
  13. GOF设计模式——工厂模式
  14. linux系统中使用百度云盘
  15. .md文件中插入本地图片并显示图片预览
  16. B2B平台显现5大价值特征和6种商业创新模式
  17. LeetCode题解(1647):字符频次唯一的最小删除次数(Python)
  18. 机器人运动估计——IMU运动方程与ESKF原理介绍(下)
  19. Python 操作 Excel,如何又快又好?
  20. ubuntu安装pcl 教程

热门文章

  1. 不知名的用户可以通过病毒推文赚钱
  2. CSS元素的width和水平margin的设置
  3. 【读论文(paper reading)】Hydrophobic and Hydrophilic Solid-Fluid Interaction
  4. 为什么要软件测试?测试可追溯性会带来什么改变?
  5. 关于阿里云备案和腾讯云备案的吐槽
  6. 公告 | FISCO BCOS v3.0-rc4发布,新增Max版,可支撑海量交易上链
  7. 黄聪:Scrapy 轻松定制网络爬虫
  8. 水和计算机房怎么用英语写,和“水”相关的英文表达,你能说出几个?
  9. 山西高中计算机会考成绩查询入口,2018年山西会考成绩查询时间及入口
  10. python全栈开发—函数整理(最后一次整理,不能再全了)