Uhrzeit via Tinymatic ändern und an Programm übergeben

Support, Fragen und Diskussionen zur HomeMatic App für Android

Moderator: Co-Administratoren

Antworten
xsio
Beiträge: 9
Registriert: 22.01.2019, 07:01
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von xsio » 18.01.2020, 15:13

Hallo, ich habe hier im Forum nach verschiedenen Kombinationen von Uhrzeit und Programmen gesucht, bin aber nur darauf gestoßen, wie man zu einem Ereignis die Uhrzeit in einer Variable speichert (um diese dann an ein Endgerät zu übertragen).

Momentan steuere ich via tinymatic über den Schnellzugriff meine Standheizung sowie Kaffeemaschine folgendermaßen:
Programme im Viertelstundentakt morgens angelegt und je nach Weckzeit setze ich dann den Haken um das zeitlich passende Programm zu aktivieren.

Komfortabler wäre natürlich, ich hätte eine Variable im Schnellzugriff von tinymatic in der ich zunächst die Uhrzeit (z. B. 0600) abspeichere und diese dann vom Programm "Standheizung" übernommen wird, so dass diese zum nächsten 6Uhr-Zeitpunkt startet.
Noch toller wären natürlich eine Kombination von Variablen, mit denen ich auch noch den Wochentag mit in die Steuerung einfließen lassen könnte. Es passiert mir nämlich regelmäßig, dass ich am WE vergesse das Programm zu deaktivieren und dann sinnlos die Standheizung aktiviert wird.
Nach dem Ablauf einer Zeitspanne deaktivieren sich die Verbraucher wieder und ich erhalte eine Pushover über diesen sicheren Zustand. Besser wäre natürlich dann zusätzlich zum Startzeitpunkt noch eine weiter Variable über die Dauer (z. B. 30 Minuten) mit zu übergeben.

Ist so etwas mit nicht allzugroßem Aufwand zu realisieren?

Karsten0
Beiträge: 66
Registriert: 14.03.2019, 00:51
Hat sich bedankt: 34 Mal
Danksagung erhalten: 3 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von Karsten0 » 18.01.2020, 16:46

Hallo xsio,

da ein Allheilmittel zu liefern ist schwierig.
Vielleicht kann ich Dir aber ein paar Anregungen geben:

1)
Die erste ist es ggf. über einen Kalender zu steuern. Du trägst dort bestimmte Termine ein und die HM reagiert darauf, ohne TinyMatic.

2)
Der Zweite ist den Wochentag mit in die Bedingungen zu nehmen und damit den Sa und So auszuschließen.

3)
Du könntest auch prüfen, ob Du im WLAN eingeloggt bist (siehe meine Signatur) und es nur aktivieren, wenn Du auch zu Hause bist.

4)
Die Vierte wäre so wie ich es mit meiner Weckautomatik mache. Ich stelle über TiniMatic eine Variable ein, wann ich wo den Termin habe und je nach Fahrzeit rechnet mein Weckprogramm zurück und weckt mich mit ansteigendem Licht oder öffnen des Rollos (je nach Sonnenstand) und ansteigendem Radio in der ganzen Wohnung.

Das hab ich so angelegt, dass ich die Zeiten über Variablen übergebe. Ich habe lange suchen müssen, bis ich erkannt habe, dass man 08:15 Uhr mit 8.15 einstellen kann. Beim rückwärts rechnen ist es dann nicht ganz so einfach, aber machbar.

Ein weiterer Trick dabei ist, dass es zusätzlich zur Uhrzeit noch eine Variable zum "scharf schalten" gibt. Diese wird beim Auslösen der Aktionen zurückgesetzt, sodass nicht automatisch am nächsten Tag wieder zu dieser Zeit geweckt wird. Das bedeutet aber, dass Du jeden Abend das Programm über TiniMatic aktivieren und ggf. die Zeit anpassen musst.

So kannst Du im aktuellen Programm die aktuelle Zeit ermitteln:

Code: Alles auswählen

  
  ! aktuelle Zeit
    real tmpA = (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();
Ich mache das zentral alle 5 Minuten und setzen dann alle nötigen Variablen auf die dann andere Programme reagieren.
Bei den anderen Programmen könntest Du dann z.B. die Jahreszeit oder den Wochentag mit einbringen. :-)

