topic); if ($topic[1] == "bridge") { switch ($topic[2]) { case "info": $topics[$topic[0]]->info = json_decode($message->payload); break; case "devices": $topics[$topic[0]]->devices = json_decode($message->payload); mkDevicesDB($topic[0], $topics[$topic[0]]->devices); fwrite($logFh, print_r($topics[$topic[0]]->devices, true)); break; case "groups": $topics[$topic[0]]->groups = json_decode($message->payload); mkDevicesDB($topic[0], $topics[$topic[0]]->groups); break; case "extensions": $topics[$topic[0]]->extensions = json_decode($message->payload); break; case "config": $topics[$topic[0]]->config = json_decode($message->payload); break; case "logging": //TODO break; case "state": $topics[$topic[0]]->state = $message->payload; break; default: break; }; }elseif (($topic[array_key_last($topic)]) != "get" and ($topic[array_key_last($topic)]) != "set") { $topic = explode ("/", $message->topic, 2); echo $topic[0] . " => " . $topic[1] . EOL; $devices[$topic[0]][$topic[1]]->json = json_decode($message->payload); changeDevice($topic[0], $topic[1], $devices[$topic[0]][$topic[1]]); //fwrite($logFh, print_r($msg, true)); } } // payload is an array : // key is parameter => value is value of parameter function publish($device, $payload, $commande="set", $eventKey) { global $client, $mids, $logFh; print_r($payload); $string = $device->topic . "/" . $device->friendlyName . "/" . $commande; $mid = $client->publish($string, json_encode($payload) , 2); if ($mids[$mid]) { unset ($mids[$mid]); }else { $mids[$mid] = true; } echo $string . " =>>>>>> " . json_encode($payload) . EOL; logger(LOG_INFO, $logFh, "Publishing " . $string . " with payload => " . json_encode($payload)); } function connectResponse($r, $message) { global $connected; echo _("I got code ") . $r . _(" and message : '") . $message . "'" . EOL; switch ($r) { case 0: echo _("Successfull connection") . EOL; return true; break; case 1: echo _("Connection refused : unacceptable protocol version") . EOL; return false; break; case 2: echo _("Connection refused : identifier rejected") . EOL; return false; break; case 3: echo _("Connection refused (broker unavailable )") . EOL; return false; break; } } function subscribeResponse($mid, $qosCount) { global $topics, $mids, $nSubscribed; $key = $mids[$mid]; echo _("Subscribed to ") . $key . EOL; $topics[$key]->status = true; $nSubscribed += 1; } function unsubscribeResponse($mid) { global $topics, $mids, $nSubscribed; $key = $mids[$mid]; echo _("Unsubscribed from ") . $topics[$key]->name . EOL; $topics[$key]->status = false; $nSubscribed -= 1; } function disconnectResponse($r) { if (! $r) { echo _('Badly '); }else { echo _('Cleanly '); } echo _("disconnected from server") . EOL; } function publishResponse($mid) { global $mids, $events; logger(LOG_INFO, "Event with mid = " . $mid . " published by MQTT broker"); if (isset($mids[$mid])) { unset ($mids[$mid]); }else { $mids[$mid] = true; } } function logger($level, $log) { global $logFh, $logLevel; if ( $level >= $logLevel) { fwrite($logFh, "$level : $log" . EOL); print ("$level : $log" . EOL); } } ?>