Zeitdarstellung

Hallo alle,
Ich habe folgende Problem , ich habe mir mit einer Stringvariable einen Text aus meiner Wetterstation geholt (Meteohub)
\ http://192,168.2.20/meteograph.cgi?text=year1_th0_tempmax_time // . Das Ergebnis lasse ich mir in eine Variable schreiben. Soweit ist alles gut .Ich möchte mir das Datum von dem Heißesten Tag im Jahr aus meiner Davis holen .
Mein Problem ist das Datum und die Uhrzeit werden nicht in UTC Zeit dargestellt sondern in einer langen Zahlenkolonne.

zeit.PNG die Ausgabe sieht dan so aus : zeit2.PNG

Wer kann mir helfen?:banghead:

UTC ist eine Zeitzone, keine Darstellung :wink:
Leider ist dein Format hier nicht gelistet, also musst du wohl selber umbauen.
PHP: Compound Formats - Manual

Zum Beispiel:


$Time = "20170622154948";
$Jahr = (int)substr($Time,0,4);
$Monat = (int)substr($Time,4,2);
$Tag = (int)substr($Time,6,2);
$Stunde = (int)substr($Time,8,2);
$Minute = (int)substr($Time,10,2);
$Sekunde = (int)substr($Time,12,2);

echo "Jahr:".$Jahr.PHP_EOL;
echo "Monat:".$Monat.PHP_EOL;
echo "Tag:".$Tag.PHP_EOL;
echo "Stunde:".$Stunde.PHP_EOL;
echo "Minute:".$Minute.PHP_EOL;
echo "Sekunde:".$Sekunde.PHP_EOL;

$Timestamp = mktime ($Stunde, $Minute, $Sekunde, $Monat, $Tag, $Jahr);
echo "UnixTimstamp:".$Timestamp;


Jahr:2017
Monat:6
Tag:22
Stunde:15
Minute:49
Sekunde:48
UnixTimstamp:1498139388

Ob nun die Zeitzone korrekt ist, kann ich dir nicht sagen, da dein Format keine enthält.

Michael

PS: Ich verschiebe das mal in den Fragebereich…
Zwischenablage01.png

Oh , klar ! Ist ja eine Frage und keine Anleitung sorry:)

Hallo Nall-Chan
Danke für die schnelle Antwort, aber leider komme ich damit nicht klar.ich weiß nicht wie ich das in meinem kleinen Skript einbinden soll.

Was willst du den erreichen?
Dein Script und deine Beschreibung sind nicht wirklich schlüssig.
Du kannst z.B. einfach den $Timestamp in eine IPS-Variable Typ Integer schreiben.
Als Profil der Variable stellst du ~UnixTimestamp ein.
Dann hast du diese Zeit in IPS.
Michael

Ich dachte es wäre klar , ich möchte den Tag aus meiner Davis auslesen der am heißesten war . Das mache ich mit dem kleinen Skript was ich oben gepostet habe. Ich verwende ein Skript für die höchste Temperatur (35,8 grd. Celsius) .Und ein Skript für den Tag an dem des so heiss war , und das war am 22.06.2017 . Diese ist so in meinem Meteohub gespeichert.
Ich bin ja schon froh das ich es hinbekommen habe diese Werte in einer Variable anzeigen lassen kann.
Aber der Zeitwert wird halt nur als so eine Zahlenkollonne zurückgegeben. Das mit der integer Variable habe ich schon versucht , aber es funktioniert nicht.

Und die Lösung hast du doch schon.
Ersetze $Time in meinem Script durch $array[0].
Und dann einfach SetValueInteger(12345, $Timestamp)
Profil für die Variable ist ~UnixTimestamp.
Ach, und die Echo s natürlich entfernen, sonst findest du im Log später die ganzen Einträge als Fehler.
Michael

Jetz geht garnichts mehr , pars error …

Sorry meine Glaskugel ist noch immer zur Reparatur :smiley:

Michael

$array = file("http://192.168.1.20/meteograph.cgi?text=year1_th0_tempmax_c");         
print_r($array); 
SetValue(43803 /*[Wetter\Davis Heissester Tag im Jahr]*/,  $array[0]);

jetz komme ich ganz durcheinander …

