YAWN – Yet Another anWesenheitssimulatioN

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Benutzeravatar
Blackeye
Beiträge: 547
Registriert: 15.08.2015, 16:33
Hat sich bedankt: 2 Mal

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von Blackeye » 08.09.2015, 15:31

Hi,

Ich habe die letzten Tage auch noch an meinen Feiertage gebastelt, ich hoffe es klappt jetzt. Oder ich greife auf deine Version zurück. :D
Es kann sein, das genau das das Problem war (if (tmpStartTime < tmpIfBefore ). Kann ich mir die Schaltzeiten an eine Variable ausgeben? Oder über in einem Script anzeigen lassen?
Dann wäre es besser zu loggen. Mit CUxD Highlight habe ich leider noch keine Erfahrung.

Mir wird auf jeden Fall schon einmal die Variabel "lange_Schlafen" richtig angezeigt...Morgen muss ich z.B. früh raus :cry:

Ist wirklich ein schönes Projekt, macht Spaß....

Wie wird eigentlich der Sonnenstand oder Tageslicht mit in die Berechnungen herangezogen?

Ich habe zur Zeit nur eine Lichtsteuerung und da läuft doch eigentlich alles über Festwerte und eine Zufallszahl, oder? Und die einzigen Werte für das Sonnenlicht, finde ich hier:

Code: Alles auswählen

if (LogLevel >= 2)
{
   tmpStd = SA_Buergerlich.Hour();
   tmpMin = SA_Buergerlich.Minute();
   tmpSek = SA_Buergerlich.Second();
   tmpTwilight = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;
   logtext = logtext # "Sonnenaufgang Bürgerlich: " # tmpTwilight # " - " # SA_Buergerlich.Format("%H:%M:%S") # " _nl_ ";

   tmpStd = SA_Indoor.Hour();
   tmpMin = SA_Indoor.Minute();
   tmpSek = SA_Indoor.Second();
   tmpTwilight = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;
   logtext = logtext # "Sonnenaufgang Indoor: " # tmpTwilight # " - " # SA_Indoor.Format("%H:%M:%S") # " _nl_ ";

   tmpStd = SU_Indoor.Hour();
   tmpMin = SU_Indoor.Minute();
   tmpSek = SU_Indoor.Second();
   tmpTwilight = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;
   logtext = logtext # "Sonnenuntergang Indoor: " # tmpTwilight # " - " # SU_Indoor.Format("%H:%M:%S") # " _nl_ ";
   
   tmpStd = SU_Buergerlich.Hour();
   tmpMin = SU_Buergerlich.Minute();
   tmpSek = SU_Buergerlich.Second();
   tmpTwilight = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;
   logtext = logtext # "Sonnenuntergang Bürgerlich: " # tmpTwilight # " - " # SU_Buergerlich.Format("%H:%M:%S") # " _nl_ ";
}

Ich denke für eine Integration der Werte in Lichschaltung müssten die Werte auch öfter aktualisiert werden. Oder habe ich was übersehen?
Ich würde gerne Teile des Programms auch nutzen um mir es etwas gemütlicher zu machen. z.B. Lampe an auch wenn ich da bin und es langsam zu dunkel wird. Falls nach 5 Minuten eine Lampe nicht reicht, 2. Lampe an..... Habe mir jetzt auch einen Bewegungsmelder zugelegt und wollte sonst hier die Helligkeitswerte abgreifen....

Watt ein Spaß...

Benutzeravatar
splunge
Beiträge: 65
Registriert: 10.04.2013, 22:43

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von splunge » 08.09.2015, 16:56

Blackeye hat geschrieben:Wie wird eigentlich der Sonnenstand oder Tageslicht mit in die Berechnungen herangezogen?
Je nachdem was du in deinem CalcActionTimes als Basis nimmst. Das kann ein fixer Zeitpunkt sein oder die Sonnenauf- bzw. untergangszeit.
Beispiel:

Code: Alles auswählen

! *************************************************************
! Aktion 2 - EG Rollläden hoch
! WT: um SA_Buergerlich - 10min, frühestens um 07:00, spätestens um 07:45, + Zufall(20min)
! WE: um SA_Buergerlich - 20min, frühestens um 07:15, spätestens um 08:30, + Zufall(40min)
! *************************************************************
actAktion = "2";
tmpStd = SA_Buergerlich.Hour();
tmpMin = SA_Buergerlich.Minute();
tmpSek = SA_Buergerlich.Second();
tmpStartTime = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;

if (freierTag == false)
{
	tmpStartTime = tmpStartTime - (10 * 60);
	
	tmpStd = 7;
	tmpMin = 0;
	tmpSek = 0;
	tmpLowerLimit = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;
	
	tmpStd = 7;
	tmpMin = 45;
	tmpSek = 0;
	tmpUpperLimit = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;
}
else
{
	tmpStartTime = tmpStartTime - (20 * 60);
	
	tmpStd = 7;
	tmpMin = 15;
	tmpSek = 0;
	tmpLowerLimit = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;
	
	tmpStd = 8;
	tmpMin = 30;
	tmpSek = 0;
	tmpUpperLimit = (tmpStd * 3600) + (tmpMin * 60) + tmpSek;	
}
if (tmpStartTime < tmpLowerLimit)
{
	tmpStartTime = tmpLowerLimit;
}
else
{
	if (tmpStartTime > tmpUpperLimit)
	{
		tmpStartTime = tmpUpperLimit;
	}
}

if (freierTag == false)
{
	tmpStartTime = tmpStartTime + ((RAND % 21)*60);
}
else
{
	tmpStartTime = tmpStartTime + ((RAND % 41)*60);
}
Das aktuelle Tageslicht (wetterabhängig) kann nicht berücksichtigt werden (s.u.).
Blackeye hat geschrieben:Ich denke für eine Integration der Werte in Lichschaltung müssten die Werte auch öfter aktualisiert werden. Oder habe ich was übersehen?
Die Sonnenauf- und untergangszeiten in den verschiedenen Varianten (Bürgerlich, Indoor, Astronomisch etc.) werden täglich auf Basis von mathematischen Modellen mit dem Twilight-Skript berechnet.
Da sich die Zeiten für den Sonnenauf- und Untergang statisch sind und sich nicht über den Tag ändern, reicht das einmalige Berechnen pro Tag.

Anders sieht es mit dem Wetterabhängigen Sonnenauf- bzw. untergang aus. Der kann sich im Laufe des Tages je nach Wetterlage durchaus ändern. Deshalb aktualisiert das Twilight-Skript diesen Wert unter Umständen mehrmals am Tag. Und genau aus dem Grund funktioniert YAWN momentan nicht mit den wetterabhängigen SA/SU Zeiten. Denn YAWN berechnet bereits am Morgen die Schaltzeiten für den ganzen Tag.
Blackeye hat geschrieben:Ich würde gerne Teile des Programms auch nutzen um mir es etwas gemütlicher zu machen. z.B. Lampe an auch wenn ich da bin und es langsam zu dunkel wird. Falls nach 5 Minuten eine Lampe nicht reicht, 2. Lampe an..... Habe mir jetzt auch einen Bewegungsmelder zugelegt und wollte sonst hier die Helligkeitswerte abgreifen....
Wie gesagt, dynamische Effekte wie das Wetter werden von YAWN momentan nicht berücksichtig. Ich glaube, dafür wäre ein Helligkeitssensor tatsächlich besser geeignet.

Gruß
Splunge

ak1
Beiträge: 77
Registriert: 29.08.2013, 11:46

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von ak1 » 27.03.2016, 21:50

Hallo zusammen,

seit Anfang März habe ich Schwierigkeiten mit YAWN. Mir ist erst die letzten Tage aufgefallen, dass nicht mehr alle meine Aktionen in die Aktionsliste eingefügt werden. Tatsächlich fehlen einige, z.B. zum Ausschalten von Lichtern.

Ausschnitt aus dem Log vom letzten Donnerstag:

Code: Alles auswählen

05:45:01: Berechne Aktionszeiten...
05:45:01: Sonnenaufgang Bürgerlich: 21215 - 05:53:35
05:45:01: Sonnenaufgang Indoor: 24299 - 06:44:59
05:45:01: Sonnenuntergang Indoor: 66879 - 18:34:39
05:45:01: Sonnenuntergang Bürgerlich: 69963 - 19:26:03
05:45:01: Zufallszahl für den Vormittag: 46328
05:45:01: Zufallszahl für den Nachmittag: 3913
05:45:01: Aktionszeiten: 22020,22620,66699,66699,66699,70740,74940,75120,76020,79200,79740
05:45:01: Aktionenliste: 0,1,5,6,8,9,12,11,7,10,13
Aktionen 1-4 sind Vormittagsaktionen. 3 und 4 hätten Lichter ausschalten sollen, die mit 0,1,2 (2 fehlt auch) angeschaltet wurden.

Letztes Mal vollständig in Ordnung war es am 04.03.:

Code: Alles auswählen

05:45:00: Berechne Aktionszeiten...
05:45:00: Sonnenaufgang Bürgerlich: 23909 - 06:38:29
05:45:00: Sonnenaufgang Indoor: 27008 - 07:30:08
05:45:00: Sonnenuntergang Indoor: 64835 - 18:00:35
05:45:00: Sonnenuntergang Bürgerlich: 67935 - 18:52:15
05:45:00: Zufallszahl für den Vormittag: 44874
05:45:00: Zufallszahl für den Nachmittag: 12698
05:45:00: Aktionszeiten: 21900,22500,25328,25500,26108,65075,65075,65075,70800,75000,75840,76740,79800,82140
05:45:00: Aktionenliste: 0,1,3,2,4,5,6,8,9,12,11,7,13,10
Wo könnte das Problem liegen? Ich kann mir folgende Dinge vorstellen:
1. Irgendein Update, was ich zu dem Zeitpunkt gemacht habe. CCU Firmware, CUxD, ...
2. Die Trigger der betroffenen Aktionen lösen bei bestimmten Sonnenaufgangszeiten nicht aus. Hierzu muss ich mir noch Gedanken machen. Ich habe das damals etwas unbedarft gemacht. Liegt vielleicht hier der Fehler?

Aktion 3 ist beispielsweise so konfiguriert (hier nur die Kommentare):

Code: Alles auswählen

! *************************************************************
! Aktion 3 - Licht Küche aus
! WT: um SA_Indoor - 10min, wenn später als 07:30, + Zufall(20min)
! WE: um SA_Indoor - 20min, wenn später als 07:45, + Zufall(20min)
! *************************************************************
Danke für Hinweise!

Benutzeravatar
splunge
Beiträge: 65
Registriert: 10.04.2013, 22:43

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von splunge » 28.03.2016, 11:42

ak1 hat geschrieben:Hallo zusammen,
Aktion 3 ist beispielsweise so konfiguriert (hier nur die Kommentare):

Code: Alles auswählen

! *************************************************************
! Aktion 3 - Licht Küche aus
! WT: um SA_Indoor - 10min, wenn später als 07:30, + Zufall(20min)
! WE: um SA_Indoor - 20min, wenn später als 07:45, + Zufall(20min)
! *************************************************************
Hallo ak1,

könntest du den Code dazu bitte mal posten. Ich verstehe die Kommentare nämlich so:
WENN SA_Indoor - 10 min später als 7:30, DANN Licht Küche aus bei SA_Indoor - 10 min + Zufall(20min).

Seit dem 04.03 kann es gut sein, dass SA_Indoor - 10min VOR 7:30 liegt und deine Abfrage nicht mehr zutrifft und somit die Aktion 3 gar nicht ausgeführt wird.
Je nachdem wie deine Abfrage aussieht...

Gruß
Splunge

ak1
Beiträge: 77
Registriert: 29.08.2013, 11:46

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von ak1 » 28.03.2016, 18:53

Hallo Splunge,

ich hatte es ja schon vermutet und Du hast natürlich Recht. Die Bedingungen für die betroffenen Aktionen passen einfach nicht bzw. sie werden bei derzeitigem Sonnenaufgang nicht mehr ausgelöst. Ich habe gestern noch Veränderungen vorgenommen und dann getestet. Ist auch nicht so clever von mir gewesen, das Ausschalten der betroffenen Leuchten so zu konfigurieren. Bei dem derzeitigen Sonnenaufgang werden sie zwar eingeschaltet, aber nicht mehr ausgeschaltet.

Ich muss mir die Möglichkeiten des Skriptes nochmal genau anschauen.

Hast Du Tipps dazu bzw. "Best Practice"-Empfehlung über Dein ursprüngliches "CalcActionTimes"-Skript hinaus?

Danke und Gruß
ak1

Benutzeravatar
splunge
Beiträge: 65
Registriert: 10.04.2013, 22:43

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von splunge » 04.04.2016, 13:40

Hallo ak1,

Sorry, dass ich mich jetzt erst wieder melde.

Das "CalcActionTimes"-Skript dient dazu, die Schaltzeiten für jeden Tag zu bestimmen. Das Ergebnis ist eine Liste mit Aktionen und deren Zeitstempel.

In meinem Beispiel ist die Berechnung abhängig von diversen Bedingungen, dem aktuellen Sonnenauf- und untergang sowie einer Zufallskomponente. Im Prinzip die programmiertechnische Umsetzungen der Überlegungen, die ich vorab gemacht habe und in meinem Fall mit Excel versucht habe zu dokumentieren, um mir einen Überblick zu verschaffen.

Je weniger Bedingungen und Einschränkungen man hat, desto trivialer ist die Programmierung der If-Abfragen etc.

Eine Rund-um-Glücklich Anleitung gibt es in dem Sinne also nicht. Mach dir eine vernünftige Planung und leite daraus die Programmierung ab :)

