Интересует такой вопрос, что нужно добавить в php файл, чтобы управлять переменной через mqtt, при этом чтоб этот код можно было вставить в самодельный цикл. Я создал свой цикл назвал его cycle_my.php, его содержимое:
<?php
chdir(dirname(__FILE__).'/../');
include_once("./config.php");
include_once("./lib/loader.php");
include_once("./lib/threads.php");
set_time_limit(0);
// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME);
include_once("./load_settings.php");
include_once(DIR_MODULES."control_modules/control_modules.class.php");
$ctl = new control_modules();
while(1)
{
echo date("H:i:s") . " running " . basename(__FILE__) . "\n";
setGlobal((str_replace('.php', '', basename(__FILE__))).'Run', time());
DebMes("Запуск моего цикла");
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 1
)
)
);
file_get_contents("http://192.168.1.14/sec/?pt=4&cmd=4:2", 0, $ctx);
if (file_exists('./reboot'))
{
$db->Disconnect();
exit;
}
sleep(2);
}
DebMes("Unexpected close of cycle: " . basename(__FILE__));
?>
добавил код выделенный красным, цикл запускается работает, теперь вместо красного кода мне необходимо изменять состояние элемента в X13
нужно скрестить с этим
<?php
require("phpMQTT.php"); /*
https://github.com/bluerhinos/phpMQTT */
/*открываем соединение с брокером*/
$mqtt = new phpMQTT("localhost", 1883, "Test");
/*$mqtt->debug = true;*/
if(!$mqtt->connect(true, NULL, "root", "1")) /*Clean, Will, User, Password*/
{
exit(1);
}
/*Заявляем какие переменные нам нужны, и подписываемся на них */
/*В данном случае получаем системные переменные, как то - время и дату*/
$topics["
/export/Ex/dbl02"] = array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics,0);
/* цикл крутится пока есть соединение к серверу */
while($mqtt->proc()){}
$mqtt->proc();
$mqtt->close();
/*данная функция вызывается каждый раз, когда у нас есть обновление переменных*/
function procmsg($topic,$msg)
{
/* отрезаем тип переменной, так как в большинстве случаев он нам известен заранее */
$msgout = substr($msg,strpos($msg, ',', 1) + 1);
/*здесь мы обрабатываем переменные и решаем что с ними делать*/
echo "{$topic}\t$msgout\n";
}
?>
красным выделен путь к переменной которую я хочу изменять в цикле. Сергей, если есть возможность, помогите разобраться.
PS Если открываю в браузере последний код, то видно что идет подключение к системе пользователя Test? и дальше через минуту отключение и в браузере ошибка.