Viel Erfolg!
Viele Grüße
Karsten0

CCU3
  • diverser Skriptcode über Variablen
  • TinyMatic auf Android

xsio
Beiträge: 9
Registriert: 22.01.2019, 07:01
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von xsio » 18.01.2020, 20:21

... prima, danke für Deine Erklärung, da habe ich einige Ansätze zum Abarbeiten. Auf den Wochenend-Ausschluss hätte ich tatsächlich selber kommen können.

xsio
Beiträge: 9
Registriert: 22.01.2019, 07:01
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von xsio » 19.01.2020, 12:32

So, ich bin inzwischen weiter gekommen. Sorry für das laienhaften Skripting ...bin froh es überhaupt zum Laufen zu bekommen. Allerdings verunsichert mich der Hinweis im Zeitmodul nur aller 15 Minuten eine Abfrage zu generieren.
Momentan mache ich das minütlich und frag mich, ob das genügt um wirklich sicher jede Minute "zu treffen" (erinnert mich an den Aliasing Effekt) oder ob ich das Zeitraster nicht besser halb so groß wähle um Aliasing auszuschließen?

Zeitsteuerung Periodisch im Minutentakt löst dieses Skript aus (Danke an Karsten0):

Code: Alles auswählen

    var x = (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();
    var f= dom.GetObject("Zeitpunkt"); 
    var y = dom.GetObject("Uhrzeit ein");
    var z = y.Value();
    var z1=f.Value();

if (x == z)
{
f.State(true);
}
Sobald also meine in TinyMatic voreingestellte Zeit "Uhrzeit ein" erreicht ist, wird die Systemvariable "Zeitpunkt" auf "wahr" gesetzt.

Diese Systemzustandsänderung überwacht ein zweites Programm, welches daraufhin die Kaffeemaschine oder die Standheizung einschaltet, die Systemvariable "Zeitpunkt" wieder auf "falsch" setzt und mir eine Pushover sendet.
Weiterhin wird dann das Gerät nach z.B. 45 Minuten wieder ausgeschaltet und eine weitere Pushover erzeugt.

Zusätzlich wird noch die Nebenbedingung "Freigabe" abgefragt, so dass ich die Aktivierung blocken kann.

Im Endeffekt habe ich im Schnellzugriff von TinyMatic für das jeweilige Gerät 2 Zeilen:

1. Freigabe Garät A
2. Uhrzeit Gerät A

Karsten0
Beiträge: 66
Registriert: 14.03.2019, 00:51
Hat sich bedankt: 34 Mal
Danksagung erhalten: 3 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von Karsten0 » 19.01.2020, 13:11

Das sieht doch super aus! :D
Ich würde noch eine Sicherheitsschaltung einbauen, so dass das Abschalten nach 50 Minuten wiederholt wird. Sicher ist sicher.

Ich habe bei mir so etwas auch für alle Verbraucher immer um 11 Uhr hinterlegt. Das wird immer ausgeführt wenn keiner in der Wohnung ist.

Übrigens kannst du auch die Variablen mit sprechenden Namen versehen. Mein Ansatz rührt noch aus der Zeit als die Variablen noch sehr begrenzt waren in ihrer Anzahl.
Das liest sich besser.

Minütlich würde ich das aber nicht abfragen. Das belastet die CPU zu sehr. Reichen denn nicht 5 Minuten im Abstand?
Viele Grüße
Karsten0

CCU3
  • diverser Skriptcode über Variablen
  • TinyMatic auf Android

xsio
Beiträge: 9
Registriert: 22.01.2019, 07:01
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von xsio » 19.01.2020, 20:19

Sicherheiten habe ich einige eingebaut. Ausschaltungen immer mindestens noch ein zweites Mal eine Minute später.
Weiterhin wird der Schaltvorgang in einem eigenen Programm überwacht und eine Pushover erzeugt.
Dann habe ich entkoppelt von den Steuerungsprogrammen nocheinmal welche, die z.B. im Falle der Standheizung die Abschaltpausen aufgrund des Thermostats und auch die Gesamtdauer überwachen.
Zusätzlich ein 22Uhr-Check, bei dem alle kritischen Systeme abgefragt, ggf. abgeschaltet und ein Pushover erzeugt wird.

Aller 5 Minuten bereitet mir ein wenig Kopfzerbrechen denn dann müsste ich die Uhr auf 5 Minuten-Raster stellen und die Abfrage müsste dann auch noch innerhalb dieser Minute landen bzw. ich würde bei kleiner/gleich Operationen landen. Wäre natürlich sinnvoll, wenn diese Abfragen die CPU ans Leistungslimit bringen würden... aber:
Bei der CPU-Belastung bin ich etwas skeptisch... minütlich klingt ersteinmal nach viel, ist aber im Gegensatz zum duty cycle aus meiner Sicht eher unkritisch... wieviele Millisekunden verschwendet die CPU da zum Abgleich ob Zeit1=Zeit2? - > wenige Takte zum Registerladen, UND-Verknüpfen und setzen irgendeines Flags im Falle, dass die Uhrzeit nicht übereinstimmt? Bei wieviel MHz?
Habe mich mit der Architektur der CCU2 noch nicht tiefer befasst aber diese Aufgabe sollte doch hoffentlich nahezu unbemerkt an der CPU vorbei gehen insofern sie nicht ständig volle Register hin und herschieben muss...?

xsio
Beiträge: 9
Registriert: 22.01.2019, 07:01
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von xsio » 19.01.2020, 20:24

Ich finde den Ansatz nur ganz allgemein schlecht, minütlich das Programm zu starten.
Gibt es keine Möglichkeit, die Uhrzeit direkt in das Programm/Zeitmodul zu übernehmen...?

Karsten0
Beiträge: 66
Registriert: 14.03.2019, 00:51
Hat sich bedankt: 34 Mal
Danksagung erhalten: 3 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von Karsten0 » 19.01.2020, 20:35

Wenn Du alle 5 Minuten abfragst, dann frage z.B. auf > 8.15 (Uhr) ab, dann wird der nächste Schaltzyklus es einschalten.
In TinyMatic gibt es auch einen kleinen Bug. Wenn ich 8.15 im Widget einschalte, setzt es immer 8.14. Warum weiß ich nicht.

Ansonsten probiere es aus mit 1 Minute, überwache dann ob die CCU evtl. heiß wird.
Google vielleicht auch mal danach, ob es schlechte Erfahrungen gibt.
Ich traue es mir nicht und bei meiner Anwendung ist es ausreichend.
Was anderes gibt es, meines Wissens, nicht.

Ansonsten alle Achtung! Hast Dir ja ganz schön was zusammen kodiert!
Das macht ja auch Spaß. :)