Gruß
Splunge

ak1
Beiträge: 77
Registriert: 29.08.2013, 11:46

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von ak1 » 16.09.2017, 21:19

Hallo!

Seit geraumer Zeit funktioniert das Mailen des Logfiles bei mir nicht mehr.
Ich denke, es liegt an der Authentifizierung am SMTP-Server im Zusammenhang mit der Verschlüsselung. In meinem Fall GMX oder Web.de.
Meldung beim manuellen Aufruf des TCL-Scripts:

> FIREMAIL Error: 530: Must issue a STARTTLS command first
> while executing

Hat jemand eine Idee, wie ich in diesem Script die Verschlüsselung aktiviere?

Gruß
ak1

Benutzeravatar
splunge
Beiträge: 65
Registriert: 10.04.2013, 22:43

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von splunge » 16.09.2017, 22:27

Hallo ak1,

ich hatte vor einiger Zeit auch Probleme mit dem Mail Skript bekommen. Ich glaube es unterstützt keine verschlüsselte Verbindung, die von vielen Mailservern inzwischen erzwungen wird.

Als Alternative nutze ich jetzt das Email AddOn von Jens Maus für die CCU:
https://github.com/jens-maus/hm_email

Die Konfiguration sieht bei mir wie folgt aus:
Bild
Als Email ID kann auch etwas anderes als "06" verwendet werden.

