zu blöd für Zeitsteuerung

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

Moderator: Co-Administratoren

Antworten
Schinderhannes
Beiträge: 134
Registriert: 02.12.2011, 11:46

zu blöd für Zeitsteuerung

Beitrag von Schinderhannes » 26.04.2013, 19:43

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

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

Re: zu blöd für Zeitsteuerung

Beitrag von buempi » 26.04.2013, 21:02

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

Schinderhannes
Beiträge: 134
Registriert: 02.12.2011, 11:46

Re: zu blöd für Zeitsteuerung

Beitrag von Schinderhannes » 27.04.2013, 13:18

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

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

Re: zu blöd für Zeitsteuerung

Beitrag von buempi » 27.04.2013, 13:28

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.
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).

Viele Grüsse
Bümpi

Schinderhannes
Beiträge: 134
Registriert: 02.12.2011, 11:46

Re: zu blöd für Zeitsteuerung

Beitrag von Schinderhannes » 27.04.2013, 15:00

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

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

Re: zu blöd für Zeitsteuerung

Beitrag von buempi » 27.04.2013, 15:18

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:

Code: Alles auswählen

wenn GartenHauslampen = 0 dann
   GartenHauslampen := 1
   GartenLoggiaLampe := 1
   Bewegungsmelder.AutomatikAktiv := 0
sonst
   GartenLoggiaLampe := 0
   GartenHauslampen := 0
   Bewegungsmelder.AutomatikAktiv := 1
endewenn
Im Bewegungsmelder dann:

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
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

Antworten

Zurück zu „homeputer Studio / Standard: allgemeine Fragen“