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