$host = 'localhost'; } if ($mqtt->config['MQTT_PORT']) { $port = $mqtt->config['MQTT_PORT']; } else { $port = 1883; } if ($mqtt->config['MQTT_QUERY']) { $query = $mqtt->config['MQTT_QUERY']; } else { $query = '/var/now/#'; } $mqtt_client = new phpMQTT($host, $port, "MajorDoMo MQTT Client"); if (!$mqtt_client->connect()) { exit(1); } //$topics['/dev/Node1/Ai6'] = array("qos"=>0, "function"=>"procmsg"); //$topics['/dev/#'] = array("qos"=>0, "function"=>"procmsg"); $topics[$query] = array("qos" => 0, "function" => "procmsg"); $mqtt_client->subscribe($topics, 0); while ($mqtt_client->proc()) { } $mqtt_client->close(); function procmsg($topic, $msg) { global $mqtt; $mqtt->processMessage($topic, $msg); echo date("Y-m-d H:i:s") . " Topic:{$topic} {$msg}\n"; } $db->Disconnect(); // closing database connection
<?php require "Lib/phpMQTT.php"; $mqtt = new phpMQTT("127.0.0.1", 1883, "Emoncms feed subscriber"); if (!$mqtt->connect()) { exit(1); } $topics["emoncms/#"] = array("qos" => 0, "function" => "procmsg"); $mqtt->subscribe($topics, 0); while ($mqtt->proc()) { } $mqtt->close(); function procmsg($topic, $value) { $time = time(); print $topic . " " . $value . "\n"; }
<?php include "resources/phpMQTT.php"; error_reporting(0); $results = []; $topics = "WEATHER/a,AHMS/pir,AHMS/move,AHMS/door"; if (isset($_GET["topic"])) { $topics = $_GET["topic"]; } $mqtt = new phpMQTT("192.168.1.20", 1883, "PHP MQTT Client", "ahmsclient", "ahms2013"); if ($mqtt->connect()) { foreach (explode(",", $topics) as $topic) { $myTopics = []; $myTopics[$topic] = array("qos" => 0, "function" => "procmsg"); $mqtt->subscribe($myTopics); if ($mqtt->proc() == 0) { array_push($results, array("status" => "no message", "topic" => $topic, "message" => "")); } } $mqtt->close(); } else { array_push($results, array("status" => "ok", "no connection" => $topic, "message" => "")); } echo json_encode($results); function procmsg($topic, $message) { global $results; array_push($results, array("status" => "ok", "topic" => $topic, "message" => $message)); }
// set configuration values $config = array('org_id' => 'IOTF-ORG-ID', 'port' => '1883', 'app_id' => 'phpmqtt', 'iotf_api_key' => 'IOTF-API-KEY', 'iotf_api_secret' => 'IOTF-API-TOKEN', 'maps_api_key' => 'GOOGLE-API-KEY', 'device_id' => 'DEVICE-ID', 'qos' => 1); $config['server'] = $config['org_id'] . '.messaging.internetofthings.ibmcloud.com'; $config['client_id'] = 'a:' . $config['org_id'] . ':' . $config['app_id']; $location = array(); // initialize client $mqtt = new phpMQTT($config['server'], $config['port'], $config['client_id']); $mqtt->debug = false; // connect to broker if (!$mqtt->connect(true, null, $config['iotf_api_key'], $config['iotf_api_secret'])) { echo 'ERROR: Could not connect to IoT cloud'; exit; } // subscribe to topics $topics['iot-2/type/+/id/' . $config['device_id'] . '/evt/accel/fmt/json'] = array('qos' => $config['qos'], 'function' => 'getLocation'); $mqtt->subscribe($topics, $config['qos']); // process messages $elapsedSeconds = 0; while ($mqtt->proc(true)) { if (count($location) == 2) { $latitude = $location[0]; $longitude = $location[1]; $mapsApiUrl = 'https://maps.googleapis.com/maps/api/staticmap?key=' . $config['maps_api_key'] . '&size=640x480&maptype=roadmap&scale=2&markers=color:green|' . sprintf('%f,%f', $latitude, $longitude); break; } if ($elapsedSeconds == 5) { break; } sleep(1); $elapsedSeconds++; }
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ require_once dirname(__FILE__) . '/phpMQTT/phpMQTT.php'; require_once dirname(__FILE__) . '/Database.php'; require_once dirname(__FILE__) . '/Rosenberg.php'; require_once dirname(__FILE__) . '/Config.php'; $oDB = new Database(Config::$sInfluxDBHost); $mqtt = new phpMQTT(Config::$sMQTTHost, Config::$iMQTTPort, "iws daemon"); if (!$mqtt->connect()) { exit(1); } $topics['/iws/+/soil_moisture'] = array("qos" => 0, "function" => "processMoisture"); $mqtt->subscribe($topics, 0); $oRosenberg = new Rosenberg($oDB); $mqtt->subscribe($oRosenberg->getTopics()); while ($mqtt->proc()) { } $mqtt->close(); function processMoisture($topic, $msg) { print "processing {$topic}:{$msg}\n"; global $oDB; $pTopic = "/\\/iws\\/(?P<sensor_id>MOIST_[0-9A-F]{8})\\/soil_moisture/"; if (!preg_match($pTopic, $topic, $aMatches)) { die("Couldn't match topic in {$topic}\n"); } $data = array(array('tags' => array('sensor_id' => $aMatches['sensor_id']), 'fields' => array('millivolts' => (int) $msg), 'time' => date("c"))); print "Inserting moisture {$topic} -> {$msg}\n";