1. Go to this page and download the library: Download ultraembeddedlab/php-iot library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ultraembeddedlab / php-iot example snippets
use ScienceStories\Mqtt\Easy\Mqtt;
Mqtt::publish(
host: 'broker.example.com',
topic: 'sensors/temperature',
payload: '23.5',
);
use ScienceStories\Mqtt\Client\Client;
use ScienceStories\Mqtt\Client\Options;
use ScienceStories\Mqtt\Protocol\MqttVersion;
use ScienceStories\Mqtt\Transport\TcpTransport;
$options = new Options(
host: 'broker.example.com',
port: 1883,
version: MqttVersion::V5_0,
);
$options = $options
->withClientId('my-client')
->withKeepAlive(60)
->withCleanSession(true);
$client = new Client($options, new TcpTransport());
$client->connect();
// Subscribe to topics
$client->subscribe(['sensors/#'], qos: 1);
// ...or subscribeWith() when each filter needs its own QoS
$client->subscribeWith([
['filter' => 'sensors/#', 'qos' => 1],
['filter' => 'commands/+', 'qos' => 2],
]);
// Handle incoming messages
$client->onMessage(function ($message) {
echo "Received: {$message->payload} on {$message->topic}\n";
});
// Listen for messages
while (true) {
$client->loopOnce(1.0);
}
use ScienceStories\Mqtt\Easy\Mqtt;
use ScienceStories\Mqtt\Client\PublishOptions;
use ScienceStories\Mqtt\Protocol\QoS;
$client = Mqtt::connect(
host: 'broker.example.com',
port: 1883,
version: 'v5',
);
// Publish multiple messages
$client->publish('sensors/temp', '23.5', new PublishOptions(qos: QoS::AtLeastOnce));
$client->publish('sensors/humidity', '65', new PublishOptions(qos: QoS::AtLeastOnce));
$client->disconnect();
use ScienceStories\Mqtt\Client\TlsOptions;
// Note the explicit port: withTls() does not change it, and the default is 1883.
$options = (new Options('broker.example.com', 8883))->withTls(new TlsOptions());
use ScienceStories\Mqtt\Client\TlsOptions;
$tls = (new TlsOptions())
->withCaFile('/etc/mqtt/certs/ca.pem')
->withClientCertificate(
certFile: '/etc/mqtt/certs/client.pem',
keyFile: '/etc/mqtt/certs/client.key',
passphrase: 'optional-passphrase',
);
$options = $options->withTls($tls);
$tls = (new TlsOptions())
->withCaFile('/etc/mqtt/certs/ca.pem')
->withClientCertificate('/etc/mqtt/certs/client.pem', '/etc/mqtt/certs/client.key')
->withAlpn('mqtt');
$options = (new Options('broker.example.com', 443))->withTls($tls);
$tls = (new TlsOptions())
->withCaFile('/path/to/my-ca.pem')
->withAllowSelfSigned(true);
$options = $options->withTls($tls);
> // Only for a broker that genuinely cannot do TLS 1.2.
> $tls = (new TlsOptions())->withCryptoMethod(
> STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | TlsOptions::DEFAULT_CRYPTO_METHOD,
> );
>
$options = (new Options('broker.example.com', 1883, version: MqttVersion::V5_0))
->withTopicAliasMaximum(10);
$client = new Client($options, new TcpTransport());
$client->connect();
// First publish sends the topic and establishes the alias.
$client->publish('factory/line-3/press/temperature', '218.4');
// Later publishes to the same topic send two bytes instead of thirty-four.
$client->publish('factory/line-3/press/temperature', '218.9');