Hallo Nall-Chan
ich danke dir für deine Mühe , aber ich gebe es für heute auf.
Mfg Michael

Hallo zusammen,
ich versuche es mal als Moderator. Habe nämlich gerade eine ähnliche Aufgabenstellung wie Elektro.
Der Kollege hätte vermutlich gerne den zerlegten String neu zusammengestellt, sodass der String wie folgt aussieht.

Datum.Monat.Jahr oder anders dargestellt DD".„MM“."YYYY

Zumindest bräuchte ich es so.

Grüße Alfred

Im Beitrag 2 hat Michael alles geliefert ;), da sind doch alle von dir gewünschten Werte als einzelne Variablen enthalten. Du musst sie nur wie gewünscht zusammen setzen.

Es wäre aber Quark den String wieder zusammenzusetzen und als String in IPS darzustellen.
Dafür eignet sich perfekt auch eine Integer Variable mit Profil ~ UnixTinestamp.
Es ist mir sehr schwer zu helfen, ohne genaue Fehlermeldung sowie den Code (als Text, nicht Screenshot).
Michael

Danke und wie heißt der Befehl?

Gruß Alfred

  1. Frage:

Ich wollte im Webfront ein Datum (Beginn Urlaub) eingeben.
Sowie man das im Wochenplan machen kann und dieses Datum dann anschließend in das Format 2018-01-31 umrechnen.
Aber scheinbar denke ich zu kompliziert. Mit einer Variable vom Typ UnixTimestampDate geht es auf alle Fälle nicht.
Ich brauche diese Umrechnung weil meine Heizungssteuerung, die ich aus IPS ansteuere, dieses Format haben will.

Aktuell fallen mir hier nur 2 Möglichkeiten ein

  1. 3 Integervariablen in 3 Zeilen
  2. Einen String

Den Wochenplan kannst du direkt im WebFront einstellen. Dazu braucht es kein Script.
Und welcher Befehl für was?
Es steht alles in Post 2 und 5.
Wenn du allerdings nicht weißt wie man mehrere PHP-Variablen als einen String verketten kannst, solltest du dir die Grundlagen in der PHP Doku ansehen: http://php.net/manual/de/language.operators.string.php
Michael

Danke, für deine Links. Wie es scheint denke ich für IPS zu kompliziert.
Ich kann mir z.B. nicht erklären, warum ich in eine Integervariable vom Typ ~UnixTimestampDate kein Datum eingeben kann. Wenn es doch so schön in der Doku beschrieben ist.

Datum/Uhrzeit — IP-Symcon :: Automatisierungssoftware

VG Alfred

Das ist nur für die Darstellung.

Eingeben kannst du im WebFront nichts, weil du vermutlich kein AktionsSkript in der Variable hinterlegt hast.
https://www.symcon.de/service/dokumentation/komponenten/visualisierungen/objekt-darstellung/datumunduhrzeitauswahl/

Hat alles aber nichts mehr mit der ursprünglichen Aufgabenstellung zu tun.
Weil du musst dann aus dem Integer (Timestamp) mit Date oder gmdate dir wieder einen String für deine Hardware bauen.
Also genau der umgekehrte Weg.
Michael

$array = file(„http://192.168.1.20/meteograph.cgi?text=year1_th0_tempmax_time“);
print_r($array);
SetValueInteger(36855 $Timestamp);

$array[0] = „“;
$Jahr = (int)substr($Time,0,4);
$Monat = (int)substr($Time,4,2);
$Tag = (int)substr($Time,6,2);
$Stunde = (int)substr($Time,8,2);
$Minute = (int)substr($Time,10,2);
$Sekunde = (int)substr($Time,12,2);

$Timestamp = mktime ($Stunde, $Minute, $Sekunde, $Monat, $Tag, $Jahr);

Hallo Nall-chan, ein Frohes Neues Jahr ,
ich glaube ich habe jetzt alles so geändert. Aber geht nicht .
Ich bekomme eine Fehlermeldung in der Skriptausgabe:Parse error: syntax error, unexpected ‚$Timestamp‘ (T_VARIABLE) in C:\IP-Symcon\scripts\10587.ips.php on line 4

Ps: den zeitstempel hole ich mir über den Browser, nach dem Return drücken bekomme ich die Zahlenkolonne angezeigt.