Und die TCL-Konfiguration:
Bild
Wobei ich glaube, dass die vorletzten beiden Zeilen mit "file" am Anfang entfallen können. Kann den Nutzen im Moment jedenfalls nicht nachvollziehen...
Der Code dazu, mit den beiden überflüssigen Zeilen auskommentiert:

Code: Alles auswählen

load tclrega.so

proc getDayOfYear {timestamp} {
  set dayofyear [string trimleft [clock format $timestamp -format "%j"] "0"]
  return [expr int($dayofyear)]
}

set CurrDayOfYear [getDayOfYear [clock seconds]]

# file delete /tmp/sendout/YAWN.log
# file copy /tmp/YAWN.$CurrDayOfYear.log /tmp/sendout/YAWN.log

# set v1 $CurrDayOfYear
Im CCU-Programm "YAWN_Mail_Logfile" muss das Skript dann noch von

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/bin/tclsh /usr/local/addons/TCL/MailLogfile.tcl YAWN 1");
in

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/etc/config/addons/email/email 06");
geändert werden. Falls du eine andere Email ID als "06" verwendet hast, must du es entsprechend im Skript anpassen.

Ich hoffe ich habe nichts vergessen und die Beschreibung ist ausreichend genug.

Viel Erfolg!

Gruß
Splunge
Zuletzt geändert von splunge am 22.09.2017, 18:13, insgesamt 1-mal geändert.

