首页 > 其他 > 详细

zabbix map添加button 按钮利用mqtt实现远程控制

时间:2021-01-28 09:07:52      阅读:24      评论:0      收藏:0      [点我收藏+]
1、首先要了解整个页面架构;
(1)从拓扑图页面开始:在zabbix根目录下sysmaps.php;
(2)该文件中map内容由app/views/monitoring.map.view.php 文件所创建;因此入口文件为该文件;
2、首先修改入口文件:monitoring.map.php;
(1)该文件主要的对象为 CWidget();该对象定义了所有内容。接下来系统需求的各种数据均在这个对象中查找;
(2)在该文件下添加本次修改的衔接文件:MonitorModifyBynnts.php;
//调用nnts修改的页面
require_once ‘../zabbix/nnts/MonitorModifyBynnts.php‘;

3、衔接文件:MonitorModifyBynnts.php
(1)在该文件开头调用整个修改项目的参数定义文件PhpToHtmlArray.php;
(2)该文件主要内容是switch()函数,通过点击拓扑图不同的maps项传递sysmapsID值,并把该值传递给switch()函数;
(3)sysmapsiD值的获得在PhpToHtmlArray.php文件中通过定义全局变量获得:$GLOBALS[‘MapButtonSysmapid‘]=$data[‘map‘][‘sysmapid‘];//定义地图sysmapid参数
(3)当sysmapsID匹配switch后调用整个程序的主体文件:MonitorModifyBynnts.php
4、参数定义文件:PhpToHtmlArray.php
(1)该文件主要获得两个全局变量参数;1、sysmapsiD参数:$GLOBALS[‘MapButtonSysmapid‘];2、屏幕缩放参数:$GLOBALS[‘MapButtonScale‘];
(2)屏幕缩放参数的获得;
//首先确定屏幕缩放参数在CWidget()对象中,并且相对应的内容是在get_icon(‘fullscreen‘)对象中,并且属性是:‘data-layout-mode‘对应的值;
//首先将对象转化为数组
$nl_list =array(get_icon(‘fullscreen‘));
$arr=json_decode(json_encode($nl_list), true);

 //遍历数组并提取相关参数属性‘data-layout-mode‘,二维数组 
 foreach($arr as $key1=>$arr_item){
    $data_layout=array($arr_item["attributes"]);     
    foreach($data_layout as $key2=>$value){
        $GLOBALS[‘MapButtonScale‘]=$value[‘data-layout-mode‘];
 }}

5、主体文件MapControllerButton.html解读;
(1)该文件主要有三大部分组成:1、CSS样式设计;2、checkBOX按钮响应屏幕缩放参数定位;3、响应checnBOX按钮开关程序;4、调用mqtt publish程序;
(2)CSS样式在head头文件中引用。CSS样式主要定义了checkBOX样式。采用div和class元素;
(3)checkBOX按钮利用php脚本响应屏幕缩放参数并调用响应html文件,在相应的html文件中不同的地方是top位置属性。
(4)相应按钮开关程序主要在js脚本内容:
A.该内容主要有两类主要函数组成,第一个是窗体自动调动函数,主要为初始化按钮状态做准备,初始化按钮状态,通过调用json(MapButtonStatus.json)文件中的参数
.并把参数赋值给checkbox状态;这里面涉及到两个函数,一个是readJSON();一个是found();
B.另一类函数就是Switch()函数,该函数相应checkbox开关事件;并通过开关事件调用mqtt函数JsToPhpMsg(),并将php相应消息内容通过后台传递给MQTTButtonPub.php文件;
(5)js后台传递消息给php文件:
A.首先引入Jquery类;在头文件中引入,引入路径要注意;<script type="text/javascript" src="assets/js/jquery-1.12.4.js"></script>该文件可以到jquery官网下载;
B.然后调用JsToPhpMsg()函数;此函数需要一个PostMsg参数,该参数在switch()函数中形成并传递;
function JsToPhpMsg(PostMsg){
$.ajax({
?type: "POST",
?url: "../zabbix/nnts/php/MQTTButtonPub.php",
?data: PostMsg,
?success: function(msg){
?}
})
}
6、MQTTButtonPub.php文件内容解读:
(1)该文件主要有两块内容,1、将前台传来的消息写入json文件MapButtonStatus.json;2、将MQTT内容发布到MQTT server服务器;
(2)写入json文件环节:
(3)MQTT发布环节:
require("./phpMQTT.php");//引入MQTT
$mqtt = new phpMQTT("server_ip", 1883, $Device_SN);//以设备ID为内容传递MQTT消息;$Device_SN内容通过上一级文件传递;
$ret= json_encode($message);
if ($mqtt->connect()) {
$mqtt->publish($Device_SN,$ret,0);
$mqtt->close();
}

7、程序安装:(1)修改monitoring.map.php文件,添加引入如2中(2)
(2)将nnts拷贝到/usr/share/zabbix/目录下;
(3)将jquery-1.12.4.js拷贝到assets/js/目录下;
(4)并将nnts目录下json文件chmod +777 属性;

zabbix map添加button 按钮利用mqtt实现远程控制

原文:https://blog.51cto.com/13300270/2608562

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!