Ankündigung

Einklappen
Keine Ankündigung bisher.

Anfänger Tag/Nacht schalten

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

    #16
    Dieser Channel-Trigger ist aber wie gewohnt in den Rules verwendbar? [steht ja im vorletzten beitrag ]
    Ebenso in den items-Dateien?
    OH2 steht auf der Agenda, aber auf der mittelfristigen ...
    Bin mir noch nicht sicher auf welche Kiste ich das packen will. Derzeit läuft OH1.8.3 auf nem cubietruck, hat dort aber ca. 75% cpu-last, obwohl noch gar nicht soo viel gemacht wird. soviele berechnungen gibt es auch noch nicht.,
    Zuletzt geändert von FlyingEaglE; 23.10.2017, 17:00.

    Kommentar


      #17
      Zitat von FlyingEaglE Beitrag anzeigen
      Dieser Channel-Trigger ist aber wie gewohnt in den Rules verwendbar? [steht ja im vorletzten beitrag ]
      Ebenso in den items-Dateien?
      In den .items-Dateien gibt es keine Trigger. Wenn Du meinst, ob Du mit den Event-Triggern Items verbinden kannst, ja, das geht, hat allerdings wenig Sinn, es sei denn, Du möchtest das Item verwenden, um eine Rule zu triggern. Im Gegensatz zu OH1 ist der channel nur im Moment des Triggers ON und unmittelbar danach wieder OFF oder gar NULL.
      OH2 steht auf der Agenda, aber auf der mittelfristigen ...
      Läuft bei mir seit einer gefühlten Ewigkeit parallel im Testbetrieb, aber da mein OH1.8.0 tut, was ich will, ist mein Leidensdruck nicht sonderlich hoch (beide Versionen laufen als VM, das frisst kein Brot...)
      Bin mir noch nicht sicher auf welche Kiste ich das packen will. Derzeit läuft OH1.8.3 auf nem cubietruck, hat dort aber ca. 75% cpu-last, obwohl noch gar nicht soo viel gemacht wird. soviele berechnungen gibt es auch noch nicht.,
      Der Raspberry 3B ist als Plattform recht nett, das einzige echte Gegenargument ist der fehlende SATA-Anschluss. Allerdings braucht es gar keinen großen Durchsatz beim Plattenzugriff, das System kann von SDCard booten und anschließend Readonly darauf zugreifen, Logs und variable Daten kann man auf einem NAS auslagern, schon verliert der wear out seinen Schrecken. Aber wie schon erwähnt, ich habe hier ohnehin einen relativ großen VM-Server laufen, was zwar total übertrieben ist, aber dadurch habe ich alle wichtigen Systeme komplett voneinander getrennt, das Betriebssystem spielt kaum eine Rolle und ich kann jederzeit nach Lust und Laune "mal eben" ein Testsystem hochziehen, wegschmeißen, zurückholen, liegen lassen... Und openHAB macht hier auch eine gute Figur. Solange ich nicht zwingend auf Hardware angewiesen bin, werde ich das wohl so lassen.

      Kommentar


        #18
        Hallo Zusammen, ich zeig euch mal wie ich das bei mir gelöst habe in OpenHab 2.5.7. Da ich auch Anfänger bin hat das 1:1 copy/paste bei mir nicht geklappt, weil unter anderem auch zuvor die things-Datei nicht beschrieben wurde, somit soll das einfach als Hilfestellung für andere dienen.
        Also hier meine Codes:

        1. things-Datei mit folgender config (Astro-Binding muss separat konfiguriert werden):

        Bridge knx:ip:bridge [ type="TUNNEL", ipAddress="XXX.XXX.X.X", portNumber=3671, localIp="XXX.XXX.X.X", readingPause=50, responseTimeout=10, readRetriesLimit=3, autoReconnectPeriod=60, localSourceAddr="X.X.XX" ]

        { Thing device GruppenAdressen "KNX Gruppen Adressen"
        { Type switch-control : TagNacht "TagNacht" [ ga="5/6/0"] }
        }

        2. Items-Datei wie folgt:

        Number SunElevation "Sonnenhöhe [%.1f °]" <sun> (Astro) { channel="astro:sun:homeosition#elevation" }
        Switch es_ist_TAG "TAG [%s]"
        Switch es_ist_NACHT "NACHT [%s]"
        Switch es_ist_DAEMMRIG "DÄMMERUNG [%s]"
        Switch TagNacht "Tag=1 Nacht=0 Umschaltung" {channel="knx:device:bridge:GruppenAdressen:TagNac ht"}

        3. rules-Datei etwas angepasst, da Tag bei mir ON und Nacht OFF ist:

        rule "TagNacht"
        when
        Item SunElevation changed or System started
        then
        if (SunElevation.state < -6) {
        sendCommand(TagNacht, OFF)
        if (es_ist_TAG.state==ON || es_ist_TAG.state==NULL) {
        logInfo("Astro Regeln", "Sonnenstand < -6 Grad - Nacht")
        sendCommand(es_ist_DAEMMRIG, OFF)
        sendCommand(es_ist_TAG, OFF)
        sendCommand(es_ist_NACHT, ON)
        }
        }
        if (SunElevation.state >= -6 && SunElevation.state <= 0) {
        sendCommand(TagNacht, OFF)
        if (es_ist_TAG.state==ON || es_ist_TAG.state==NULL) {
        logInfo("Astro Regeln", "-6 Grad <= Sonnenstand <= 0 Grad - Dämmerung")
        sendCommand(es_ist_DAEMMRIG, ON)
        sendCommand(es_ist_TAG, OFF)
        sendCommand(es_ist_NACHT, ON)
        }
        }
        if (SunElevation.state > 0) {
        sendCommand(TagNacht, ON)
        if (es_ist_TAG.state==OFF || es_ist_TAG.state==NULL) {
        logInfo("Astro Regeln", "Sonnenstand > 0 Grad - Tag")
        sendCommand(es_ist_DAEMMRIG, OFF)
        sendCommand(es_ist_TAG, ON)
        sendCommand(es_ist_NACHT, OFF)
        }
        }
        end

        Kommentar


          #19
          Bitte mit Code-Tags!
          Tipp: Vor dem Einfügen des Codes in die Code-Tags die Editor-Ansicht auf Quellcode umschalten (der Knopf mit <> drauf), dann bleiben die Einrückungen erhalten.

          Statt vier Items, von denen eines noch dazu das gleiche Verhalten hat wie ein anderes, wäre es wesentlich einfacher, nur ein Item zu verwenden:
          Code:
          String TimeOfDay "Tageszeit [%s]"
          Und eine Rule:
          Code:
          rule "TagNacht"
          when
              System started or
              Item SunElevation changed
          then
              val Number nElevation = if(SunElevation.state instanceof Number) (SunElevation.state as Number).floatValue else 0
              var String soll = "Tag"
              if(nElevation < -6) soll = "Nacht"
              else if(nElevation < 0) soll = "Dämmerung"
              if(state.toString != soll) TimeOfDay.postUpdate(soll)
          end
          Die Idee dahinter: Man verwendet ein String Item, welches die Tageszeit widerspiegelt. Default ist das "Tag". Sollte die Elevation kleiner -6 sein, ist es "Nacht", sollte sie stattdessen kleiner 0 sein (zu diesem Zeitpunkt ist klar, dass der Wert größer oder gleich -6 ist) ist es "Dämmerung". Ist diese Bedingung ebenfalls nicht erfüllt, bleibt nur der Default Wert übrig (der ist ja "Tag")
          Falls der aktuelle Wert des Items abweicht (und nur dann!), wird es aktualisiert. Es gibt keinen Grund, sendCommand zu verwenden, es sei denn, das Item muss über ein Binding seinen Zustand nach außen melden.
          Zuletzt geändert von udo1toni; 05.09.2020, 21:54.

          Kommentar

          Lädt...
          X