Wecker -Funktion mit Eingabefeld?

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
deuconet
Beiträge: 19
Registriert: 06.09.2009, 19:44

Wecker -Funktion mit Eingabefeld?

Beitrag von deuconet » 06.09.2009, 20:02

Hallo

Ich teste nun schon seit längerer Zeit alle möglichen Komponenten die ich so bekommen kann. Manche Funktionen wollen sich mir jedoch nicht erschließen.

Meine Herausforderung:

Erstelle ein Feld in einer Ansicht der Software, in die ich eine Uhrzeit eintragen kann (als Text per Tastatur - weniger schöne Alternative: extra "Weckeransicht" mit vielen festen Weckzeiten als Buttons). Evtl. bestätigen.
Dann zu dieser eingestellten "Weckzeit" ein Makro ausführen (Licht einschalten, etc...).

Ich könnte das mit PHP realisieren, aber brauche da etwas Starthilfe. Ich stelle mir das so vor: Ich gebe eine Uhrzeit ein und diese wird als Variable gespeichert. Zur Zeit "$Weckzeit" wird dann das Makro ausgeführt. Dann ist mir noch unklar, wie der PC merkt, wann er dieses Makro ausführen soll (jede Minute auf Wahr prüfen fände ich doof - aber wenn es sich nicht vermeiden ließe...)

Ich hoffe ihr könnt mir nen Tipp geben.

Grüße, Dennis
--------------------
FHZ, FS20, Keymatic, Frau und 2 Kinder :shock:

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wecker -Funktion mit Eingabefeld?

Beitrag von buempi » 06.09.2009, 20:43

Hallo Dennis und willkommen im Forum!
deuconet hat geschrieben:Dann ist mir noch unklar, wie der PC merkt, wann er dieses Makro ausführen soll (jede Minute auf Wahr prüfen fände ich doof - aber wenn es sich nicht vermeiden ließe...
Das lässt sich nicht vermeiden. Wobei es natürlich davon abhängt, was für Weckzeiten in Frage kommen. Wenn du auch an 06:05:05 denkst, musst du es sogar alle 5 Sekunden ausführen lassen. Falls du mit runden Stunden "zufrieden" bist, natürlich nur jede Stunde.

Das Objekt muss vom Typ Zeichen sein (weil es keinen Typ Uhr gibt). Da trägst du dann z.B. 06:00:00 ein. Schreibfehler werden natürlich nicht überprüft und führen zum Misserfolg. Damit ist das Objekt selbst die Variable.

Der ganze "Weckablauf" mit Licht einschalten usw. kann im gleichen Objekt stehen. Das Makro würde dann lauten:

Code: Alles auswählen

wenn Uhrzeit = NameDeinesObjektes dann
   Licht einschalten
   Rollladen := "oben"
** usw.
endewenn
Du darfst in diesem Makro aber keine WARTE() haben die - kumuliert - mehr als 1 Minute (=Ausführungsintervall) betragen. Sollte der Ablauf so sein, dass längere WARTE() nötig sind, musst du alles in ein anderes Makro packen und im "Steuer-Makro" nur folgendes eintragen:

Code: Alles auswählen

wenn Uhrzeit = NameDeinesObjektes dann
   Starte(AusfuehrungsMakro)
endewenn
Ein WARTE() wird nämlich durch jeden erneuten Aufruf des Makros (durch Empfang/Eingabe/Intervall usw.) abgebrochen.

PHP würde dir keine Vorteile bringen. Den Ausführungsintervall kannst du nur über Homeputer steuern. Die jede Minute erfolgende einfache Auswertung der WENN-Bedingung wird übrigens den Rechner nicht aus dem Tiefschlaf wecken!

Viele Grüsse
Bümpi

deuconet
Beiträge: 19
Registriert: 06.09.2009, 19:44

Re: Wecker -Funktion mit Eingabefeld?

Beitrag von deuconet » 06.09.2009, 21:02

Danke, das werde ich dann gleich mal testen :-)

deuconet
Beiträge: 19
Registriert: 06.09.2009, 19:44

Re: Wecker -Funktion mit Eingabefeld?

Beitrag von deuconet » 06.09.2009, 21:27

Habe das grad mal getestet:

Code: Alles auswählen

wenn Uhrzeit = WeckerDennis dann
   UP_Dimmer_WZ1 setzen auf raufdimmen Geschwindigkeit 5
   UP_Dimmer_WZ2 setzen auf raufdimmen Geschwindigkeit 5
   WeckerDennis := ""
endewenn
Funzt super :-)

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wecker -Funktion mit Eingabefeld?

Beitrag von buempi » 07.09.2009, 08:38

Hallo Dennis

Freut mich, dass es funzt! Aber: Warum setzst du das Objekt am Schluss zurück? So musst du das täglich neu eintragen, auch wenn die Weckzeit für den Folgetag nicht ändert. Und wenn du es einmal vergisst, wirst du gar nicht geweckt.

Man kann natürlich auch andersrum denken: Das leere Feld erinnert dich daran, dass da noch was zu tun ist... :P

Viele Grüsse
Bümpi

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Wecker -Funktion mit Eingabefeld?

Beitrag von buempi » 07.09.2009, 09:11

Hallo Dennis

Du könntest es auch noch weiter treiben:

Code: Alles auswählen

wenn Uhrzeit = WeckerDennis dann
   UP_Dimmer_WZ1 setzen auf raufdimmen Geschwindigkeit 5
   UP_Dimmer_WZ2 setzen auf raufdimmen Geschwindigkeit 5
   WeckerDennis := ""
endewenn

Nochmals:

wenn WeckerDennis = "Weckzeit" oder WeckerDennis = "eintragen" oder WeckerDennis = "" dann
   WeckerDennis := "Weckzeit"
   warte("00:00:01")
   wenn WeckerDennis = "Weckzeit" dann
      WeckerDennis := "eintragen"
   endewenn
   warte("00:00:01")
   wenn WeckerDennis = "eintragen" dann
      WeckerDennis := ""
   endewenn
   warte("00:00:01")
   wenn WeckerDennis = "" dann
      gehezu Nochmals
   endewenn
endewenn
Die vielen WENN-Abfragen sind nötig, damit du überhaupt eine Weckzeit eintragen kannst. Sonst würde dein Eintrag immer gleich wieder mit dem nächsten Wort überschrieben. Du kannst sie auch alle (ausser der ersten!) weglassen und stattdessen "Ausführen bei Eingabe" aktivieren. Dann fängt das Makro sofort nach der Eingabe einer Uhrzeit oben an und überschreibt die Uhrzeit auch nicht.

Auch diese Spielerei wird deine CPU nicht ausser Atem bringen!

Viele Grüsse
Bümpi

deuconet
Beiträge: 19
Registriert: 06.09.2009, 19:44

Re: Wecker -Funktion mit Eingabefeld?

Beitrag von deuconet » 07.09.2009, 15:12

Danke für den Tipp, aber die Funktion, die ich geschrieben hatte, tut genau das, was ich damit erreichen wollte. Als Selbstständiger muss ich jeden Abend entscheiden, wann mein Wecker am nächsten Tag klingeln soll. Kein Tag ist wie der nächste :-)

Aber: Es gibt sicherlich noch ein paar Aufgaben, die ich hier zur Lösung einstellen werde ...

Grüße, Dennis :D

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“