ak1
Beiträge: 77
Registriert: 29.08.2013, 11:46

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von ak1 » 16.09.2017, 23:03

Hallo Splunge,

besten Dank! Ich werde dies in den nächsten Tagen ausprobieren. Das E-Mail Addon habe ich sowieso schon in Gebrauch.

VG
ak1

Xel66
Beiträge: 14164
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: YAWN – Yet Another anWesenheitssimulatioN

Beitrag von Xel66 » 17.09.2017, 09:56

splunge hat geschrieben:Wobei ich glaube, dass die vorletzten beiden Zeilen mit "file" am Anfang entfallen können. Kann den Nutzen im Moment jedenfalls nicht nachvollziehen...
Ohne jetzt den ganzen Thread, bzw. das Projekt nachvollzogen zu haben, vermute ich mal, dass er Ersteller der Ursprungsversion mit dem vorherigen Kopieren der Logdatei einen parallelen Lesezugriff durch das Mailscript und einen Schreibzugriff zum Loggen eines gleichzeitig auftretenden Ereignisses verhindert wollte. Somit wird zuerst das temporäre Logfile gelöscht und das aktuelle durch das OS kopiert, welches so was vermutlich handlen kann. Das macht aber auch nur Sinn, wenn für den Versand dann am Ende auf die Kopie zugegriffen und diese versendet wird. Du greifst aber auf die aktuelle Logdatei zu.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „Projektvorstellungen“