Ich habe heute meine Sprachsteuerung verfeinert, das mach ich über Tasker.
Viele Grüße
Karsten0

CCU3
  • diverser Skriptcode über Variablen
  • TinyMatic auf Android

xsio
Beiträge: 9
Registriert: 22.01.2019, 07:01
Hat sich bedankt: 2 Mal
Danksagung erhalten: 1 Mal

Re: Uhrzeit via Tinymatic ändern und an Programm übergeben

Beitrag von xsio » 19.01.2020, 21:54

Mit Tasker habe ich auch herumexperimentiert. Aber am Ende zu viele Apps und irgendetwas macht dann hin und wieder nach Updates Probleme. Ideal wäre ja, meine Weckzeit auszulesen und mittels Tasker an TinyMatic und damit an die CCU für die Startzeiten der Geräte zu übertragen.


Mit der Temperatur mache ich mir wegen dieses Programm gar keine Sorgen. Die CCU2 arbeitet wohl mit 454MHz, keine Ahnung wieviel Takte da genau für meine Zeitvergleichaufgabe benötigt werden. Aber selbst wenn es 45 von 454 Millionen möglichen wären, würde diese eine Aufgabe ein Zehnmillionstel der Ressourcen verschwenden, wohlgemerkt bei sekündlicher Abfrage... da ich es minütlich mache gleich nochmal Faktor 60 weniger... da dürfte das Sendemodul ganz sicher viel eher als Wärmequelle in Frage kommen.

Antworten

Zurück zu „TinyMatic“