Ankündigung

Einklappen
Keine Ankündigung bisher.

Status Raumcontroller per verschachtelter if-Anweisung zuweisen

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

    Status Raumcontroller per verschachtelter if-Anweisung zuweisen

    Hallo zusammen,

    ich bin gerade dabei einen kleinen Abwesenheitsassitenten zu schreiben. Ich kenne das Makro von Enertex, wollte aber selbst etwas ausprobieren.

    Der Ablauf soll folgender sein:
    Ich habe einen Schalter im Büro, um den Abwesenheitsassitent zu aktivieren bzw. deaktivieren.
    Wenn ich anwesend bin und der Abwesenheitsassitent AUS ist, sollen jeden morgen um 08 Uhr die Raumcontroller auf den Komfortmodus=1 geschaltet werden. Abends um 22 Uhr sollen die Raumcontroller auf den Nachtmodus=3 geschaltet werden. Falls ich abwesend (Abwesenheitsassistent EIN) bin soll der Raumcontroller den Abwesendstatus=2 annehmen und den ganzen Tag auf dem gleichen eingestellt Wert laufen. Hinter jedem Status ist eine passende Temperatur abgelegt.

    Dazu habe ich mir folgendes überlegt
    [EibPC]
    //Heizung Nachtprogramm aktivieren
    if htime(20,00,00) and ("Abwesenheitsassistent-11/2/1"==AUS) then write ("Schlafen-7/1/1",3) endif

    //Heizung Tagprogramm aktivieren
    if htime(08,00,00) and ("Abwesenheitsassistent-11/2/1"==AUS) then write ("Schlafen-7/1/1",1) endif

    //Heizung auf Abwesenheit stellen
    if ("Abwesenheitsassistent-11/2/1"==EIN) then write ("Schlafen-7/1/1",2) endif

    Ich habe diese umständliche Variante gewählt, da ich mit normalen If/else Anweisungen einen Syntaxfehler bekommen.
    Wie könnte ich das im EibPC "eleganter" lösen?

    Außerdem wäre noch der Fall interssant:
    Ich komme nach Abwesenheit zurück nach Hause, stelle den Abwesenheitsassitent auf AUS. Nun passiert ja frühstens um 08 Uhr morgens oder 20 Uhr abends etwas. Solange läuft die Heizung auf abwesend. Gibt es dort noch eine Möglichkeit das abzufangen, dass die Heizung dann direkt wieder in den Komfort oder Nachtmodus geht?

    Gruß
    Michael

    #2
    Was genau empfindest Du als "nicht elegant"?

    Folgender Code sollte das lösen (wenn ich es richtig verstanden habe)
    Code:
    Nacht= chtime(20,00,00) or !chtime(08,00,00)
    if Nacht and !"Abwesenheitsassistent-11/2/1" then write ("Schlafen-7/1/1",3) endif
    if !Nacht and !"Abwesenheitsassistent-11/2/1" then write ("Schlafen-7/1/1",1) endif
    if "Abwesenheitsassistent-11/2/1" then write ("Schlafen-7/1/1",2) endif
    Zuletzt geändert von enertegus; 05.03.2018, 17:40. Grund: EDIT: OR siehe unten
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Ich dachte die vielen einzelnen Befehle sind "nicht elegeant". Es funktionert ja auch soweit und ich bin von den Möglichkeiten des EibPC sehr begeistert

      Deinen Vorschlag werde ich heute Nachmittag direkt mal testen und schauen, ob ich dann alles zum Laufen bekomme

      Vielen Dank für die Unterrstützung Michael

      Kommentar


        #4
        Ich habe das ganze nun 2 Tage getestet und kann folgendes berichten:

        1. Die Umschaltung zwischen an- und abwesend funktioniert zur jeder Tageszeit ohne Probleme
        2. Die Umschaltung von Tag zu Nacht und anders funktioniert leider nicht. Ich habe deinen Code von oben übernommen. Setze ich per Debugger die Variable "Nacht" auf EIN gelingt mir die Umschaltung. Automatisiert geht es leider nicht. Daher denke ich, dass noch ein kleiner Fehler in der Zeitabfrage ist.

        Zitat von enertegus Beitrag anzeigen
        Nacht= chtime(20,00,00) and !chtime(08,00,00)
        Sollte ich die Variable Nacht noch vorher mit ==AUS deklarieren oder ähnliches?

        Beste Grüße
        Michael

        Kommentar


          #5
          ohne es jetzt ausprobiert zu ahben oder noch mal nachgelesen zu haben. chtime geht doch auf EIN bei erreichen der Zeit und erst um Mitternacht wieder auf AUS.

          Du willst doch aber NACHT von 20 Uhr Abends bis 8 Uhr früh. Den Wechsel über Mitternacht bekommst Du so aber nicht hin. Müsste man evtl. mit zwei Zeiten lösen, also NAcht ist chtime(20,00,00) or chtime (00,00,00) and !chtime(08,00,00)

          Nur so aus dem Bauch, ohne Test
          ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

          Kommentar


            #6
            Kannst Du mal einen Log posten, was der EibPC macht. M.E. dürfte bei Nachtbetrieb um 20 Uhr die GA auf 3 gehen und um 8 Uhr morgens auf 1. So hatte ich das verstanden (?)
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Zitat von enertegus Beitrag anzeigen
              Kannst Du mal einen Log posten
              Mache ich heute Abend direkt mal.

              So wie du es beschreibst, habe ich es auch vor. Das wäre das korrekte Verhalten abends um 20 Uhr den Status auf 3 setzen und jeden Morgen um 08 Uhr auf 1 setzen.

              Kommentar


                #8
                Zitat von Uwe! Beitrag anzeigen
                ohne es jetzt ausprobiert zu ahben oder noch mal nachgelesen zu haben. chtime geht doch auf EIN bei erreichen der Zeit und erst um Mitternacht wieder auf AUS.

                Du willst doch aber NACHT von 20 Uhr Abends bis 8 Uhr früh. Den Wechsel über Mitternacht bekommst Du so aber nicht hin. Müsste man evtl. mit zwei Zeiten lösen, also NAcht ist chtime(20,00,00) or chtime (00,00,00) and !chtime(08,00,00)

                Nur so aus dem Bauch, ohne Test
                chtime(00,00,00) ist immer wahr, daher obsolet.

                NACHT = chtime(20,00,00) or !chtime(08,00,00);

                Kommentar


                  #9
                  Zitat von klaus_kraemer Beitrag anzeigen
                  chtime(00,00,00) ist immer wahr, daher obsolet.
                  da hast Du natürlich auch recht.

                  Aber mit NACHT = chtime(20,00,00) or !chtime(08,00,00); kann es meiner Meinung nach auch nicht funktionieren, oder ich hab grad einen Knick in der Optik.

                  Ach Du hast ja auf "OR" geändert! Ja, logo, das passt! Im beispiel oben war es aber "AND" und das kann nicht passen.
                  Zuletzt geändert von Uwe!; 05.03.2018, 13:45.
                  ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                  Kommentar


                    #10
                    Stimmt, muss OR heißen im Obigen Code. Ich besser das mal aus.
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Zitat von klaus_kraemer Beitrag anzeigen
                      NACHT = chtime(20,00,00) or !chtime(08,00,00);

                      Nun funktioniert alles
                      Danke an alle für die Unterstützung

                      Kommentar

                      Lädt...
                      X