Seite 1 von 1

$query abfragen ob ein aktueller wert existiert

Verfasst: Di 7. Mär 2023, 07:12
von fly2jerry
Hallo zusammen,
ich möchte in der auto-math-php abfragen, ob es von meiner Shelly 2.5 einen aktuellen Wert gibt, also ob diese gerade online ist oder nicht.
Die query gibt mir aber immer den letzten Wert und egal wie ich den String umbaue, bekomme ich nicht das, was ich haben will
$query = urlencode("SELECT mode(Status) FROM Service");
Sobald ich den ändere um Where time .. einzubauen, gehts schief
Wie kann ich das abfragen?

Vielen Dank für eure Hilfe

Stefan

Re: $query abfragen ob ein aktueller wert existiert

Verfasst: Di 7. Mär 2023, 09:49
von solarfanenrico
Hallo,
die Frage ist etwas unglücklich gestellt.
Wenn etwas online ist oder nicht, kann man nur umständlich aus einer Datenbank auslesen.
Man kann es etweder über MQTT oder http-Abfragen erledigen. In beiden Fällen würde wohl nur eine Antwort erfolgen, wenn das Teil online ist.

Anders wäre die Frage, nach dem Schaltzustand des Relais. Ob es "AN" oder "AUS" ist kann man aus einer Datenbank erfahren, wenn dieser Zusatnd gespeichert wird. Fragt man jedoch hier wieder nach dem letzten Schaltzustand, wird nur der letzte Eintrag gezeigt.
Würde das Relais eingeschaltet sein, und unmittelbar danach die Verbindung abgebrochen(offline), bleibt das Relais eingeschaltet.

Enrcio

Re: $query abfragen ob ein aktueller wert existiert

Verfasst: Di 7. Mär 2023, 15:18
von fly2jerry
Hallo,

Ok, dann deutlicher gefragt: Wie kann ich denn in der auto-math.php abfragen, ob die shelly gerade online ist?
Ich dachte, ich schau, ob ein Wert in der letzten Minute vorhanden ist, indem ich die Zeit einschränke, Somit wäre egal ob ich Status oder Powerstatus abfrage.
Aber die Query macht immer einen Fehler, sobald ich auch nur die vorhandene Query z.B. in Klammern setze. Folglich kann ich die gar nicht richtig verändern.
Aber ich werde mir jetzt einfach mal den Zeitstempel nehmen und direkt in php vergleichen ob der Datensatz älter als eine Minute ist. Ich hatte gehofft, es gibt ne schickere Lösung.

Stefan

Re: $query abfragen ob ein aktueller wert existiert

Verfasst: Di 7. Mär 2023, 15:30
von solarfanenrico
Hallo Stefan,
scheinbar bin ich etwas begriffsstutzig.

Ich kann mir einfach nicht vorstellen, wie man etwas abfragen kann, was offline ist. Auch aus einer Datenbank nicht. Dort bekommt man immer nur den letzetn Wert. Ob es nun ein Staus oder ein bestimmter Wert ist, ist hierbei Nebensache.

Schaue erstmal in die InfluxDB, welche Werte dort zu welcher Zeit eingetragen werden. Dann postest Du das Ergebnis, und fragst wie man dies auf irgendeine Weise darstellen kann.
php verzeiht keine Fehler, und deine dürftigen Angaben mache die Hilfe unmöglich.
Enrico

Re: $query abfragen ob ein aktueller wert existiert

Verfasst: Di 7. Mär 2023, 17:15
von fly2jerry
Hallo Enrico,

es hat funktioniert.
Ich zerleg die Antwort vom query urlencode("SELECT last(Status) FROM Service") einfach so, dass ich den Zeitstempel des letzten Eintrags erhalte. Umformatieren und von der jetzigen Zeit abziehen, GMT offset noch rausrechnen. Dann noch die gewünschte Schwelle festlegen, ca 10 Sekunden Puffer einbauen bis die Werte sauber gelesen werden können und schon hat man ob der Wert aktuell ist oder nicht.
Ich bestimme quasi das Alter des letzten Eintrags.

Stefan

Re: $query abfragen ob ein aktueller wert existiert

Verfasst: Di 7. Mär 2023, 18:36
von solarfanenrico
Hallo,
dann ist es ja gut wenn es funktioniert.
Dann hat sich das Thema ja auch erledigt. Glückwunsch.
Enrcio