Ankündigung

Einklappen
Keine Ankündigung bisher.

Universelle Zeitsteuerung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Universelle Zeitsteuerung

    THEMA HIER IST ÜBERHOLT. LÖSUNG UNTER FOLGENDEN LINK:
    https://knx-user-forum.de/forum/playground/xxapi/1005017-zsu-zeitschaltuhr-für-xxapi²-download

    HANS - APRIL 2018
    --------------------------------------



    Zeitsteuerung ist ein lang diskutiertes Thema.

    Eine Haussteuerung befaßt sich mit zeit- und ereignisgesteuert en Zuständen und die automatisiert unterstützte Reaktion auf diese.

    Das Thema "Zeitsteuerung" ist bei xxAPI2 noch offen. Aber auch die von GIRA angebotene Lösung entspricht nicht den heutigen Anforderungen.
    Zeitsteuerung gehört aber zu den elementaren Grundfunktionen einer Hausautomatisierungslösung und ist daher wichtig.

    Einfache Aufgaben werden bei den heute zur Verfügung gestellten Lösungen nur mit relativ hohen Programmieraufwand gelöst. Logik-Bausteine werden sehr komplex und sind auf unterschiedliche Anwenderanforderungen nicht vorbereitet (siehe Feiertagsbaustein bzw. Zeitschaltuhren, die im Downloadbereich zur Verfügung stehen).

    Aus meiner Sicht stelle ich mir einen Logikbaustein mit einen universellen Eingang und Ausgang mit einer generischen Datenstruktur (zB XML) vor.
    Weiters mit den entsprechenden komfortablen Logikbausteinen zur Bearbeitung dieser generischen Struktur.

    Die Highlights wären:
    - im wesentlichen ein Eingang und ein Ausgang
    - Daten sind änderbar, erweiterbar und löschbar, aber auch von extern bespielbar
    - folgende Ausgänge sind schaltbar (Jahrestage, Feiertage, Zeiträume und Zeiten)
    - daraus folgt, dass auch die Eingänge entsprechend definiert werden können

    Beispiel für Feiertag (vereinfacht) bzw. Jahrestag --> yt bzw. yt_age.
    Eingabe:
    yt.Feiertag:: name.("Neujahr") date.(1.1.)o
    yt.Feiertag:: name.("Ostern") date.EASTER
    yt.Feiertag:: name.("Ostermontag") date.EASTER+1DAY
    yt_age.Geburtstag:: name.("Peter") birthdate.(1.11.1970)
    Ausgabe Feld: yt.Feiertag mit Inhalt "Ostern" oder yt_age.Geburtstag mit Inhalt "Peter (46 J)"

    Vordefinierte und berechnete Felder könnte man in Blockbuchstaben definieren.
    zum Beispiel Wochentage, Ostern, Sonnenaufgang, Jahreszeiten, etc,, siehe in Beispielen.

    Beispiel Zeiten, Zeitschaltuhr --> timer.
    Eingabe:
    timer.Bewässerung:: time_interval.(07:00,07:15) (period.Sommer and not period.Urlaub)
    timer.Bewässerung:: time_interval.(17:00,17:15) period.Sommer
    timer.Osterdienstagstreffen:: time_interval.(12:00,15:00) date.EASTER+2days
    timer.Nachtzeit:: time_interval.(time.SUNRISE,time.SUNSET+1DAY)
    timer.on_01:: time_interval.(01:00,) #nur EIN
    timer.off_02:: time_interval.(,02:00:00) #nur AUS
    Ausgabe:
    binäres Feld: timer.Bewässerung, timer.Osterdienstagstreffen, timer.Nachtzeit, timer.on_01

    Beispiel Zeiträume --> period.
    Eingabe:
    period.Urlaub:: date_interval.(1.6.2017,14.6.2017)
    period.Urlaub:: date_interval.(21.10.2016,22.10.2016)
    period.Sommer:: date_interval.(date.SOMMER,date.HERBST-1DAY)
    period.Wochenende:: date_interval.(date.SAT,date.SUN)
    Ausgabe:
    binäres Feld period.Urlaub, period.Sommer -- ist im definierten Zeitraum "EIN" (oder Verknüpfung - wenn mehrere vordefinierte Zeiträume gleichen Namens

    Dieser Ansatz wäre mit den entsprechenden Logikbaustein realisierbar. Innen "komplex" aber außen "einfach".

    Die Eingaben könnten extern beschickt werden bzw. mit einer Art "Command Line Editor" mit grafischer Unterstützung der vordefinierten Syntax der "Eingaben" realisierbar sein. Siehe zB GCLI https://github.com/joewalker/gcli/bl.../docs/index.md basierend auf ACE.

    Die XML-Ausgaben kōnnten mit den passenden Logikbaustein wieder auf KOs umgesetzt werden.
    Eigentlich gar nicht so aufwendig (für den Nutzer dieses Logikbausteins).

    Was haltet Ihr von einer solchen Idee?

    Hans
    Zuletzt geändert von TirochH; 20.04.2018, 07:54.
    Hans

    #2
    Zitat von TirochH Beitrag anzeigen
    Zeitsteuerung ist ein lang diskutiertes Thema.

    Eine Haussteuerung befaßt sich mit zeit- und ereignisgesteuerten Zuständen und die automatisiert unterstützte Reaktion auf diese.

    Das Thema "Zeitsteuerung" ist bei xxAPI2 noch offen. Aber auch die von GIRA angebotene Lösung entspricht nicht den heutigen Anforderungen.
    Zeitsteuerung gehört aber zu den elementaren Grundfunktionen einer Hausautomatisierungslösung und ist daher wichtig.

    Einfache Aufgaben werden bei den heute zur Verfügung gestellten Lösungen nur mit relativ hohen Programmieraufwand gelöst. Logik-Bausteine werden sehr komplex und sind auf unterschiedliche Anwenderanforderungen nicht vorbereitet (siehe Feiertagsbaustein bzw. Zeitschaltuhren, die im Downloadbereich zur Verfügung stehen).
    ......
    Was haltet Ihr von einer solchen Idee?

    Hans
    Viel Antworten habe ich nicht bekommen.

    Ich versuche Euch aber auf andere Weise auf mehr Interesse zu stoßen und stelle Euch kurz meine eigene xxAPI2-basierende Lösung vor.

    Ich habe alle meine alten - auf GIRA basierten - ZSU durch die neue Lösung vollständig ersetzt. Damit kann ich meine Bedürfnisse vollständig durch xxAPI2 abdecken.

    Ich würde die Lösung auch allen anbieten, ist aber doch noch einiger Aufwand dies herauszulösen.

    Einige Schlagworte:
    • basiert auf den Logikbaustein 12050, von Weckmann Siegfried. Dieser Baustein würde total überarbeitet. Die Grundlogik ist aber noch vorhanden, aber ohne Feiertagslogik. Die Logik basiert auf "Zeiträume" (das sind Zeiten in einen von-bis Zeitraum) und nicht auf Zeitpunkte wie in der Standard Gira-Lösung.
      Dieser Ansatz gefällt mir.
    • Für die Feiertage wurde der Baustein 16760 ausgewählt. Diesen habe ich in einer identischen Version für die österreichischen Verhältnisse adaptiert. Wie Nationalfeiertag, Landesfeiertage. Aber auch die Namen der Feiertagsbezeichnungen auf österreichischen Verhältnisse angepasst.
      Der Autor dieses Baustein hat einige "advanced" Features von Python wie "Dictionary" verwendet, Gefallen mir sehr.
    • Für die Sonnenaufgangs- und Untergangszeiten wurde der Baustein 9043 von Darom genommen.
    • Die Schalt-Daten werden basierend auf XML je ZSU gespeichert. Dazu wurde mangels Verfügbarkeit und Fehlern in den Standardbausteinen eine Reihe von individuellen Logikbausteinen entwickelt.
      Bin auf den Geschmack gekommen und habe für diese Lösung schon mehr als 20 Logik-Bausteine entwickelt.
    • Die Lösung kann - außer bei komplexen Anforderungen - die meisten Standardanforderungen "locker" abdecken.
    • Eine neue ZSU ist - wenn meine Lösung integriert ist - in 5 Minuten erstellt.
    Kurz einige Bilder, bei meiner voll im Produktionsbetrieb laufenden Lösung

    IMG_1972.jpg

    Eine ZSU mit mehreren Schaltzeiten.


    IMG_1974.jpg

    mit Sonnenaufgang und Untergang


    IMG_1971.jpg

    Urlaubskalender, mit 2 Zeiträumen, integriert .

    Bitte um Kommentar.

    Hans
    Hans

    Kommentar


      #3
      Finde ich klasse, aktuell löse ich das auch nur sehr rudimentär mit Vergleichern auf Stunde, Minute Monat und Tag, um zeitgesteuert zu schalten. Deine Lösung ist da viel weiter. Ich habe immer gehofft, dass das noch was kommt zur xxAPI2. Aber deine Lösung sieht gerade mit den Zeiträumen (Gartenbewässerung) viel flexibler aus.

      Wird es eine Möglichkeit geben, dass du das anderen bereit stellst? Oder ist das nicht vorgesehen?

      Kommentar


        #4
        Zitat von knxhans Beitrag anzeigen
        Wird es eine Möglichkeit geben, dass du das anderen bereit stellst? Oder ist das nicht vorgesehen?
        Könnte ich mir schon vorstellen. Weiß noch nicht genau, wie man es herauslöst.

        Bis jetzt gab es - ausser Dir -- keine Reaktion.
        Hab eigentlich mehr Interesse erwartet.

        Hans
        Zuletzt geändert von TirochH; 11.10.2016, 11:10.
        Hans

        Kommentar


          #5
          Ich glaube jeder hat inzwischen irgendwie sein "Notlösung" gefunden. Aber es ist schon chicer, wenn man das auch mal so in der Visu ändern könnte und nicht immer den HS neu programmieren muß bei Änderungen. WAF wäre dann auch wieder deutlich größer...

          Kommentar


            #6
            Hallo Hans,

            super arbeit.

            Ich hatte da auch lange drauf gewartet und habe zwischenzeitlich aufgegeben und habe wie knxhans schreibt workarounds benutzt.
            xxapi² habe ich bei 2 Objekten eingesetzt, weil unvollständig habe ich mich davon verabschiedet und bei neuen Dingen auch Gira HS.

            Hartwig

            Gruß Hartwig

            Kommentar


              #7
              Hi,

              hätte auch großes Interresse an der Zeitschaltuhr. Versuch auch schon eine weile an einer Zeitschaltuhr. bekomme es allerdings leider nicht so hn.

              Gruß MArco

              Kommentar


                #8
                Zitat von knxhans Beitrag anzeigen
                Ich glaube jeder hat inzwischen irgendwie sein "Notlösung" gefunden. Aber es ist schon chicer, wenn man das auch mal so in der Visu ändern könnte und nicht immer den HS neu programmieren muß bei Änderungen. WAF wäre dann auch wieder deutlich größer...
                Zitat von hartwigm Beitrag anzeigen
                Hallo Hans,

                super arbeit.

                Ich hatte da auch lange drauf gewartet und habe zwischenzeitlich aufgegeben und habe wie knxhans schreibt workarounds benutzt.
                xxapi² habe ich bei 2 Objekten eingesetzt, weil unvollständig habe ich mich davon verabschiedet und bei neuen Dingen auch Gira HS.

                Hartwig
                Zitat von Duethorn Marco Beitrag anzeigen
                Hi,

                hätte auch großes Interresse an der Zeitschaltuhr. Versuch auch schon eine weile an einer Zeitschaltuhr. bekomme es allerdings leider nicht so hn.

                Gruß MArco
                Bin gerade dabei, die Lösung aus meiner eigenen Lösung rauszuziehen.

                Würde mich freuen, auch einmal was für das Forum zur Verfügung stellen zu können, das auch gebraucht werden kann,

                Dauert noch ein bißchen, hab dazu 30 Logikbausteine entwickelt, die ich erst einmal ins Forum raufladen muß,

                Bin noch dabei den Logikbaustein "ZSU" sehr resourensparend "umzuschreiben". Das heißt, daß er nicht jede Sekunde aufgerufen wird, sondern im Zeitspeicher bis zum nächsten Schaltzeitpunkt wartet. Sollte die Optimallösung sein.

                Die Lösung - ist für meine Anforderungen - besser als die GIRA-Standardlösung, Gira ist flexibler mit vielen unterschiedlichen Schaltvorgängen pro ZSU.
                Meine Lösung ist eher für wenige Schaltvorgänge pro ZSU designed. Dafür in der eigentlichen Funktionalität smarter und einfacher.
                Und sie läuft unter xxAPI2.
                Die derzeitige Lösung (mit 16 ZSU) lauft auf dem HS3 (trotz sekündlichen Aufruf) überraschend stabil, mit keinerlei Performanceproblemen.

                Hans
                Zuletzt geändert von TirochH; 19.10.2016, 10:22.
                Hans

                Kommentar


                  #9

                  letzter Stand des Layouts.

                  IMG_0016.jpg

                  Hans
                  Zuletzt geändert von TirochH; 19.10.2016, 10:47.
                  Hans

                  Kommentar


                    #10
                    Perfekt freu mich schon drauf

                    Kommentar


                      #11
                      Respekt - coole Lösung

                      Kommentar


                        #12
                        Hallo Hans,

                        finde dein Lösungsansatz sehr gut. Ich denke das du nicht all zu viel Rückmeldung hast, liegt einfach daran, dass nicht gerade viele in dem xxapi playground unterwegs sind. Ich sehe dich mit dem Thema auch eher im "normalen" Forum. Der Logikansatz ist ja auch nicht xxapi abhängig, oder? Wäre also eher als feature zu sehen ;-)

                        Ich bleibe auf jeden Fall dran und hoffe du findetst eine Lösung alles so raus zu operieren das es klappt!


                        Beste Grüße
                        Hiele
                        Gruß Hiele
                        ______________________________________________
                        EIB Stuff:
                        Gira Homeserver V2 / Gira 15" Touch-Panel / Info-Display2 / Wiregate / Wetterstation

                        Kommentar


                          #13
                          Hallo Hans,
                          meine Notlösung: "altes" xxAPI1-Projekt in den HS überspielen - UZSU anpassen - dann wieder aktuelles xxAPI2-Projekt überspielen - fertig ...
                          Super Lösung, nicht wahr?
                          Im Ernst: xxAPI2 braucht eine Lösung für die Zeitschaltuhren, wenn es eine Zukunft haben soll. Nils hat hier ein super Projekt hochgezogen - Du warst und bist da ja auch von Anfang an sehr intensiv mit dabeigewesen, wenn man da in den Beiträgen die Diskussionen verfolgt hat ... Der eine oder andere - ich gehöre dazu - hat oft nicht verstanden, was ihr da diskutiert habt ...
                          Ich gehe mal davon aus, dass Du mit Nils in Kontakt bist und es mit dem direkten Zugriff (Javascript / xxAPI2) in die UZSU-Innereien des HS einfach nicht klappen wird.
                          Ich gebe gerne zu, mir wäre so eine Lösung (Gira UZSU per Javascript ansprechen) irgendwie lieber gewesen - vor allem, wenn man nicht mit 30 extra Logikbausteinen hantieren muss. Andererseits hat Deine Lösung auch Vorteile gegenüber Gira Standard - hast Du oben ja selbst ausgeführt.

                          Also: ich fände es auch ganz toll, wenn Du Deine Lösung zur Verfügung stellst!!
                          Es wäre keine (!) zweitbeste Lösung - sondern einfach ein anderer super Ansatz.
                          Und Dein Ansatz würde auch Nils Einsatz in Sachen xxAPI2 massiv unterstützen, denn - wie gesagt - ohne Schaltuhren wäre xxAPI2 nicht fertig.

                          Großer Respekt und Danke und viele Grüße
                          Tom

                          Kommentar


                            #14
                            Zitat von maxxmobile Beitrag anzeigen
                            Respekt - coole Lösung
                            Zitat von windy75 Beitrag anzeigen
                            Hallo Hans,
                            Tom
                            Zitat von Duethorn Marco Beitrag anzeigen
                            Perfekt freu mich schon drauf
                            Danke für das Feedback.

                            Läuft jetzt ganz gut.

                            Der Code ist fertig.

                            Die ursprüngliche Code des Bausteins hat jede Sekunde den Aufruf wiederholt . Das ist 3600 mal pro Stunde und 86400 mal pro Tag. Bei 12 Schaltuhren mehr als 1 Mio. mal pro Tag. Meine neue Lösung hat pro Tag genau 3 Aufrufe, 1 x zum einschalten, 1 x zum ausschalten, einmal zum Tageswechsel, für erweiterte Schaltlogiken, wie Feiertag, Urlaub, etc. Habe den Eingangsparameter "Wiederholung nach x Sekunden" entfernt.
                            Bin mir nicht sicher, ob die standardisierte Lösung von Gira das unterstützt.
                            Meine Lösung berechnet auch die richtigen Schaltzeiten beim Wechsel von Sommer- auf Winterzeit
                            Die im Gira-Standardpaket enthaltende Lösung über "Sonnenstand", kann in der Sommerzeit das Datum nicht richtig ausgeben. Läuft seit vielen Jahren falsch. Die neue Lösung ist übrigens eine der vielen Extrabausteine und wurde von mir auch zusätzlich entwickelt. Natürlich mit richtiger Zeit auch beim Wechsel von Sommer- auf Winterzeit.
                            Sonnenstand, Feiertage und ZSU können jetzt auch jederzeit auf Knopfdruck in den Debugmode gewechselt werden. Ein beliebiges Datum & Zeit kann eingegeben werden und schon gehen die Module auf "Zeitreise".
                            Ausgetestet sind Sie hiermit auch schon. War in Summe doch einiger Aufwand.
                            Jetzt starte ich mit dem Herauslösen.

                            Freu mich jetzt schon, wenns fertig ist.

                            Hans

                            Übrigens, der -nach meiner Meinung- optimale Einzeiler Python-Code für Homeserver-Anwendungen

                            Code:
                            diff_zu_UTC=(__import__('time').localtime(__import__('time').mktime(__import__('datetime').datetime.now().timetuple())).tm_isdst==1) and int(__import__('time').altzone/-3600.0) or int(__import__('time').timezone/-3600.0)
                            
                            oder einfacher ohne "datetime" (erstes Beipiel soll Weg über "datetime" Funktionen zeigen.
                            
                            diff_zu_UTC=(__import__('time').localtime().tm_isdst==1) and int(__import__('time').altzone/-3600.0) or int(__import__('time').timezone/-3600.0)
                            Zuletzt geändert von TirochH; 26.10.2016, 16:02.
                            Hans

                            Kommentar


                              #15
                              Hallo,

                              ich bin noch nicht sicher wie mir die Uhr helfen wird, den ich habe derzeit noch keine Anwendung. Nichts destro trotz freue ich mich schon auf die Lösung. Respekt

                              Kommentar

                              Lädt...
                              X