Created
May 5, 2020 15:29
-
-
Save akadlec/7ddc811d1a6929ff0a9f1aea3a796df2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php declare(strict_types = 1); | |
namespace App\Commands; | |
use IPub\MQTTClient; | |
use Nette; | |
use React\Promise; | |
use Symfony\Component\Console; | |
use Symfony\Component\Console\Input; | |
use Symfony\Component\Console\Output; | |
use Throwable; | |
/** | |
* MQTT client command | |
* | |
* @package FastyBird:MqttNode! | |
* @subpackage Commands | |
* | |
* @author Adam Kadlec <[email protected]> | |
*/ | |
class MqttClientCommand extends Console\Command\Command | |
{ | |
use Nette\SmartObject; | |
/** @var MQTTClient\Client\IClient */ | |
private $mqttClient; | |
public function __construct( | |
MQTTClient\Client\IClient $mqttClient, | |
?string $name = null | |
) { | |
parent::__construct($name); | |
$this->mqttClient = $mqttClient; | |
} | |
/** | |
* {@inheritDoc} | |
*/ | |
protected function configure(): void | |
{ | |
parent::configure(); | |
$this | |
->setName('mqtt-node:client') | |
->setDescription('Start MQTT client.'); | |
} | |
/** | |
* {@inheritDoc} | |
*/ | |
protected function execute( | |
Input\InputInterface $input, | |
Output\OutputInterface $output | |
): int { | |
try { | |
// Prepare client connection | |
$this->mqttClient->connect() | |
->otherwise(function (Throwable $ex): void { | |
// Log error action reason | |
$this->logger->error('[ERROR] FB MQTT node - MQTT client', [ | |
'exception' => [ | |
'message' => $ex->getMessage(), | |
'code' => $ex->getCode(), | |
], | |
]); | |
$this->mqttClient->getLoop()->stop(); | |
}); | |
$this->mqttClient->getLoop()->run(); | |
} catch (Throwable $ex) { | |
$this->mqttClient->getLoop()->stop(); | |
return $ex->getCode(); | |
} | |
return 0; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php declare(strict_types = 1); | |
namespace App\Events; | |
use BinSoul\Net\Mqtt; | |
use IPub\MQTTClient; | |
use Nette; | |
use Psr\Log; | |
class MqttClientOpenHandler | |
{ | |
use Nette\SmartObject; | |
/** @var Log\LoggerInterface */ | |
private $logger; | |
public function __construct( | |
Log\LoggerInterface $logger | |
) { | |
$this->logger = $logger; | |
} | |
/** | |
* @param Mqtt\Connection $connection | |
* @param MQTTClient\Client\IClient $client | |
* | |
* @return void | |
*/ | |
public function __invoke(Mqtt\Connection $connection, MQTTClient\Client\IClient $client): void | |
{ | |
// Network connection established | |
$this->logger->info(sprintf('[MQTT_CLIENT] Established connection to MQTT broker: %s', $client->getUri()), [ | |
'server' => [ | |
'uri' => $client->getUri(), | |
'port' => $client->getPort(), | |
], | |
'credentials' => [ | |
'username' => $connection->getUsername(), | |
'clientId' => $connection->getClientID(), | |
], | |
]); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment