Hi all,
ich habe mal wieder ein Problemchen:
ich habe da diesen netten neuen Aussenbewegungsmelder und will damit ab 1 h vor Sonnenuntergang bis 1h nach Sonnenaufgang jeweils bei Bewegung zwei Lampen für 2 min anschalten.
Die Lampen sind auch über andere Funkschalter dauerhaft zu schalten.
Zwei Probleme: die Lampen bleiben öfter mal einfach an, evtl (aber nicht sicher) gehäuft dann wenn man ständig im Bewegungsmelder Bereich aktiv war.
Sie lassen sich per Taster immer ausschalten so dass ich nicht denke das es an der Verbindung liegt (alles über die Zentrale und Homeputer keine Direktverknüpfungen).
Das zweite Problem ist die Sonnenzeitlogik. Die wird schlichtweg ignoriert und es geht immer an (so wie ich es auch vorher ohne Sonnenstand aber schon mit dem Problem des Anbleibens hatte)..
Anbei mein Makro: wer findet die Fehler? (Ausführung ist bei Änderung und Bei Empfang gecheckt)
****************
wenn Uhrzeit > ("Sonnenuntergang" - "01:00:00")
oder Uhrzeit < ("Sonnenaufgang" + "01:00:00") dann
wenn GartenHauslampen = 0
dann
GartenHauslampen := 1
GartenLoggiaLampe := 1
warte ("00:02:00")
GartenHauslampen := 0
GartenLoggiaLampe := 0
endewenn
endewenn
*********************
Thanx for any hints!
Hannes
zu blöd für Zeitsteuerung
Moderator: Co-Administratoren
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: zu blöd für Zeitsteuerung
Hallo Hannes
Die Funktionen «Sonnenuntergang» und «Sonnenaufgang» dürfen auf keinen Fall in Anführungszeichen gesetzt werden. Funktionen, Schlüsselwörter, Variablen usw. stehen NIE in Anführungszeichen. In keiner Programmiersprache!
Ein weiteres Problem könnte noch die Berechnung innerhalb der WENN-Bedingung sein. Mach lieber zwei Variablen vom Typ Uhr für die Berechnung und verwende im WENN dann diese.
Der Grund, dass das Licht nicht ausgeschaltet wird, liegt daran: Erfolgt innerhalb von 2 Minuten erneut Bewegung, wird das WARTE() im Makro abgebrochen und das Makro neu gestartet. Weil das Licht aber noch brennt, kommt das Makro gar nicht mehr bis zum WARTE und zum Ausschalten. Lass die Abfrage «wenn GartenHauslampen = 0» doch einfach weg!
Viele Grüsse
Bümpi
Die Funktionen «Sonnenuntergang» und «Sonnenaufgang» dürfen auf keinen Fall in Anführungszeichen gesetzt werden. Funktionen, Schlüsselwörter, Variablen usw. stehen NIE in Anführungszeichen. In keiner Programmiersprache!
Ein weiteres Problem könnte noch die Berechnung innerhalb der WENN-Bedingung sein. Mach lieber zwei Variablen vom Typ Uhr für die Berechnung und verwende im WENN dann diese.
Der Grund, dass das Licht nicht ausgeschaltet wird, liegt daran: Erfolgt innerhalb von 2 Minuten erneut Bewegung, wird das WARTE() im Makro abgebrochen und das Makro neu gestartet. Weil das Licht aber noch brennt, kommt das Makro gar nicht mehr bis zum WARTE und zum Ausschalten. Lass die Abfrage «wenn GartenHauslampen = 0» doch einfach weg!
Viele Grüsse
Bümpi
-
- Beiträge: 134
- Registriert: 02.12.2011, 11:46
Re: zu blöd für Zeitsteuerung
Hi Buempi,
danke für die umfassende Antwort, die heute morgen auch noch viel hilfreicher ist als die erste Version gestern abend LOL.
Einzig die Idee die Abfrage ob die Lampen an sind rauszunehmen ist suboptimal, weil dann die Lampen auch wenn sie dauerhaft an sein sollen nach 2 min im Sensorbereicch ausgehen.
Kann ich die Zeitschaltung in ein separates Makro auslagern das bei Erfüllung aller wenn-Bedingungen gecalled wird und so das Problem umgehen, da dieses dan immer ungestört zuende laufen kann?
Wenn ja wie mache ich dass? muß ich
call Zeitschaltung
sagen oder wie rufe ich aus einem Makro ein zweites auf?
LG
Hannes
danke für die umfassende Antwort, die heute morgen auch noch viel hilfreicher ist als die erste Version gestern abend LOL.
Einzig die Idee die Abfrage ob die Lampen an sind rauszunehmen ist suboptimal, weil dann die Lampen auch wenn sie dauerhaft an sein sollen nach 2 min im Sensorbereicch ausgehen.
Kann ich die Zeitschaltung in ein separates Makro auslagern das bei Erfüllung aller wenn-Bedingungen gecalled wird und so das Problem umgehen, da dieses dan immer ungestört zuende laufen kann?
Wenn ja wie mache ich dass? muß ich
call Zeitschaltung
sagen oder wie rufe ich aus einem Makro ein zweites auf?
LG
Hannes
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: zu blöd für Zeitsteuerung
Aber nur, wenn es noch mindestens 1 weiteres Makro gibt, das die gleichen Lichter schaltet? Ohne die Zusammenhänge zu kennen, kann man keine vernünftigen Vorschläge machen! Poste also bitte ALLE Makros (und ev. Zeittabellen), welche die betreffenden Lichter schalten (so, wie sie jetzt sind).Schinderhannes hat geschrieben:Einzig die Idee die Abfrage ob die Lampen an sind rauszunehmen ist suboptimal, weil dann die Lampen auch wenn sie dauerhaft an sein sollen nach 2 min im Sensorbereicch ausgehen.
Viele Grüsse
Bümpi
-
- Beiträge: 134
- Registriert: 02.12.2011, 11:46
Re: zu blöd für Zeitsteuerung
Hi Buempi,
jetzt hab ichs, vielleicht für andere auch von Interesse:
Also die Lampen werden auch über andere Makros die einfach an aus schalten gesteuert und sollen dann "wie normale" Taster reagieren.
Das sieht dann z.B. beim SchaltSensorWohn1 (Kanal1 eines 4-Fachtastsensors im std. Schalterprogramm versteckt) so aus:
wenn GartenHauslampen = 0 dann
GartenHauslampen := 1
GartenLoggiaLampe := 1
sonst
GartenLoggiaLampe := 0
GartenHauslampen := 0
endewenn
dann sollen die aber in der Dämmerung auch als Minutenlicht funzen ohne wenn man unter der Loggia grillt ständig an und aus zu gehen (dann eben über Schalter aktiviert).
Der Bewegungsmelder triggert jetzt folgendes Makro:
wenn Uhrzeit > (Sonnenuntergang - "01:00:00")
oder Uhrzeit < (Sonnenaufgang + "01:00:00") dann
wenn GartenHauslampen = 0
dann
Makro aufrufen MinutenlichtGarten
endewenn
endewenn
BTW der Funktionsausdruck in der Wenn-schleife funktioniert, man braucht keine Hilfsvariable.
Damit ist das Minutenlicht aus dem Makro raus und wird separat gestartet.
Danach läuft diese Makro zuende und 2 min später schaltet das Licht zuverlässig ab.
MinutenlichtGarten ist trivial:
GartenHauslampen := 1
GartenLoggiaLampe := 1
warte ("00:02:00")
GartenHauslampen := 0
GartenLoggiaLampe := 0
Nochmal Danke!
LG
Hannes
jetzt hab ichs, vielleicht für andere auch von Interesse:
Also die Lampen werden auch über andere Makros die einfach an aus schalten gesteuert und sollen dann "wie normale" Taster reagieren.
Das sieht dann z.B. beim SchaltSensorWohn1 (Kanal1 eines 4-Fachtastsensors im std. Schalterprogramm versteckt) so aus:
wenn GartenHauslampen = 0 dann
GartenHauslampen := 1
GartenLoggiaLampe := 1
sonst
GartenLoggiaLampe := 0
GartenHauslampen := 0
endewenn
dann sollen die aber in der Dämmerung auch als Minutenlicht funzen ohne wenn man unter der Loggia grillt ständig an und aus zu gehen (dann eben über Schalter aktiviert).
Der Bewegungsmelder triggert jetzt folgendes Makro:
wenn Uhrzeit > (Sonnenuntergang - "01:00:00")
oder Uhrzeit < (Sonnenaufgang + "01:00:00") dann
wenn GartenHauslampen = 0
dann
Makro aufrufen MinutenlichtGarten
endewenn
endewenn
BTW der Funktionsausdruck in der Wenn-schleife funktioniert, man braucht keine Hilfsvariable.
Damit ist das Minutenlicht aus dem Makro raus und wird separat gestartet.
Danach läuft diese Makro zuende und 2 min später schaltet das Licht zuverlässig ab.
MinutenlichtGarten ist trivial:
GartenHauslampen := 1
GartenLoggiaLampe := 1
warte ("00:02:00")
GartenHauslampen := 0
GartenLoggiaLampe := 0
Nochmal Danke!
LG
Hannes
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: zu blöd für Zeitsteuerung
Hallo Hannes
Damit hast du genau das Gleiche im Bewegungsmelder wie vorher, einfach auf 2 Makros verteilt: Nach 2 Minuten geht das Licht aus, weil das zweite Makro bei «wenn GartenHauslampen = 0» nicht erneut aufgerufen wird, solange das Licht noch an ist. Das musst du so lösen, indem du eine Zahlen-Variable "AutomatikAktiv" im Bewegungsmelder anlegst. Im Tastsensor schlage ich dann folgendes Makro vor:
Im Bewegungsmelder dann:
Warum verwendest du übrigens die Sonnenzeiten und nicht die vom Bewegungsmelder gemeldete Helligkeit?
Ob das mit den Zeitberechnungen im WENN funktioniert, musst du noch testen!
Viele Grüsse
Bümpi
Damit hast du genau das Gleiche im Bewegungsmelder wie vorher, einfach auf 2 Makros verteilt: Nach 2 Minuten geht das Licht aus, weil das zweite Makro bei «wenn GartenHauslampen = 0» nicht erneut aufgerufen wird, solange das Licht noch an ist. Das musst du so lösen, indem du eine Zahlen-Variable "AutomatikAktiv" im Bewegungsmelder anlegst. Im Tastsensor schlage ich dann folgendes Makro vor:
Code: Alles auswählen
wenn GartenHauslampen = 0 dann
GartenHauslampen := 1
GartenLoggiaLampe := 1
Bewegungsmelder.AutomatikAktiv := 0
sonst
GartenLoggiaLampe := 0
GartenHauslampen := 0
Bewegungsmelder.AutomatikAktiv := 1
endewenn
Code: Alles auswählen
wenn AutomatikAktiv = 0 dann
verlassen
endewenn
wenn Uhrzeit > (Sonnenuntergang - "01:00:00")
oder Uhrzeit < (Sonnenaufgang + "01:00:00") dann
GartenHauslampen := 1
GartenLoggiaLampe := 1
warte ("00:02:00")
GartenHauslampen := 0
GartenLoggiaLampe := 0
endewenn
Ob das mit den Zeitberechnungen im WENN funktioniert, musst du noch testen!
Viele Grüsse
Bümpi