AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Maschinenstatus via LED visualisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Maschinenstatus via LED visualisieren

Ein Thema von Ykcim · begonnen am 22. Mai 2023 · letzter Beitrag vom 6. Jun 2023
 
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#24

AW: Maschinenstatus via LED visualisieren

  Alt 5. Jun 2023, 20:18
Hallo Zusammen,
ich will man eine erste Erfolgsmeldung zurückgeben.

Ich habe mir die Shelly RGBW2 Steuerung beschafft, einen Mini-Traffo um von 230V auf 24V zu kommen und eine LED-Signal-Leuchte. Habe alles wie im Bild verkabelt.
ACHTUNG: ICH BIN KEIN ELEKTIKER UND KANN KEINE VERANTWORTUNG FÜR NACHBAUTEN ÜBERNEHMEN!

Ich habe mit der Shelly App die Steuerung ins WLAN gebracht und dann die ersten Verbindungsversuche vorgenommen.
Ich musste auf den Modus WHITE stellen, damit die Leuchte korrekt angesteuert wurde.

Über den Browser und der IP-Adresse konnte ich auf ein vorhandenes Web-Interface zugreifen und die Leuchte an sich ausprobieren.

Die SupportSite von Shelly war wirklich hilfreich:
Mit http://IP-Adresse/white/0?turn=on kann ich die oberste Leuchte einschalten
Mit http://IP-Adresse/white/0?turn=off kann ich die oberste Leuchte wieder ausschalten

Mit http://IP-Adresse/white/0?brightness= [1-100] kann die Helligkeit gesteuert werden

Bei jeder Aktion und bei der Abfrage http://IP-Adresse/white/0 bekommt man einen String mit dem aktuellen Status von der Steuerung als Rückgabewert:
{"ison":false,"mode":"white","brightness":70,"power":1.26,"overpower":false}
Ich habe diesen bis jetzt ale ein String behandelt, geht aber mit Sicherheit charmanter:
Delphi-Quellcode:
function TForm1.MyStreamToString(aStream: TStream): string;
var    SS: TStringStream;
begin
   Result := '[';
   if aStream <> nil then begin
      SS := TStringStream.Create('');
      try
         SS.CopyFrom(aStream, 0);
         Result := Result + SS.DataString;
         Result := Result + ']';
      finally
         SS.Free;
      end;
   end else begin
      Result := '';
   end;
end;
Ich habe ein kleines Test-Programm geschrieben. Beim Start frage ich den Status der Einzelleuchten ab und tragen den ON/OFF Status und die Eingestellte Helligkeit in meine Maske ein.

Delphi-Quellcode:
procedure TForm1.Get_Status_JSON(LStream: TMemoryStream; Swtch: TToggleSwitch; edt_Brightness: TAdvEdit);
var ClientItem: TJSONValue;
      ClientList: TJSONArray;
      ResultString: string;
      Status: boolean;
      Brightness: integer;
      I: integer;
begin
   ClientList := TJSONArray.Create;
   Try
      ResultString := MyStreamToString(LStream);
      ClientList := TJSONObject.ParseJSONValue(ResultString) as TJSONArray;
      for ClientItem in ClientList do begin
         if not ClientItem.TryGetValue<boolean>('ison', Status) then
            ShowMessage('Fehler: Status nicht gefunden.');
         if not ClientItem.TryGetValue<integer>('brightness', Brightness) then
            ShowMessage('Fehler: Brightness nicht gefunden.');
      end;

      if Status then
         Swtch.State := tssOn;
      if not Status then
         Swtch.State := tssOff;

      edt_Brightness.Text := IntToStr(Brightness);
   Finally
      ClientList.Free;
   End;
end;
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var ResultString: string;
      LStream: TMemoryStream;
begin
   LStream := TMemoryStream.Create;
   Try
   Client1.get(lbl_Basic_0.Caption + edt_Channel_0.Text, LStream);
   Get_Status_JSON(LStream, Swtch_0, edt_Bright_0);
   LStream.SetSize(0);
   Client1.get(lbl_Basic_1.Caption + edt_Channel_1.Text, LStream);
Get_Status_JSON(LStream, Swtch_1, edt_Bright_1);
   LStream.SetSize(0);
   Client1.get(lbl_Basic_2.Caption + edt_Channel_2.Text, LStream);
   Get_Status_JSON(LStream, Swtch_2, edt_Bright_2);
   Finally
      LStream.Free;
   End;
end;
Aktuell prüfe ich noch, wie ich die Leuchte blinken lassen kann.

So viel zum jetztigen Zeitpunkt als Feedback.

Vielen Dank für Eure Anregungen und Unterstützung
Patrick
Angehängte Grafiken
Dateityp: jpg 20230604_004815_IMG_4445_Edited.jpg (75,4 KB, 51x aufgerufen)
Patrick

Geändert von Ykcim ( 5. Jun 2023 um 23:32 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz