debugging hooks\ncleaning code
This commit is contained in:
parent
4fb5504cdc
commit
11a2253804
@ -42,7 +42,7 @@ class hook
|
||||
logger(DEBUG, _("Callback already installed"));
|
||||
}
|
||||
}
|
||||
echo "result => "; var_dump($result);
|
||||
//echo "result => "; var_dump($result);
|
||||
if ($result === true)
|
||||
{
|
||||
$this->initialized = true;
|
||||
|
@ -80,7 +80,6 @@ function addDevice(& $device, $fn, $jsonDevice )
|
||||
|
||||
//indexing device
|
||||
$indexDevices[$device["device"]->ieeeAddress] = & $device["device"];
|
||||
//print_r($device);
|
||||
}
|
||||
|
||||
function searchPropertyKey($fn, &$device, $object, $listPropertiesKeys)
|
||||
@ -96,7 +95,6 @@ function searchPropertyKey($fn, &$device, $object, $listPropertiesKeys)
|
||||
if ( isset($value->property))
|
||||
{
|
||||
$string = $value->property;
|
||||
//echo "property ===> " . $value->property . EOL;
|
||||
$device->{$string}["value"] = null;
|
||||
$device->$string["functions"] = array();
|
||||
}
|
||||
@ -134,7 +132,7 @@ function changeDevice($topic, $fn, &$device, $payloadArray)
|
||||
|
||||
function iterateDevice($topic, $fn, $parentDevice, &$device, $payloadArray, $propertyTree="")
|
||||
{
|
||||
global $changed, $mohaDB;
|
||||
global $changed, $mohaDB, $testMode;
|
||||
$deviceType = (gettype($device) == "object"); // = true if object
|
||||
//echo "devicetype = "; var_dump($deviceType); echo EOL;
|
||||
//print_r($payloadArray);
|
||||
@ -185,8 +183,6 @@ function iterateDevice($topic, $fn, $parentDevice, &$device, $payloadArray, $pro
|
||||
|
||||
}else
|
||||
{
|
||||
//echo "db_functions".EOL;
|
||||
//($device);
|
||||
if (empty($device->$key) or $value != null)
|
||||
{
|
||||
if (property_exists($device, $key))
|
||||
@ -209,25 +205,19 @@ function iterateDevice($topic, $fn, $parentDevice, &$device, $payloadArray, $pro
|
||||
$changed[$fn]["key"] = $key;
|
||||
$changed[$fn]["value"] = $value;
|
||||
logger(INFO, sprintf(_("Device %s property %s, value changed to %s"), $fn, $propertyTree . $key, $value));
|
||||
//print_r($device);
|
||||
|
||||
//$mohaDB->logProperty($parentDevice, $propertyTree . $key, $value, $oldValue); TODO re-activate
|
||||
//echo "oldvalue => " . print_r($oldValue, true) . EOL;
|
||||
/*if (empty($oldValue))
|
||||
if ($testMode === false)
|
||||
{
|
||||
echo "Initializing " . $key;
|
||||
$mohaDB->logProperty($parentDevice, $propertyTree . $key, $value, $oldValue);
|
||||
}else
|
||||
{
|
||||
echo "changed " . $key . " value " . $oldValue;;
|
||||
logger(INFO, _("Test mode on: not storing in DB "));
|
||||
}
|
||||
echo " to " . $value . EOL;*/
|
||||
}
|
||||
if (!empty($device->$key["functions"]))
|
||||
{
|
||||
logger(DEBUG,_("executing notifications functions"));
|
||||
foreach($device->$key["functions"] as $function)
|
||||
{
|
||||
//print_r($function);
|
||||
$function($device, $key, $value);
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,8 @@
|
||||
class rdc_salon_eclairage extends hook
|
||||
{
|
||||
public $hookName = "rdc_salon_eclairage";
|
||||
// list of devices we are listening to
|
||||
|
||||
// list of devices we are listening to
|
||||
protected $devicelist = array(
|
||||
RDC_SALON_MVMT => array("occupancy", false),
|
||||
RDC_SALON_MVMT2 => array("occupancy", false),
|
||||
@ -21,9 +21,11 @@ class rdc_salon_eclairage extends hook
|
||||
public function callBack(&$device, $param, $value)
|
||||
{
|
||||
global $devices, $indexDevices;
|
||||
logger(INFO, _("hook : rdc_salon_eclairage"));
|
||||
switch($param)
|
||||
{
|
||||
case "occupancy":
|
||||
//print_r($indexDevices[RDC_SALON_LUMINOSITE]);
|
||||
if ($value == 1 and $indexDevices[RDC_SALON_LUMINOSITE]->illuminance_lux["value"] <= $this->luminance_min)
|
||||
{
|
||||
$this->send("ON");
|
||||
@ -36,7 +38,10 @@ class rdc_salon_eclairage extends hook
|
||||
}
|
||||
break;
|
||||
case "illuminance_lux":
|
||||
if ($value >= $this->luminance_max) $this->send("OFF");
|
||||
if ($value >= $this->luminance_max)
|
||||
{
|
||||
$this->send("OFF");
|
||||
}
|
||||
break;
|
||||
}
|
||||
logger (INFO, sprintf(_("%s: notification received from MQTT from %s => parameter: %s value: %s"), $this->hookName, $device->friendlyName, $param, $value));
|
||||
|
76
moha.php
76
moha.php
@ -1,5 +1,7 @@
|
||||
<?php
|
||||
$title = "moha";
|
||||
$testMode = false;
|
||||
|
||||
cli_set_process_title($title);
|
||||
file_put_contents("/proc/".getmypid()."/comm",$title);
|
||||
|
||||
@ -10,7 +12,14 @@ define("ON", 1);
|
||||
define("OFF", 0);
|
||||
define("AUTO", 0);
|
||||
define("MANUAL", 1);
|
||||
// log levels
|
||||
define( "DEBUG", 16); // => 16
|
||||
define( "INFO", 1); // => 1
|
||||
define( "NOTICE", 2); // => 2
|
||||
define( "WARNING", 4); // => 4
|
||||
define( "ERROR", 8); // => 8
|
||||
define( "ALERT", 32);
|
||||
define( "ALL", DEBUG | INFO | NOTICE | WARNING | ERROR | ALERT);
|
||||
|
||||
declare(ticks = 1);
|
||||
|
||||
@ -18,6 +27,8 @@ $listProperties = array("powerSource" => "batterie");
|
||||
$listPropertiesKeys = array("property");
|
||||
|
||||
//global variables
|
||||
$logLevel = INFO | NOTICE | WARNING | ERROR | ALERT; //ALL;
|
||||
$notificationLevel = WARNING | ERROR;
|
||||
$topics = array(); // list of topics
|
||||
$mids = array(); // list of message IDs
|
||||
$devices = array(); // array of device objetcs
|
||||
@ -36,9 +47,8 @@ $logFh = null; // filehandle of log file
|
||||
$curlErr = 0; // Number of errors returned by curl
|
||||
$configDir = "./config"; // default config dir (production value is /etc/moha/)
|
||||
$hooksInitialized = 0; // are all hooks initialized ? false/true
|
||||
require $configDir . "/properties2log.php";
|
||||
|
||||
logger(DEBUG, _("lauching init function"), false);
|
||||
|
||||
if (!init()) exit(1);
|
||||
|
||||
// gettext
|
||||
@ -77,29 +87,21 @@ function logger($level, $log, $notif = true)
|
||||
}
|
||||
}
|
||||
|
||||
logger(DEBUG, _('assigning variable : $client'), false);
|
||||
$client = new Mosquitto\Client();
|
||||
|
||||
// log levels
|
||||
//define( "DEBUG", 16); // => 16
|
||||
define( "INFO", $client::LOG_INFO); // => 1
|
||||
define( "NOTICE", $client::LOG_NOTICE); // => 2
|
||||
define( "WARNING", $client::LOG_WARNING); // => 4
|
||||
define( "ERROR", $client::LOG_ERR); // => 8
|
||||
define( "ALERT", 32);
|
||||
define( "ALL", DEBUG | INFO | NOTICE | WARNING | ERROR | ALERT);
|
||||
$logLevel = ALL;
|
||||
$notificationLevel = WARNING | ERROR;
|
||||
|
||||
logger(DEBUG, _("requiring php modules"), false);
|
||||
require "class/main.php";
|
||||
require "class/db.php";
|
||||
require "class/hook_class.php";
|
||||
require "utils.php";
|
||||
require $configDir . "/properties2log.php";
|
||||
require "mqtt_functions.php";
|
||||
require "events.php";
|
||||
require "db_functions.php";
|
||||
|
||||
logger(DEBUG, _('assigning variable $client to mosquitto class "client"'), false);
|
||||
$client = new Mosquitto\Client();
|
||||
|
||||
logger(DEBUG, _("Loading stored devices datas"));
|
||||
loadDB($devices, "moha.db");
|
||||
|
||||
@ -130,8 +132,8 @@ if (is_readable($configDir . "/" . "devices_constants.php"))
|
||||
// making the list of hooks to include
|
||||
listHooks("./hooks", $hooksList);
|
||||
|
||||
logger(DEBUG, _("Program start"), false);
|
||||
// Program start
|
||||
logger(DEBUG, _("Program start"), false);
|
||||
$client = new Mosquitto\Client();
|
||||
|
||||
// defining callback functions
|
||||
@ -143,51 +145,47 @@ $client->onMessage('messageReceived');
|
||||
$client->onLog('logger');
|
||||
$client->onPublish('publishResponse');
|
||||
|
||||
// connectong to mqtt server
|
||||
$client->connect("192.168.1.253", 1883, 5);
|
||||
/*while(!$connected)
|
||||
{
|
||||
sleep (1);
|
||||
}*/
|
||||
|
||||
logger(DEBUG, _("Subsribing to bridge"), false);
|
||||
logger(INFO, _("Subscribing to bridge"), false);
|
||||
foreach($topics as $name => $topic)
|
||||
{
|
||||
//echo $name;
|
||||
$topic->mid = $client->subscribe($name . "/#", 2);
|
||||
$mids[$topic->mid] = $name;
|
||||
$topic->status = false;
|
||||
}
|
||||
|
||||
logger(DEBUG, _("Starting loop"), false);
|
||||
// starting main loop
|
||||
logger(INFO, _("Starting loop"), false);
|
||||
$oneshot = false;
|
||||
while (true)
|
||||
{
|
||||
$client->loop();
|
||||
if (! $included)
|
||||
$client->loop(); // mqtt server loop()
|
||||
if (! $included) // hooks not already included
|
||||
{
|
||||
logger(DEBUG, _("Making hooks list"), false);
|
||||
getDevicesValues();
|
||||
|
||||
if (!empty($hooksList))
|
||||
getDevicesValues(); // TODO get the values of devices
|
||||
if (!empty($hooksList)) // some hooks to include if hooklist is not empty
|
||||
{
|
||||
foreach ($hooksList as $hook)
|
||||
foreach ($hooksList as $hook) // loop to include hooks in hookslist
|
||||
{
|
||||
logger(INFO, _("Including ") . $hook, false);
|
||||
include $hook;
|
||||
}
|
||||
file_put_contents("moha.devices", print_r($devices, true));
|
||||
file_put_contents("moha.devices", print_r($devices, true)); // debugging : save device list
|
||||
$included = true;
|
||||
}
|
||||
|
||||
}elseif($included)
|
||||
}else
|
||||
{
|
||||
if ($oneshot === false) // execute once initialization finished
|
||||
if ($oneshot === false) // execute once initialization finished :WARNING hooks can to be not initialized
|
||||
{
|
||||
logger(DEBUG, _("Oneshot part of loop"), false);
|
||||
$oneshot = true;
|
||||
}
|
||||
checkEvents();
|
||||
if($hooksInitialized == 0)
|
||||
if($hooksInitialized == 0) // all hooks are not initialized
|
||||
{
|
||||
$i = 1;
|
||||
foreach($hooks as $hookName => $hook)
|
||||
@ -196,10 +194,6 @@ while (true)
|
||||
{
|
||||
logger(WARNING, _("Hook not completely initialized :") . $hookName);
|
||||
$i &= $hook->installHooks();
|
||||
echo "hook->initialized";var_dump($hook->initialized);echo EOL;
|
||||
// (int)$hook->initialized;
|
||||
var_dump($hook);
|
||||
echo "i =======> " . $i;var_dump($i); echo EOL;
|
||||
}
|
||||
}
|
||||
$hooksInitialized = $i;
|
||||
@ -227,21 +221,15 @@ function init()
|
||||
function listHooks($dir, &$hookList)
|
||||
{
|
||||
$files = scandir($dir);
|
||||
//print_r($files);
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
//echo "=====> $file" . EOL;
|
||||
if ($file != "." and $file != "..")
|
||||
{
|
||||
//echo "not . or .." . EOL;echo strpos($file, ".php", -4) . EOL;
|
||||
if (is_dir($dir . "/" . $file))
|
||||
{
|
||||
//echo "directory : " . $dir . '/' . $file . EOL;
|
||||
listHooks($dir . '/' . $file, $hookList);
|
||||
}elseif (strpos($file, ".php", -4) !== false)
|
||||
{
|
||||
//echo "file : " . $dir . "/" . $file . EOL;
|
||||
if (substr($file, -4) == ".php")
|
||||
{
|
||||
$hookList[] = $dir . "/" . $file;
|
||||
@ -249,7 +237,6 @@ function listHooks($dir, &$hookList)
|
||||
}
|
||||
}
|
||||
}
|
||||
//print_r($hookList);
|
||||
}
|
||||
|
||||
function endMoha()
|
||||
@ -262,12 +249,10 @@ function endMoha()
|
||||
{
|
||||
$mid = $client->unsubscribe("#");
|
||||
$client->disconnect();
|
||||
//echo $nSubscribed;0x00124b0022ebac5c
|
||||
while ($connected)
|
||||
{
|
||||
if ( $x++ <= 60)
|
||||
{
|
||||
|
||||
fclose($logFh);
|
||||
exit (1);
|
||||
}
|
||||
@ -275,7 +260,6 @@ function endMoha()
|
||||
}
|
||||
}
|
||||
fclose($logFh);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@ function messageReceived($message)
|
||||
global $topics, $logFh, $devices, $included;
|
||||
$topic = explode ("/", $message->topic);
|
||||
$callback = $topics[$topic[0]]->callback;
|
||||
//logger(DEBUG, "===== topic " . print_r($topic, true));
|
||||
logger(DEBUG, "topic => " . print_r($topic, true));
|
||||
$callback($topic, $message);
|
||||
}
|
||||
|
||||
@ -15,21 +15,25 @@ function messageReceived($message)
|
||||
|
||||
function publish($topic, $payload, $commande="set", $eventKey)
|
||||
{
|
||||
global $client, $mids, $logFh;
|
||||
//print_r($payload);
|
||||
global $client, $mids, $logFh, $testMode;
|
||||
$string = $topic . "/" . $commande;
|
||||
//$mid = $client->publish($string, json_encode($payload) , 2); //TODO activer
|
||||
if (isset($mids[$mid]))
|
||||
if ($testMode === false)
|
||||
{
|
||||
//echo "unsetting mids" .EOL;
|
||||
unset ($mids[$mid]);
|
||||
$mid = $client->publish($string, json_encode($payload) , 2);
|
||||
if (isset($mids[$mid]))
|
||||
{
|
||||
//echo "unsetting mids" .EOL;
|
||||
unset ($mids[$mid]);
|
||||
}else
|
||||
{
|
||||
//echo "setting mids" .EOL;
|
||||
$mids[$mid] = true;
|
||||
}
|
||||
logger(LOG_INFO, $logFh, "Publishing " . $string . " with payload => " . json_encode($payload));
|
||||
}else
|
||||
{
|
||||
//echo "setting mids" .EOL;
|
||||
$mids[$mid] = true;
|
||||
logger(INFO, _("Test mode on: no publishing "));
|
||||
}
|
||||
//echo $string . " =>>>>>> " . json_encode($payload) . EOL;
|
||||
logger(LOG_INFO, $logFh, "Publishing " . $string . " with payload => " . json_encode($payload));
|
||||
}
|
||||
|
||||
function connectResponse($r, $message)
|
||||
|
@ -1,20 +1,15 @@
|
||||
<?php
|
||||
//TODO to test and debug
|
||||
$topics["linky2mqtt"] = new topic;
|
||||
/*$devices["linky2mqtt"]["linky"]["device"] = new device;
|
||||
$device = &$devices["linky2mqtt"]["linky"]["device"];
|
||||
*/
|
||||
|
||||
$topics["linky2mqtt"]->callback = function($topic, $message)
|
||||
{
|
||||
global $topics, $logFh, $devices, $included;
|
||||
$topicName = $topic[0];
|
||||
$friendlyName = $topic[1]; // get friendlyName
|
||||
logger(INFO, sprintf(_("Icoming notification of device %s"), $topic[0], $topic[1]));
|
||||
logger(INFO, sprintf(_("Incoming notification of device %s"), $topic[0], $topic[1]));
|
||||
$device = & $devices[$topic[0]];
|
||||
$payloadArray = json_decode($message->payload);
|
||||
//print_r($payloadArray);
|
||||
//print_r($device) ;
|
||||
if (!isset($device[$fn])) //must not exists, but ...
|
||||
{
|
||||
logger(LOG_WARNING, $logFh, "init of " . $fn .EOL);
|
||||
@ -22,11 +17,9 @@ $topics["linky2mqtt"]->callback = function($topic, $message)
|
||||
$device[$fn]["device"] = new device;
|
||||
$device[$fn]["device"]->type = "mesure";
|
||||
$device[$fn]["device"]->ieeeAddress = $payloadArray["ADSC"];
|
||||
//addDevice($device[$fn], $fn, );
|
||||
$indexDevices[$device[$fn]["device"]->ieeeAddress] = & $device[$fn]["device"];
|
||||
}
|
||||
$device = & $device[$fn];
|
||||
//print_r($device);
|
||||
|
||||
changeDevice($topicName, $friendlyName, $device["device"], $payloadArray);
|
||||
print_r($device["device"]);
|
||||
}
|
||||
|
@ -1,17 +1,13 @@
|
||||
<?php
|
||||
$topics["pws2mqtt"] = new topic;
|
||||
/*$devices["pws2mqtt"]["WH2650A"]["device"] = new device;
|
||||
$device = &$devices["pws2mqtt"]["WH2650A"]["device"];*/
|
||||
|
||||
$topics["pws2mqtt"]->callback = function($topic, $message)
|
||||
{
|
||||
global $topics, $logFh, $devices, $included;
|
||||
$fn = $topic[1]; // get friendlyname
|
||||
logger(INFO, sprintf(_("Icoming notification of device %s => friendly name : %s"), $topic[0], $topic[1]));
|
||||
logger(INFO, sprintf(_("Incoming notification of device %s => friendly name : %s"), $topic[0], $topic[1]));
|
||||
$device = & $devices[$topic[0]];
|
||||
$payloadArray = json_decode($message->payload);
|
||||
//print_r($payloadArray);
|
||||
//print_r($device) ;
|
||||
if (!isset($device[$fn])) //must not exists, but ...
|
||||
{
|
||||
logger(LOG_WARNING, $logFh, "init of " . $fn .EOL);
|
||||
@ -19,11 +15,9 @@ $topics["pws2mqtt"]->callback = function($topic, $message)
|
||||
$device[$fn]["device"] = new device;
|
||||
$device[$fn]["device"]->type = $payloadArray->type;
|
||||
$device[$fn]["device"]->ieeeAddress = $payloadArray->ieeeAddress;
|
||||
//addDevice($device[$fn], $fn, );
|
||||
$indexDevices[$device[$fn]["device"]->ieeeAddress] = & $device[$fn]["device"];
|
||||
}
|
||||
//print_r($device);
|
||||
$device = & $device[$fn];
|
||||
changeDevice($topic[0], $topic[1], $device["device"], $payloadArray);
|
||||
//print_r($device["device"]);
|
||||
}
|
||||
?>
|
||||
|
Loading…
Reference in New Issue
Block a user