Ankündigung

Einklappen
Keine Ankündigung bisher.

einfache Zeitsteuerung unter Openhab2

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

    #16
    Mit dem Astrobinding ist das nicht soooo kompliziert.
    Ich fahre meine Rollos bei Dämmerung runter oder spätestens 19:00 Uhr (Kind ins Bett).
    Wektags stumpf 9 Uhr hoch, oder manuell.

    Was mich an dem Kalenderdingens noch etwas stört ist die Eigenart wie man die eingeben muss, da is nullkommanix WAF bei ;-)

    Kommentar


      #17
      Hallo FlyingEagle,

      mich würden die configs interessieren, vorallen wie wertest Du die Zeiten aus, mir kommt da gerade noch eine Aquariumsteuerung in den Sinn. Würdest du die Configs dazu posten.
      Ich bin total perplex wie viele neue Eindrücke ich alleine durch diesen Post bekomme, vielen Dank dafür.
      mfg
      Madmike

      Kommentar


        #18
        Ich nutze aktuell noch OH 1.8.3 ich habe das Konzept der 2er OH noch nicht richtig kapiert.

        Rule
        Code:
        rule "rule_rollo"
        when
            Time cron "0 45 18 ? * MON-FRI" or
            Item IsCivialDusk changed to ON
        then
            Rollo Runter - Code je nach dem was du zum Steuern verwendest
        end
        openhab.cfg (Koordinaten aus Google Earth von deiner Adresse)
        Code:
        ################################# Astro Binding #######################################
        
        astro:latitude=50...
        astro:longitude=8....
        astro:interval=60
        Items
        Code:
        Switch IsCivialDawn        "Zivile Morgen-Dämmerung Ende"    <sun_set>          (gAstro, grp_persistence_mysql)     { astro="planet=sun,    type=civilDawn,        property=end" }
        Switch IsCivialDusk        "Zivile Abend-Dämmerung Ende"     <sun_set>          (gAstro, grp_persistence_mysql)     { astro="planet=sun,    type=civilDusk,        property=end" }
        Das müsste es gewesen sein.

        Kommentar


          #19
          Unter OH2 funktioniert das ganz ähnlich. Allerdings funktioniert der Trigger für die Rule etwas anders. Dazu muss man wissen, dass der Trigger (auch in OH1) eigentlich immer OFF ist, nur im Moment des Triggers wechselt er ganz kurz auf ON. In OH2 gibt es deshalb gar nicht die Möglichkeit, den Trigger auf ein Item zu verbinden. Stattdessen wird die Rule direkt durch den Channel getriggert.

          Es gibt aber noch den Zeitpunkt des Triggers, das ist ein weiterer (unabhängiger!) Channel. Deshalb kommt es gerne zu Konfusionen, weil man die beiden Channel nicht verwechseln darf. In OH1 ist das unsauber gelöst (wie sich das Item verhält, hängt vom Typ des Items ab).

          Die Konfiguration mit OH>= 2.2 ist in der offiziellen Doku aber gut erklärt, inklusive Beispielkonfiguration. Da es Astro als OH2 Binding gibt, können alle Einstellungen optional auch über Paper UI usw. vorgenommen werden - Textdateien haben aber den Charme, dass man sie bequem sichern kann und nicht auf die Webschnittstelle angewiesen ist, um etwas an der Konfiguration zu ändern.
          OH2 speichert seine Einstellungen in (xml?-) Dateien, die man prinzipiell auch bearbeiten kann, aber OH2 liest diese Dateien nicht automatisch zur Laufzeit ein, sondern nur beim Systemstart. Weiterhin schreibt openHAB ohne Rücksicht in diese Dateien rein, wenn man über die Weboberfläche Änderungen vornimmt. das bedeutet also, man muss zwingend zuerst OH2 beenden, dann die Änderungen vornehmen und anschließend OH2 starten. Über die Textkonfiguration bekommt OH2 mit, sobald eine Datei aktualisiert wurde, liest den Inhalt neu ein und aktualisiert die xml-Dateien entsprechend.

          Kommentar


            #20
            Dieses Paper UI mag ich nich ;-)

            Kommentar


              #21
              Das hab ich auch nur erwähnt, weil ja vielleicht der eine oder andere Einsteiger Sorgen hat...

              Kommentar


                #22
                Vielen Dank für Die Infos bringen mich auf jeden Fall weiter
                mfg
                Madmike

                Kommentar


                  #23
                  Hallo zusammen,

                  ich bräuchte nochmal Eure Hilfe.
                  Ich habe einen Wecker nach Anleitung gebaut Klenzel-Anleitung, alles soweit gut. Probleme habe ich mit der Rule
                  die Deko-Lampe soll einfach abschalten, wenn der Timer weckt.
                  Hier meine Ansätze:
                  rules :

                  varTimer timerDeko =null

                  rule"Wecker Deko"
                  when
                  Time cron "0 * * * * ?"
                  then
                  if (Deko_WECKER.state ==ON) {
                  var sollMinute = (Deko_WECKER_M.state as DecimalType).intValue
                  var sollStunde = (Deko_WECKER_H.state as DecimalType).intValue

                  if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay)
                  sendCommand(Switch2, OFF)
                  }
                  }

                  item:


                  SwitchDeko_WECKER"Wecker"<siren>
                  NumberDeko_WECKER_H"Weckzeit Stunde [%s]"<time>
                  NumberDeko_WECKER_M"Weckzeit Minute [%s]"<time>

                  Item weko für die Schalter:


                  SwitchSwitch1"Esszimmer Vitrine"<light> { channel="wemo:socket:Switch1:state" }
                  SwitchSwitch2"Deko"<switch> { channel="wemo:socket:Switch2:state" }

                  Sitemap:

                  Frame label="Deko-Timer"{
                  Switch item=Deko_WECKER mappings=[ON="Wecker an", OFF="Wecker aus"]
                  Setpoint item=Deko_WECKER_H minValue=0 maxValue=23 step=1
                  Setpoint item=Deko_WECKER_M minValue=0 maxValue=59 step=1





                  Sind meine Ansätze für die Rules richtig ?? Oder muss ich diese anderes gestalten ??
                  Danke für Eure Tipps











                  Zuletzt geändert von Madmike; 02.04.2018, 19:10.

                  Kommentar


                    #24
                    Und was ist das Problem? funktioniert die Rule nicht?

                    Kommentar


                      #25
                      Hallo Udo2toni,

                      zwei Fehler zum einen zeigt VS einen Fehler in der Klammersetzung der geschweiften Klammern an, zum anderen wird der Schaltvorgang nicht ausgeführt. Nun weiß ich nicht ob der Fehler bei Var timer timer Deko liegt, da ich keinen Syntax gefunden habe, es an der Klammersetzung liegt oder ich das Wemo Item anders zu schalten ansprechen muss, da ich ja nur quasi eine Ausschaltzeit für die Deko setzen möchte.
                      Danke für Deine Denkanstöße im voraus
                      Madmike

                      Kommentar


                        #26
                        Du hast zwei schließende Klammern...
                        Zitat von Madmike Beitrag anzeigen
                        if (Deko_WECKER.state ==ON) {
                        var sollMinute = (Deko_WECKER_M.state as DecimalType).intValue
                        var sollStunde = (Deko_WECKER_H.state as DecimalType).intValue

                        if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay)
                        sendCommand(Switch2, OFF)
                        }
                        }
                        Ich empfehle Dir, am Ende der zweiten if-Abfrage eine geschweifte (öffnende) Klammer einzutragen...

                        Außerdem ist es einfacher zu lesen, wenn Du die Code-Fences verwendest ([ CODE] und [/CODE ]) (ohne die Lehrzeichen) und die Zeichenfarbe auf schwarz einstellst:
                        Code:
                        if (Deko_WECKER.state ==ON) {
                          var sollMinute = (Deko_WECKER_M.state as DecimalType).intValue
                          var sollStunde = (Deko_WECKER_H.state as DecimalType).intValue
                        
                          if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay) {
                            sendCommand(Switch2, OFF)
                          }
                        }
                        Und noch ein Hinweis: in der Programmierung werden Blöcke gerne eingerückt, d.h. wenn Du mit {} einen Block beschreibst, wird dieser eingerückt. dadurch lässt sich viel einfacher erkennen, was zusammengehört.... (und die Klammerfehler lassen sich schnell erkennen...)

                        LG,
                        Andreas
                        Zuletzt geändert von imhofa; 03.04.2018, 07:23.

                        Kommentar


                          #27
                          Hallo Andreas,

                          danke für Deine Tipps, jetzt sehe ich wieder etwas klarer.
                          Es macht sehr viel Spass immer wieder was dazu zulernen !!
                          mfg
                          Micha

                          Kommentar


                            #28
                            Hallo Andreas,
                            leider hat Dein Vorschlag nicht zum gewünschten Erfolg geführt. Hier nochmal (ich habe gelernt)

                            rule:
                            Code:
                            var Timer timerDeko = null
                            
                            rule "Wecker Deko"
                            
                            when
                                    Time cron "0 * * * * ?"
                                then
                            if (Deko_WECKER.state == ON) {
                                   var sollMinute = (Deko_WECKER_M.state as DecimalType).intValue
                                   var sollStunde = (Deko_WECKER_H.state as DecimalType).intValue
                            
                                   if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay) {
                                              sendCommand(Switch2, OFF)
                                  }
                            }
                            Vielleicht hast du eine andere Idee Die letzte Klammer wird mit dem Fehler mismatched Input <EOF> expecting end angezeigt

                            Kommentar


                              #29
                              Hallo Andreas,
                              ich glaube ich habe den Fehler gefunden, nun schaltet alles einwandfrei. hier nochmal ein Blick auf meine Wecker Rule:

                              Code:
                               var Timer Deko = null
                                 
                                rule "Wecker Deko"
                                    when
                                        Time cron "0 * * * * ?"
                                    then
                                    if (Deko_WECKER.state == ON) {
                                        var sollMinute = (Deko_WECKER_M.state as DecimalType).intValue
                                        var sollStunde = (Deko_WECKER_H.state as DecimalType).intValue
                                 
                                        if (sollMinute == now.getMinuteOfHour && sollStunde == now.getHourOfDay) {
                                             sendCommand(Switch2, OFF)
                                        
                                        }
                                    }
                                end
                              Ich freue mich, das alles so funktioniert und danke für Eure Hilfe.
                              mfg
                              Madmike

                              Kommentar


                                #30
                                Hallo Madmike,

                                Du hast Dein fehlendes "end" selbst gefunden. Ist doch Klasse...
                                Als Tipp hätte ich Dir noch:
                                verwende anstatt
                                Code:
                                sendCommand(Switch2, OFF)
                                lieber
                                Code:
                                Switch2.sendCommand(OFF)
                                Die erste Variante ist die "Action" bei der Du sowohl das Item als auch den Wert übergibst.
                                Die zweite Variante ist die "Methode" (nämlich von Deinem Item), welche den Vorteil hat, dass diese den erwarteten Typ des Wertes kennt und diesen richtig umsetzt, was bei der Action manchmal schief gehen kann....

                                LG,
                                Andreas

                                Kommentar

                                Lädt...
                                X