User Tools

Site Tools


mqttics

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
mqttics [2024/11/22 03:01] – created jwanmqttics [2025/10/10 10:15] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +===== N O T I C E =====
 +
 +ICS's SSL is enabled by default, which is required for MQTT to function.  However, with SSL enabled, the compiled EXE file will increase significantly.  **If SSL is not use, it can be disabled by commenting out __{$DEFINE USE_SSL}__ inside \Source\Include\OverbyteIcsDefs.inc file. This is in #273 in ICS v9.4**
 +
 +
 +----
 +
 +
 +
 **Using ICS v9.3** **Using ICS v9.3**
  
Line 48: Line 57:
     end;     end;
 end; end;
 +</code>
 +
 +
 +Below is fully working sample:
 +
 +
 +<code>
 +unit main;
 +interface
 +uses
 +  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 +  Dialogs, StdCtrls, OverbyteIcsMQTT, OverbyteIcsWndControl,
 +  OverbyteIcsSslX509Certs,McJSON;
 +type
 +  Tiotmqttsql = class(TForm)
 +    mmo: TMemo;
 +    mqttclient: TIcsMQTTClient;
 +    edtpublish: TEdit;
 +    btnpublish: TButton;
 +    slx509crts1: TSslX509Certs;
 +    icsmqtclnt1: TIcsMQTTClient;
 +    procedure FormShow(Sender: TObject);
 +    procedure FormClose(Sender: TObject; var Action: TCloseAction);
 +    procedure mqttclientMsg(Sender: TObject; aTopic: UTF8String; const aMessage: String; aQos: TMQTTQOSType; aRetained: Boolean);
 +    procedure btnpublishClick(Sender: TObject);
 +    procedure mqttclientOnline(Sender: TObject);
 +    procedure mqttclientOffline(Sender: TObject; Graceful: Boolean);
 +    procedure mqttclientClientID(Sender: TObject;
 +      var aClientID: UTF8String);
 +  private
 +    { Private declarations }
 +  public
 +    { Public declarations }
 +  end;
 +
 +var
 +  iotmqttsql: Tiotmqttsql;
 +
 +const
 +   mqtttopic : string = 'topicname';
 +   mqtthost  : string = 'sample.com';
 +
 +implementation
 +
 +{$R *.dfm}
 +
 +procedure Tiotmqttsql.FormShow(Sender: TObject);
 +begin
 +   mmo.lines.clear;
 +   mqttclient.AutoSubscribe := true;
 +   mqttclient.host := mqtthost;
 +   mqttclient.Port := 1883;
 +   mqttclient.KeepAlive := 10;
 +   mqttclient.Activate(true);
 +   mqttclient.Subscribe(mqtttopic,qtAT_LEAST_ONCE);
 +end;
 +
 +procedure Tiotmqttsql.FormClose(Sender: TObject; var Action: TCloseAction);
 +begin
 +   mqttclient.Destroy;
 +end;
 +
 +procedure Tiotmqttsql.mqttclientMsg(Sender: TObject; aTopic: UTF8String; const aMessage: String; aQos: MQTTQOSType; aRetained: Boolean);
 +begin
 +   mmo.Lines.Add(FormatDateTime('yyyy-MM-dd',now())+': '+aMessage+#13#10);
 +end;
 +
 +procedure Tiotmqttsql.btnpublishClick(Sender: TObject);
 +begin
 +   mqttclient.Publish(mqtttopic,edtpublish.Text,qtAT_LEAST_ONCE,true);
 +end;
 +
 +procedure Tiotmqttsql.mqttclientOnline(Sender: TObject);
 +begin
 +//   mmo.Lines.add('Online');
 +end;
 +
 +procedure Tiotmqttsql.mqttclientOffline(Sender: TObject;  Graceful: Boolean);
 +begin
 +//   mmo.Lines.add('Offline');
 +end;
 +
 +procedure Tiotmqttsql.mqttclientClientID(Sender: TObject; var aClientID: UTF8String);
 +begin
 +   mmo.Lines.add('Client ID: '+aClientID);
 +end;
 +
 +end.
 </code> </code>
mqttics.1732244489.txt.gz · Last modified: (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki