oder du erstellst eine Bool-Variable die du über einen Zeitplan im Webfront an/aus schaltest. Diese Variable fragst du dann einfach ab…
Hat den Vorteil das du die Zeiten bequem einstellen kannst. Dir geht es ja vermutlich um die Helligkeit im Außenbereich. Das ändert sich natürlich entsprechend der Jahreszeit. Ich hab z. B. einen Dämmerungssensor draußen, der schaltet mir dann eine Variable welche ich zum Rolladenfahren und Außenbeleuchtung abfrage.
ich habe eine ähnliche Funktion implementiert. Bei mir wird nicht der Rolladen herunter gefahren weil ich Licht einschalte, sondern Licht eingeschaltet wenn der Rolladen unten ist bzw. wenn es Abend ist. Das habe ich in Kombination mit IPSShadowing bzw. IPSTwilight realisiert. Dort hast du ja je nach Tag, Sonnenauf- und Sonnenuntergangszeiten (). Ich weiß nicht genau WAS du vor hast oder was dein Bedürfnis ist, aber eventuell ist das eine Alternative?
oder du fragst deinen Fernseher ab ob er läuft und lässt dann die Store automatisch runterfahren
kann natürlich auch nur während eines zeitfensters erfolgen
Ich wollte z.B. meine Heizung gemäß Außentemperatur später oder früher schalten, aber man soll auch übers Dashboard eine andere Zeit eingben können (Party). Spätestens beim überschreiten der 24 Uhr Grenze scheitere ich.
Die Zeiten über eine Variable/Textbox ändern kannst du einfach, indem du den festen Wert in eine Variable änderst. Je nachdem wie das bei dir aussieht… Aber hier mal ein Beispiel:
$StundeStart = GetValue(12345); // ID deiner Integer-Variable, welche du über ein WebFront, ... eingeben willst
$timestampSTART = mktime( $StundeStart, 00, 0, date("m"), date("d"), date("Y"));
Und wieso ist der Tages-Wechsel ein Problem?
Beispiel für die Zeit zwischen 18 Uhr Abends und 5 Uhr Morgens:
if ((date("H") > 18) OR (date("H") <= 5)) {
echo "In der Zeitspanne";
}
ich hatte das Programieren mit Dbase gelernt, da gab es direkt eine Variable für das Datum. Die konnte man mit Dtoc(), Dtos() oder ctod() wandeln, damit rechnen, wieder zurückwandeln. Meine Unverständnis scheint an den vermischten integer und string Folgen zu liegen.
Immerhin weiß ich, das time() + 1 eine Sekunde später bedeutet, aber das im Dash eingegebene date( „H.M“) +1 bzw. date(„01.15“) Uhr +5 geht nicht, oder?
Wenn nicht, dann schreib doch bitte nochmal möglichst genau was wie wo wann genau passieren soll, dann schreib ich dir ein Beispiel, geht vlt. einfacher/schneller!?
Du kannst das Beispiel ja in deinen Worten schreiben, frei nach dem Motto „if getvalue(12345) ist gleich 10, und der Tag ist von Montag bis Freitag und die Zeit zwischen 20 und 22 Uhr, dann mach dies und jenes“.
Oder wie weit bist du denn gekommen mit deinen Versuchen und wo hängst du genau? Poste mal was du bisher hast.
Bin jetzt schon etwas weiter. Das date(„d“)+1 hilft mir. Man könnte also auch date(„m“)+ 50, 50 Minuten später ist? Auch wenn es 23:50 Uhr ist?
Mal ausführlicher:
Die Heizung hat täglich 2 Heizperioden. Eine mit Mittelpunkt 8 Uhr und eine mit Mittelpunkt 20 Uhr. Ist die Heizperiode also zB. 4 Stunden lang, beginnt die erste 6 Uhr und endet 10 Uhr. Die zweite beginnt 18 Uhr und endet 22 Uhr.
Die Länge der Zeitperiode ist variabel und richtet sich nach der Außentemperatur.
Also sind draußen 25°plus, ist die Periode nur 1 Sekunde lang. Ist es aber draußen -25° kalt ist jede Heizperiode 12 Stunden lang.
Demnach
Nr.1 von 2Uhr bis14Uhr,
Nr.2 von 14 bis 2Uhr.
Genau da liegt mein Problem. Weil, mein Script denkt am gleichen Tag 2Uhr. Gewollt ist aber der nächste Tag. Mit date() bekommt man das nicht hin, oder?
Im Dashboard wird angezeigt: „nächster Heizbeginn 6:30 Uhr“ bei Pause, oder „Heizung endet 23:00“.
Nun möchte ich, dass jeder die Zahlen im Dash ändern kann. (Party)
Jeder wird 1:30 einschreiben, ohne dran zu denken, dass er den nächsten Tag noch eintragen muss. Steht das Heizende auf Vergangenheit, geht die Heizung aus.
Ich muss zugeben, dass ich mich auch noch nicht intensiv mittels try und error mit den verschiedenen Zeiten der php beschäftigt habe. Ganz einfach, weil es noch nie so kalt war und ich es auch im Script ändern konnte.
Mir würde es schon helfen, wenn Du mir sagst; Mach das mit dem xy Befehl und nicht mit dem yx Befehl.
Ich geb mir Mühe Aber entweder denkst du zu umständlich, oder ich versteh nach wie vor alles falsch
Und bzgl. „konntest du nicht testen“ > einfach ein Test-Skript machen, welches nur eine Variable schaltet und nicht die Heizung. Außerdem einfach andere Temperaturen einstellen, also statt -25 Grad halt nur -5 Grad oder sonstwas.
Also mit deinen Zeiten, dazu hatte ich ja ein Beispiel geschrieben, welches für dich passen sollte, diesmal etwas erweitert:
if ($AussenTemp < 0) {
$heizzeit = 21600; // 6 Stunden
}
elseif ($AussenTemp > 0) {
$heizzeit = 7200; // 2 Stunden
}
if ((date("H") > 2) OR (date("H") <= 14) {
echo "Zeitspanne zwischen 2 und 14 Uhr";
IPS_SetScriptTimer($_IPS['SELF'], $heizzeit);
}
if ((date("H") > 14) OR (date("H") <= 2) {
echo "Zeitspanne zwischen 14 und 2 Uhr";
IPS_SetScriptTimer($_IPS['SELF'], $heizzeit);
}
Ich versteh deine Heizungsautomatik einfach nicht
Und was sollen die anderen bei dir jetzt genau ändern können? Welche zahlen?
Also entweder musst du dich mal selbst richtig reinknien und das irgendwie hinbekommen, oder du musst dir mal die Mühe machen und hier mal RICHTIG „präsentieren“ was du machen willst, schön mit Screenshots und ordentlichen erklären, oder du findest jemand, der sich das bei dir zu Hause anschaut, oder keine Ahnung…ich bin so langsam am Ende mit meinem Latein…
Und zwar mit diesem Beispiel hier, vlt. trifft das deine Wünsche
<?
//$mittelpunkt = time(); // Aktuelle zeit als Mittelpunkt
$mittelpunkt = mktime(20, 0, 0, date("m"), date("d"), date("Y")); // 20 Uhr als Mittepunkt
$differenzzeit = 10; // 10 Stunden Vorlauf und Nachlauf um deine Mittelpunkt Ausgangszeit - diesen Wert kannst du aus einer Variable holen und auch über das WebFront ändern oder wie auch immer
$vorlaufstring = "-".$differenzzeit." hour";
$nachlaufstring = "+".$differenzzeit." hour";
$vorlauf = strtotime($vorlaufstring, $mittelpunkt);
$nachlauf = strtotime($nachlaufstring, $mittelpunkt);
echo $mittelpunkt."
"; // Unix-Timestamp
echo $vorlauf."
"; // Unix-Timestamp
echo $nachlauf."
"; // Unix-Timestamp
echo "Vorlauf-Event: ".date('d.m.Y H:i:s', $vorlauf)."
";
echo "Mittelpunkt: ".date('d.m.Y H:i:s', $mittelpunkt)."
";
echo "Nachlauf-Event: ".date('d.m.Y H:i:s', $nachlauf)."
";
?>
Unix-Timestamps kannst du verwenden und damit Events zu setzen. Diese könntest du im Skript abfragen, also welches Event ausgelöst hat und danach AN/AUS schalten. Oder sonstwas machen.
Für die Events ist das hier hilfreich: IPS_SetEventCyclicTimeBounds — IP-Symcon :: Automatisierungssoftware
Wie meine Frau immer sagt: „Du kannst Dich einfach nicht verständlich ausdrücken!!“
Zu erst zum ersten Beispiel:
if ((date("H") > 14) OR (date("H") <= 2) {
echo "Zeitspanne zwischen 14 und 2 Uhr";
Mein Problem ist, woher weiß php wenn 14 Uhr Freitag ist, dass 2 Uhr dann Samstag gemeint ist und nicht Freitag???
Dein 2. Beispiel ist echt zu hoch für mich. Damit muss ich mich mal länger beschäftigen. Aber keine Sorge, wie ich es dann berechne ist nicht das Problem. War nur der Versuch Dir es zu erklären. In Mathe hatte ich ausnahmsweise mal aufgepasst.
Ich will versuchen Deine Frage zu beantworten.
Jetzt ist es 8:30 Montag. Mein Dash zeigt jetzt dies an:
Da steht jetzt: Heizung schaltet 14:02 Uhr ab. Dieses Feld will ich in ein Eingabefeld ändern. Weil heute ab 12 Uhr keiner mehr da ist, kann doch die Heizung schon 11:30 Uhr abschalten. Man müsste doch dann einfach in das Feld klicken und dann 11:30 eingeben. Begriffen habe ich, dass ich mit dem Timestamp arbeiten muss und diese eingetippelten „11:30“ mit (date(„H“ =11,„m“=30)) oder ähnlich, in den stamp wandeln muss.
Mit dem nicht testen können habe ich gemeint, hatte nocht die Zeit. Du hast recht, ich muss mich mal richtig reinknieen. Dazu wollte ich aber die Zeitfunktionen besser verstehen. Hat auch geholfen, bis auf die Frage oben.
Das Script dazu muss ich noch überarbeiten, ehe es der Öffentlichkeit gezeigt werden kann.
Hier mal ein extra langes und ausführliches Beispiel zu Tagen und Uhrzeiten (geht auch kürzer, ist aber so besser verständlich):
<?
$Tag = Date("w");
$Tag1 = array("7","1","2","3","4","5","6");
echo "Aktueller Tag ", $Tag1[$Tag]."
";
if ($Tag1[$Tag] == 1) {
echo "Es ist Montag"."
";
}
if ($Tag1[$Tag] == 2) {
echo "Es ist Dienstag"."
";
}
if ($Tag1[$Tag] == 3) {
echo "Es ist Mittwoch"."
";
}
if ($Tag1[$Tag] == 4) {
echo "Es ist Donnerstag"."
";
}
if ($Tag1[$Tag] == 5) {
echo "Es ist Freitag"."
";
}
if ($Tag1[$Tag] == 6) {
echo "Es ist Samstag"."
";
}
if ($Tag1[$Tag] == 7) {
echo "Es ist Sonntag"."
";
}
if (((date("H") > 14) OR (date("H") <= 2)) AND (($Tag1[$Tag] >= 1) AND ($Tag1[$Tag] <= 5))) {
echo "Es ist ein Werktag (Montag bis Freitag) und es ist zwischen 14 und 2 Uhr";
}
elseif ((date("H") <= 2) AND ($Tag1[$Tag] >= 6)) {
echo "Es ist Wochenende (Samstag oder Sonntag) und vor 2 Uhr"."
";
}
?>
Statt den „echo“ müsstest du das halt in Events schreiben oder Skripte aufrufen oder wie auch immer…
Spätestens jetzt solltest du aber wirklich alles an Infos zusammen haben, um mit etwas Einsatz und ein wenig basteln, da etwas brauchbares für dich zu „erschaffen“!? hoff
Bzgl. dein Skript veröffentlichen > du willst hier doch wohl keinen Schönheitspreis für das schönste Skript gewinnen, sondern du willst eine Lösung finden!?
du musst schon lesen was ich dir da alles vorkaue
Meine Beispiele am Ende, da kannst du komplett jeden Wochentag und jede Uhrzeit einzeln abfangen und damit anstellen was du möchtest. Oder zwischen Werktag und Wochenende unterscheiden.
Hier nochmal Beispiele für deinen eben genannten Fall:
<?
$Tag = Date("w");
$Tag1 = array("7","1","2","3","4","5","6");
echo "Aktueller Tag ", $Tag1[$Tag]."
";
if ((date("H") >= 14) AND ($Tag1[$Tag] >= 1) AND ($Tag1[$Tag] <= 5)) {
echo "Es ist ein Werktag (Montag bis Freitag) und es ist 14 Uhr oder nach 14 Uhr"."
"; // 14.00.01 Uhr bis 23.59.59 Uhr
}
elseif ((date("H") >= 14) AND ($Tag1[$Tag] == 5)) {
echo "Es ist Freitag und 14 Uhr oder nach 14 Uhr"."
"; // 14.00.01 Uhr bis 23.59.59 Uhr
}
elseif ((date("H") < 2) AND ($Tag1[$Tag] == 6)) {
echo "Es ist Samstag und vor 2 Uhr"."
"; // 00.00.01 Uhr bis 1.59.59 Uhr
}
elseif ((date("H") < 2) AND ($Tag1[$Tag] >= 6)) {
echo "Es ist Wochenende (Samstag oder Sonntag) und vor 2 Uhr"."
"; // 00.00.01 Uhr bis 1.59.59 Uhr
}
?>
Wenn du das nicht meinst, dann weiß ich auch nicht mehr weiter. Habe dir mittlerweile viele viele mögliche Wege aufgezeigt. Jetzt ist es einfach an der Zeit, dass du dich selbst mal an die Arbeit machst, ein wenig probierst und erst mal selbst etwas programierst und dann, wenn du es so hast wie es sein soll, dann kann man nochmal drüber schauen, wenn etwas nicht so richtig läuft wie du willst.
Ich danke Dir für Deine Mühe,
werde Deine script mal durch testen, wenn Zeit ist.
mal was anderes: Du bist doch der absolute Experte. Kannst Du ein IPS Script für uns schreiben? Was würde so etwas kosten?
Wir machen Kabelinternet. Ich muss mich mit Passwort in das Managementsystem https://www-admin.zaschendorf.km3.de/ einwählen, dann einen Kunden aussuchen, dann auf sein Kabelmodem klicken, dann dort die Statuswerte abrufen. Dort kann man ablesen, mit welchen Werten das Modem sendet und empfängt.
Ich möchte das gern von IPS automatisch machen lassen und die Werte in Variablen schreiben. Dann käme ich selbst weiter.
Hintergrund ist unter anderem, wenn 5 Modems genau zur gleichen Zeit ausfallen, dann gab es meist einen Kabelschaden und wir müssen schlagartig hin und reparieren. IPS könnte mir dann z.B. eine sms schicken.
Bisher ruft mich ein Kunde an----Bei mir geht kein Internet!!!— dann renn ich zum Rechner, prüfe auf diese tippeltappeltur bei wem es noch ausgefallen ist.
danke für die Blumen, aber ich bin alles andere als ein Experte! Ich beschäftige mich momentan nur seit einigen Monaten sehr sehr viel mit IPS/PHP und deswegen kann ich mir mittlerweile einiges zusammenbasteln
…aber für mich klingt das stark nach einem Fall für den IPS „Text Parser“ was du da vor hast - oder allgemein nach „curl“ mit „preg_match“ (sofern das Management Tool nicht auf Java oder so basiert) > TextParser IP-Symcon :: Automatisierungssoftware
Müsste man sich mal live anschauen das Management Ding mit Quellcode, dann kann man mehr sagen wie hoch der Aufwand wäre.
Bitte lösch das sofort wieder alles hier raus! Ich hab es nicht genau durchgeschaut, aber bevor da was falsches dabei ist, was keiner sehen darf. Ich schicke dir per PN meine Email-Adresse, dann kannst du mir das alles mailen, hab ich ein besseres/sicheres Gefühl dabei
Geht ja hier nicht um eine unwichtige Seite, sondern ein Admin-Panel für Kabel-Kunden und Datenschutz mit Kundendaten usw…
Aber soweit ich das auf die schnelle überflogen habe, kann man das mit dem Text Parser oder curl oder DOM alles schön rausholen.