Homematic Script Tageszeit berechnen

Homematic kennt leider keine Tageszeit als Variable oder Astrofunktion. In diesem Beitrag zeige ich euch ein kleines Script, mit dem ihr die Tageszeit berechnen und in eine Systemvariable schreiben lassen könnt.
Anschließend kann die Variable in Programmen verwendet (z.B. in der Dämmerung Licht auf 10% dimmen,..) werden.

Los geht’s!

  • Variable anlegen
  • Quicktipp: Variable anlegen

    • Name: Tageszeit
      Typ: Werteliste
      Werte: Nacht; frühmorgens; Morgengauen; Vormittag; Mittag; Nachmittag; Dämmerung; Abend;
  • Programm anlegen
  • Quicktipp: Programm anlegen

    • Bedingung: Wenn… Zeitsteuerung, Zeitspannung ganztägig, Serienmuster Zeitintervall alle 5 Minuten

    • Aktivität: Dann… Script einfügen
    • ! Tageszeiten berechnen
      ! www.homematic-guru.de
      ! Tageszeiten
      ! Tagesbeginn - 2 <04.00 Nacht
      ! Tagesbeginn - 2 <04.00 Tagesbeginn - 1        frühmorgens
      ! Tagesbeginn - 1        Tagesbeginn            Morgengrauen
      ! Tagesbeginn            Mittag - 1             Vormittag
      ! Mittag - 1             Mittag + 1             Mittag
      ! Mittag + 1             Tagesende              Nachmittag
      ! Tagesende              Tagesende + 1          Dämmerung
      ! Tagesende + 1          Tagesende + 2 >2200    Abend
      ! Tagesende + 2 >2200                           Nacht
      
      real c_zeit = 
        (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();
      real c_tagesbeginn = 
        (0.01 * system.SunriseTime("%M").ToInteger()) + system.SunriseTime("%H").ToInteger();
      real c_tagesende =  
        (0.01 * system.SunsetTime("%M").ToInteger()) + system.SunsetTime("%H").ToInteger();
      real c_mittag = 0.5 * (c_tagesbeginn + c_tagesende);
      
      integer v_tageszeit = 0; ! Nacht
      
      if ((c_zeit < c_tagesende + 2) || (c_zeit < 22.00)) {
        v_tageszeit = 7; ! Abend
      }
      
      if (c_zeit < c_tagesende + 1) {
        v_tageszeit = 6; ! Abenddaemmerung
      }
      
      if (c_zeit < c_tagesende) {
        v_tageszeit = 5; ! Nachmittag
      }
      
      if (c_zeit < c_mittag + 1) {
        v_tageszeit = 4; ! Mittag
      }
      
      if (c_zeit < c_mittag - 1) {
        v_tageszeit = 3; ! Vormittag
      }
      
      if (c_zeit < c_tagesbeginn) {
        v_tageszeit = 2; ! Morgengrauen
      }
      
      if (c_zeit < c_tagesbeginn - 1) {
        v_tageszeit = 1; ! fruemorgens;
      }
      
      if ((c_zeit < c_tagesbeginn - 2) && (c_zeit < 04.00)) {
        v_tageszeit = 0; ! Nacht
      }
      
      object s_tageszeit = dom.GetObject("Tageszeit");
      if (s_tageszeit.Value() != v_tageszeit) {
        s_tageszeit.State(v_tageszeit);
      }
      
      
      

    Fertig!

    Verwendete Hardware

    Ich empfehle solche Programme als „Systemintern“ zu markieren. So wird es in der Programmliste versteckt und trägt zur Übersichtlichkeit bei.


    Warning: preg_match(): Compilation failed: invalid range in character class at offset 11 in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 526

    Warning: preg_match(): Compilation failed: invalid range in character class at offset 11 in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 526

    Warning: preg_match(): Compilation failed: invalid range in character class at offset 11 in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 526

    Fatal error: Uncaught Exception: Template 'templates/form/web/widgets/#type.html' not found ! in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php:723 Stack trace: #0 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php(454): WYSIJA_help_render_engine->_loadTemplate('templates/form/...') #1 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php(169): WYSIJA_help_render_engine->_parse('\n{include file=...') #2 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/form_engine.php(756): WYSIJA_help_render_engine->render(Array, 'templates/form/...') #3 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/form_engine.php(638): WYSIJA_help_form_engine->render_web_body() #4 /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/views/front/widget_nl.php(160): WY in /homepages/33/d683611508/htdocs/app683611566/wp-content/plugins/wysija-newsletters/helpers/render_engine.php on line 723