OpenHab, Astro Binding, Rules, Jalousien runterfahren, Gruppenweise

  • Hallo Com,

    ich habe es geschafft die ersten Rollos anzulegen und das ganze dann auch erfolgreich per Astro Binding und Rule runterfahren zu lassen. Damit aber nicht alle Rollos gleichzeitig runterfahren sondern ein wenig Zeit versetzt wollte ich fragen wie ich das am besten anstelle. Leider kann man das ja wieder erst morgen Abend testen und schauen ob was passiert.

    So sieht es momentan aus, alle Rollos in dieser Gruppe sind runtergefahren, also alle. Nun sollen die einzelnen Räume getrennt werden, immer um 1 - 2 Minuten versetzt.

    Muss ich weitere Rules erstellen, oder kann ich unter der Astro Rule, einfach mehrere Timer erstellen lassen ?

    oder so


    Oder gibts vllt nen Art Random Binding, was dann Random in einem bestimmten Zeitfenster Rollos ansteuert und den Down Befehl gibt ?

    Grüße,

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

  • Du kannst mehrere Timer in einer Rule nutzen, das ist kein Problem. Für Random könntest du die Java-Bib importieren.

    Mach fürs Testen doch einfach einen Switch und wenn das Ding so läuft wie du magst, stellst du auf Astro um.

    Es gibt mittlerweile übrigens ein Unterforum speziell für Openhab

  • Du kannst mehrere Timer in einer Rule nutzen, das ist kein Problem. Für Random könntest du die Java-Bib importieren.

    Mach fürs Testen doch einfach einen Switch und wenn das Ding so läuft wie du magst, stellst du auf Astro um.

    Es gibt mittlerweile übrigens ein Unterforum speziell für Openhab

    Ist das dann so richtig, was ich als Code gepostet habe ? Mehrere Timer in einem Rule ?


    Für Random könntest du die Java-Bib importieren.

    Oh je, bin ziemlich neu in der Materie, gibt's da Tuts zu wie man das in Verbindung mit Rollos verwenden könnte ?

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

  • Ist das dann so richtig, was ich als Code gepostet habe ? Mehrere Timer in einem Rule ?

    Syntaktisch ist das schon richtig aber da ich nicht genau weiß, was du damit bewirken willst, kann ich nicht sagen ob es so funktioniert wie es soll. :D

    Oh je, bin ziemlich neu in der Materie, gibt's da Tuts zu wie man das in Verbindung mit Rollos verwenden könnte ?

    Eh so spezifisch wahrschenlich nicht. Einfach mal in Google "openhab random" suchen, da gibt's ein paar Beispiele und ist ja egal ob es Lampen, Rollos oder ... sind. Du kannst es ja auf deinen Fall übertragen.

  • startest du sofort mit einem 15min timer....sprich die rule ist sofort im timermodus.

    Indem Fall nicht so gut ? So hatte ich das aus einem Tut übernommen.


    da würde es sich eher anbieten mit offset beim astro zu arbeiten.

    Das mit dem Offset hatte ich auch schon überlegt, ist ja dann eigentlich das selbe Ergebnis wie mit einem Timer ?
    Dann müsste ich halt pro Zimmer ein neues Rule erstellen mit einem anderen Offset Wert.

    @horschte
    Wäre das so richtig ?

    Code
    //AstroBinding
    
    
    astro:sun:home [ geolocation="48.0287,9.2955,100", interval=60 ] {
        Channels:
            Type rangeEvent : set#event [ offset=15 ]
    
    
    //AstroBinding


    Jetzt nimmt er die Zeit vom Sonnenuntergang und gibt dort 15min dazu ?

    Ich brauche aber dennoch für jedes Zimmer einen anderen Wert von der Zeit her ? Hier lass ich dann kleine Timer erstellen mit 1-3 min Unterschied ?

    Das wäre jetzt mein Rule

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

    2 Mal editiert, zuletzt von Kodi_Newcomer (7. April 2019 um 15:49)

  • Das mit dem Offset hatte ich auch schon überlegt, ist ja dann eigentlich das selbe Ergebnis wie mit einem Timer ?

    ist nicht das gleiche. offset ist zeit + offset wert, da läuft kein timer für

    Dann müsste ich halt pro Zimmer ein neues Rule erstellen mit einem anderen Offset Wert.

    nein, nimm einen offset wert für den ersten raum und starte ab da die timer für den zweiten raum.
    ideal wäre aber ab dem zweiten raum dem zu folgen, was dir @TehTux bereits gesagt hat: java.util.Random nutzen.

    Ich brauche aber dennoch für jedes Zimmer einen anderen Wert von der Zeit her ? Hier lass ich dann kleine Timer erstellen mit 1-3 min Unterschied ?

    Das wäre jetzt mein Rule

    es ist nicht wirklich nötig schon beim ersten gerät einen timer zu nutzen oder? das erste item kann doch sofort getriggert werden

  • Könnte ich mehrere Channels erstellen mit unterschiedlichen Offset's.

    Weil sonst hab ich ja den gleichen Offset, wenn ich rise#event nutze.

    Folgendes, Flur, Küche, Terrassentür soll mit dem Sonnenaufgang hochfahren, die anderen aber erst eine halbe später. Jetzt kann ich ja nicht zwei Rules erstellen, mit dem selben rise#event da dieses ja dann z.b. den Offset 30 min drin hätte. Dann sollen die Schlafräume Rollos um 8 Uhr hochfahren. Das könnte ich mit nem normalen Timer machen, da brauch ich kein Astro Event.

    Wie löse ich das am
    besten ?

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

  • Ich nutze openhab zwar noch nicht so intensiv, komme aber aus der Gebäudeautomation und daher mein Vorschlag:

    Kann man nicht einfach boolsche zwischenvariablen generieren (aus, ein) und die bspw. pro Raum oder Gruppierung dann erstellen?
    Die Quelle ist immer der Wert vom Astro Binding und dieses wird dann einfach nur vervielfacht und bei Bedarf mit Zeitverzögerungen versehen.

    Mit diesen Variablen kann man dann einfach weiter arbeiten und damit die Aktoren ansteuern lassen.

    NAS: Gehäuse: Jonsbo G3, Mainboard: MSI B460M PRO, CPU: Intel Pentium G6400, OS: OMV 6

    Client: NVIDIA Shield Pro 2019

  • es geht wie oben schonmal erwähnt mittels  java.util.Random und auch  Math::random.
    @Kodi_Newcomer sollte die lösungsansätze die hier gepostet werden auch nutzen.

    da es offenbar nicht anders geht hier was fertiges.
    in zeile 7 wird wie folgt eine zufallszahl generiert.
    1 + (zahl zwischen 1-10)...macht bspw 9
    diese 9 wird in zeile 9 als minutenanzahl im timer verwendet.
    es wird also jeden tag wenn die rule bei sonnenuntergang triggert eine neue minutenanzahl generiert.
    in zeile 8 wird die zweite zahl generiert und in zeile 12 wird sie verwendet.
    das ganze lässt sich also beliebig erweitern oder abändern.
    man kann die zeitspanne von "10 minuten zeiträmen" in zeile 7 oder 8 erhöhen/verkleinern und bei bedarf weitere zufallszeit variablen erstellen

  • Ok da wäre zwar die Zeit random aber die Reihenfolge der Räume immer gleich.
    Desweiteren habe ich ja dann wieder jede menge Timer die ich wohl so gut wie möglich vermeiden soll ?

    Ich schicke nachher mal noch nen anderen Code den ich habe.

    Vllt könnte mir auch einer sagen wie ich zum testen nen eigenen Trigger erstellen kann den ich beliebig triggern kann und ich die Rule testen kann ?

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

  • die reihenfolge der räume bleibt doch nicht gleich!!!
    es werden zufällig lange timer in meinem beispiel erstellt.
    für jeden raum erstellst du dir da zufallszeitX.
    die sich generierenden zahlen entscheiden wann der raum zugeht.
    da die zufällig sind gehen die räume in unterschiedlicher reihenfolge zu.

    Vllt könnte mir auch einer sagen wie ich zum testen nen eigenen Trigger erstellen kann den ich beliebig triggern kann und ich die Rule testen kann ?

    du erstellst dir nen dummy button.
    in die items datei kommt:
    Switch Dummybutton "Testbutton"
    in die sitemaps kommt
    Switch item=Dummybutton
    und in die rule würde dann so aussehen:

    damit wird die rule (wie in zeile 3 zu sehen ist) immer gestartet wenn der schalter auf ON geht

  • die reihenfolge der räume bleibt doch nicht gleich!!!
    es werden zufällig lange timer in meinem beispiel erstellt.
    für jeden raum erstellst du dir da zufallszeitX.
    die sich generierenden zahlen entscheiden wann der raum zugeht.
    da die zufällig sind gehen die räume in unterschiedlicher reihenfolge zu.

    Ja klar, macht ja Sinn, als ich den ersten Post gelesen habe, hatte stand ich wohl auf dem Schlauch. Hatte hier noch was, damit hatte ich das ein wenig verwechselt.
    Bei deiner Methode, sind innerhalb der 10 min alle Rollos untern, das aber unterschiedlich. Kann aber auch sein, das er zwei Räumen die gleiche Zeit gibt ?

    Hier in der unteren Variante, sind es leider keine Räume sondern aus der Liste Rollos, dort wird sich einer rausgepickt und runtergefahren, dann ein Timer gestellt und der nächste aus der Liste geholt, das bis alle unten sind. Ganz durch blicke ich da nicht und ich weiß nicht wie man das auf eine Gruppenauswahl ändern könnte. Aber mit deiner Variante sollte es zumindest für mich einfacher gehen und vor allem verständlicher.

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

  • Hast du schonmal mit einem Würfel zweimal hintereinander die gleiche Zahl gewürfelt?

    Immer, 6en :)

    Selten aber es kommt schon immer wieder mal vor.
    @horschte könnte man die Timer auch in der Basic UI sichtbar machen ? So rein Info Halber mal zum beobachten ?

    Hier tut sich leider nichts ::

    Bei dir stand es ja so

    Code
    createTimer(now.plusMinutes(zufallszeit1)) [|
                    Bad_Jalousien.sendCommand(DOWN)


    damit hat es nicht geklappt, dann hab ich das nun so geändert, weil es davor mit dem einfachen Binding so klappte.


    Code
    createTimer(now.plusMinutes(zufallszeit3)) 
                    [| sendCommand(Bad_Jalousien, DOWN) ]

    Oder ist die Schreibweise egal, vom SendCommand Befehl ?

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

    2 Mal editiert, zuletzt von Kodi_Newcomer (9. April 2019 um 20:30)

  • könnte man die Timer auch in der Basic UI sichtbar machen ? So rein Info Halber mal zum beobachten ?

    Klar du kannst einfach ein String oder Number Item erstellen und das dann befüllen. Das lässt du dir dann in deiner Sitemap ausgeben.

    damit hat es nicht geklappt, dann hab ich das nun so geändert, weil es davor mit dem einfachen Binding so klappte.

    Du hast auch etwas Chaos mit den Klammern. Das stimmt so nicht! Schau nochmal hier die Syntax, besonders die Klammern an:
    https://www.openhab.org/docs/configura…ons.html#timers

  • Du hast auch etwas Chaos mit den Klammern. Das stimmt so nicht! Schau nochmal hier die Syntax, besonders die Klammern an:
    http://openhab.org/docs/configuration/actions.html#timers

    Hm ich musste noch mal OpenHab neu starten, irgendwie verliert OH oder das Binding, die Verbindung zum Dongle, auf dem Dongle geht alles hoch runter, bei OH reagieren die Rollos nicht. Ich meine erst seitdem ich das things hier drin hab

    Sollte das denn immer so versetzt sein ?


    Code
    createTimer(now.plusMinutes(zufallszeit1)) [|
                    sendCommand(Kueche_Jalousien, DOWN) 
                 ]

    Hatte es halt alles in eine Zeile, zewcks Optik

    Code
    systeminfo:computer:smarthome-zentrale [interval_medium=60]

    Jetzt hab ich's raus und es scheint stabil zu bleiben.


    Klar du kannst einfach ein String oder Number Item erstellen und das dann befüllen. Das lässt du dir dann in deiner Sitemap ausgeben.

    Hättest du mir vllt ein Beispiel dafür, mit was ich das befüllen soll ?

    System Specs ::
    Kodi 20 Nexus, FireTV Cube // Linux Server + Emby // Samsung QN95B

  • Hättest du mir vllt ein Beispiel dafür, mit was ich das befüllen soll ?

    Item:
    String Zufallszahl_Kueche "Timer Küche" <time>

    und in deiner Rule ergänzen:
    Zufallszahl_Kueche.postUpdate(zufallszeit1.toString())

    Sitemap ergänzen:
    Text item=Zufallszahl_Kueche

    (ungetestet)

    Edit//
    Noch eine Anmerkung: Auch bei OpenHab gibt es einen Log wo man bei der Fehlersuche reinschauen kann. ;)

  • Das kommt dann unter jeden SendCommand mit der passenden Zahl bei zufallszeit ? Mit den 4 Klammern am Ende passt ?

    Wo du es hinpackst ist relativ egal. Es muss halt die Zufallszeit schon gesetzt sein und es darf natürlich nicht direkt in den Timer sonst wird es erst angezeigt wenn das Rollo schon zu ist. Ich zähle 3 Klammern am Ende (öffnende und schließende der toString-Funktion und die schließende der postUpdate-Funktion).


    Nochmal zurück zu den Klammern in deinem Timer...

    Du schreibst:

    Code
    createTimer(now.plusMinutes(zufallszeit1)) [|
                    sendCommand(Kueche_Jalousien, DOWN) 
                 ]

    Richtig wäre:

    Code
    createTimer(now.plusMinutes(zufallszeit1), [|
                    sendCommand(Kueche_Jalousien, DOWN) 
                 ])

    Die runde Klammer gehört an das Ende!

    Edit//
    Mir ist gerade aufgefallen, dass da zusätzlich ein Komma fehlt! Ich ergänze es im Code!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!