Tasmota Webseite auslesen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Wolfgang Janzen
Beiträge: 2
Registriert: Sa 7. Sep 2024, 16:19

Tasmota Webseite auslesen

Beitrag von Wolfgang Janzen »

Ih möchte eine Tasmato Webseite auslesen.Ich mache das mit S := (TFPHttpClient.SimpleGet('http://192.168.178.161/cs?'));
Ich kann die daten dort nicht finden.
Dateianhänge
webseite.JPG
webseite.JPG (29.49 KiB) 3176 mal betrachtet
quelltext.JPG
quelltext.JPG (162.79 KiB) 3176 mal betrachtet

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Tasmota Webseite auslesen

Beitrag von pluto »

Hast du die Möglichkeit, irgendwo ein MQTT Server am laufen zu lassen?
Wenn ja, wäre das , die Einfachste Möglichkeit.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10916
Registriert: Mo 11. Sep 2006, 19:01

Re: Tasmota Webseite auslesen

Beitrag von theo »

Wolfgang Janzen hat geschrieben: Sa 7. Sep 2024, 16:26 Ich kann die daten dort nicht finden.
Es sieht so aus, als würden die Daten dort erst mit Javascript eingesetzt.
HTML allein reicht dafür nicht aus.

Stevie
Beiträge: 172
Registriert: Di 27. Feb 2024, 22:40

Re: Tasmota Webseite auslesen

Beitrag von Stevie »

... was genau möchtest Du denn erreichen? Eigentlich sind alle Informationen über die Web API zu erreichen. Ich habe gerade nur einen alten Sonoff-Switch zur Hand, aber der reagiert ganz brav.

Code: Alles auswählen

$ curl "http://x.x.x.x/cm?cmnd=Power%20TOGGLE"
{"POWER":"ON"}%
$
EDIT:
Ich habe gerade noch mal nachgelesen und denke, dass Du wirklich alle Informationen besser über das Status-Kommando bekommst:

Code: Alles auswählen

$ curl --silent "http://x.x.x.x/cm?cmnd=Status+0"
{
  "Status": {
    "Module": 1,
    "DeviceName": "xxx",
    "FriendlyName": [
      "xxx"
    ],
    "Topic": "xxx",
    "ButtonTopic": "0",
    "Power": 1,
    "PowerOnState": 3,
    ...
Details zu den Argumenten des Status-Kommandos findest Du unter https://tasmota.github.io/docs/Commands/#management. Mittels "+0" bekommst Du alle informationen und Dank JSON-Format ist es auch kinderleicht unter Pascal auszulesen.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Tasmota Webseite auslesen

Beitrag von corpsman »

Also ich lese mein Watermeter mittels dieses https://github.com/PascalCorpsman/Examp ... broker.pas aus, ggf reicht dir das auch schon, ..
--
Just try it

Wolfgang Janzen
Beiträge: 2
Registriert: Sa 7. Sep 2024, 16:19

Re: Tasmota Webseite auslesen

Beitrag von Wolfgang Janzen »

Hast du ein beispielcode für mich. Ich habe keinen MQTT Server geht das denn trotzdem

Stevie
Beiträge: 172
Registriert: Di 27. Feb 2024, 22:40

Re: Tasmota Webseite auslesen

Beitrag von Stevie »

... ich glaube immer noch, dass Du keinen MQTT-Server benötigst und schicke mein einfaches HTTP-GET ins Rennen. :D

Code: Alles auswählen

{$mode ObjFPC}{$H+}

program ReadTasmota;

uses
 classes, sysutils, fphttpclient, fpjson, jsonparser;

var
 client     : TFPHttpclient;
 RawResult  : String;
 JsonResult : TJSONObject;
 TempJson   : TJSONObject;
 Devicename : String;

begin
  Client := TFPHttpClient.Create(nil);

  try
    try
      RawResult  := Client.Get('http://10.10.10.10/cm?cmnd=Status+0');
    except on e: Exception do
      begin
        writeln('Fehler aufgetreten bei der Statusabfrage.');
        writeln(e.Message);
      end;
    end;

    try
      try
        JsonResult := TJsonObject(GetJson(rawResult));
        TempJson := TJsonObject(JsonResult.FindPath('Status.DeviceName'));

        If TempJson <> Nil Then
        begin
          Devicename := TempJson.AsString;
        end;
      except on e: Exception do
        begin
          writeln('Empfangene Daten konnten nicht analysiert werden.');
          writeln(e.Message);
        end;
      end;
    finally
      JsonResult.Free;
    end;

   writeln('Empfangenes JSON im Rohformat:');
   writeln(RawResult);
   
   writeln('Device Name = ', Devicename);
  finally
    Client.Free;
  end;
end.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1629
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Tasmota Webseite auslesen

Beitrag von corpsman »

Wolfgang Janzen hat geschrieben: Sa 14. Sep 2024, 14:27 Hast du ein beispielcode für mich. Ich habe keinen MQTT Server geht das denn trotzdem
Wenn du in das über geordnete Verzeichnis schaust:

https://github.com/PascalCorpsman/Examp ... ter/TCP_IP

da ist der Publisher und der Broker. Damit hast du beide Teile ;)
--
Just try it

Antworten