var
MainForm: TclForm;
MyMQTT: TclMQTT;
TempLbl, SoilLbl, TankLbl, RainLbl: TclLabel;
PmpBtn: TclProButton;
HeaderPnl: TclProPanel;
void OnMQTTMessage;
var
msg: String;
jsonObj: TclJson;
begin
msg := MyMQTT.ReceivedMessage;
try
jsonObj := TclJson.Create;
jsonObj.Parse(msg);
TempLbl.Text := '🌡️ Hava: ' + jsonObj.GetValue('temp') + '°C';
SoilLbl.Text := '💧 Toprak Nemi: %' + jsonObj.GetValue('soil');
if jsonObj.GetValue('rain') == '1' then
begin
RainLbl.Text := '🌧️ Durum: Yağmur Yağıyor';
RainLbl.TextSettings.FontColor := clAlphaRed;
end else
begin
RainLbl.Text := '☀️ Durum: Hava Açık';
RainLbl.TextSettings.FontColor := clAlphaLightgreen;
end;
if StrToInt(jsonObj.GetValue('tank')) > 20 then
TankLbl.TextSettings.FontColor := clAlphaRed
else
TankLbl.TextSettings.FontColor := clAlphaWhite;
TankLbl.Text := '🌊 Depo: ' + jsonObj.GetValue('tank') + ' cm';
finally
jsonObj.Free;
end;
end;
void OnPumpClick;
begin
if PmpBtn.Text == 'SULAMAYI BAŞLAT' then
begin
MyMQTT.SendToTopic('isabet/iot/ctrl', 'PUMP_ON');
PmpBtn.Text := 'DURDUR';
PmpBtn.clProSettings.BackgroundColor := clAlphaRed;
end else
begin
MyMQTT.SendToTopic('isabet/iot/ctrl', 'PUMP_OFF');
PmpBtn.Text := 'SULAMAYI BAŞLAT';
PmpBtn.clProSettings.BackgroundColor := clAlphaDarkgreen;
end;
PmpBtn.SetclProSettings(PmpBtn.clProSettings);
end;
begin
MainForm := TclForm.Create(Self);
MainForm.SetFormColor('#1B2631', '', clGNone);
MyMQTT := MainForm.AddNewMQTTConnection(MainForm, 'MyMQTT');
MyMQTT.OnReceivedMessage := 'OnMQTTMessage';
MyMQTT.Connect('broker.hivemq.com', 1883, 'Kemankes_Mali');
MyMQTT.Subscribe('isabet/iot/data');
HeaderPnl := MainForm.AddNewProPanel(MainForm, 'HeaderPnl');
HeaderPnl.Align := alTop; HeaderPnl.Height := 80;
HeaderPnl.clProSettings.BackgroundColor := clAlphaColor.clHexToColor('#2C3E50');
HeaderPnl.SetclProSettings(HeaderPnl.clProSettings);
TempLbl := MainForm.AddNewLabel(HeaderPnl, 'TempLbl', 'Bekleniyor...');
TempLbl.Align := alCenter;
TempLbl.TextSettings.FontColor := clAlphaWhite;
SoilLbl := MainForm.AddNewLabel(MainForm, 'SoilLbl', '💧 Toprak: --');
SoilLbl.Align := alTop; SoilLbl.Margins.Top := 40;
SoilLbl.TextSettings.HorzAlign := taCenter;
RainLbl := MainForm.AddNewLabel(MainForm, 'RainLbl', '☀️ Durum: --');
RainLbl.Align := alTop; RainLbl.Margins.Top := 10;
RainLbl.TextSettings.HorzAlign := taCenter;
TankLbl := MainForm.AddNewLabel(MainForm, 'TankLbl', '🌊 Depo: --');
TankLbl.Align := alTop; TankLbl.Margins.Top := 10;
TankLbl.TextSettings.HorzAlign := taCenter;
PmpBtn := MainForm.AddNewProButton(MainForm, 'PmpBtn', 'SULAMAYI BAŞLAT');
PmpBtn.Align := alBottom; PmpBtn.Height := 80; PmpBtn.Margins.All := 20;
PmpBtn.clProSettings.BackgroundColor := clAlphaDarkgreen;
PmpBtn.SetclProSettings(PmpBtn.clProSettings);
MainForm.AddNewEvent(PmpBtn, tbeOnClick, 'OnPumpClick');
MainForm.Run;
end;
Unit Main: Syntax error.
Source position: 21,34