Antwort
Sep 04, 2017 - 12:22
ich verstehe noch nicht ganz ... ist bei alle Rolladen die Bedingung immer die gleiche (also "Wetterstation.temperature < 50 oder Wetterstation.brightness < 255")?
Dann kann man doch einfach mehrere Befehle eintragen?
Wenn die Bedingung immer unterschiedlich ist, muss man ja unterschiedliche Tasks machen.
Ich habe bisher kein Problem gehabt, wenn ich mehrere Ereignisse gleichzeitig ausgelöst hatte, das ist sicher kein Problem für den Gateway. Eher ein Problem, wenn zu viele Funkbefehle gleichzeitig unterwegs sind - das kann man aber ja ausprobieren.
Ich sehe aber in einer soclehn Konstruktion ein potentielles Problem:
Nehmen wir mal an, das "temperatur < 50" gegeben ist, dann gibt es Rolladen-rauf-Befehl. Nun ist die Frage, wie die Wetterstation den Zustand schickt; jederzeit wieder?
Das würde bedeuten, das man im Sekundentakt Rolladen-runter-Befehle bekommt und das könnte wiederum zu einem Problem werden (Thema "Duty Cycle" bein Geräten mit 868 MHz).
Hat der Rolladen einen Stautus "unten" / "oben"? Wenn nein würde ich auf jeden Fall mit in einer Gateway-String-Systemvariable merken, ob ich den "runter" bzw. "rauf" Befehl schon gegeben habe.
Dann kann man doch einfach mehrere Befehle eintragen?
Wenn die Bedingung immer unterschiedlich ist, muss man ja unterschiedliche Tasks machen.
Ich habe bisher kein Problem gehabt, wenn ich mehrere Ereignisse gleichzeitig ausgelöst hatte, das ist sicher kein Problem für den Gateway. Eher ein Problem, wenn zu viele Funkbefehle gleichzeitig unterwegs sind - das kann man aber ja ausprobieren.
Ich sehe aber in einer soclehn Konstruktion ein potentielles Problem:
Nehmen wir mal an, das "temperatur < 50" gegeben ist, dann gibt es Rolladen-rauf-Befehl. Nun ist die Frage, wie die Wetterstation den Zustand schickt; jederzeit wieder?
Das würde bedeuten, das man im Sekundentakt Rolladen-runter-Befehle bekommt und das könnte wiederum zu einem Problem werden (Thema "Duty Cycle" bein Geräten mit 868 MHz).
Hat der Rolladen einen Stautus "unten" / "oben"? Wenn nein würde ich auf jeden Fall mit in einer Gateway-String-Systemvariable merken, ob ich den "runter" bzw. "rauf" Befehl schon gegeben habe.
Von
Hallo demel42
Bei allen Rollladen muss beschattet werden, da nach Süden ausgerichtet und somit die gleiche SOBALD Bedingung.
Unterschiedlich sind dann die FALLS Bedingungen, da ich jeden Rolllanden seinen Zustand abfrage. Auch müssen die Rollläden nach oben wenn die Fenster Geöffnet werden und Schließen zu verschiedenen Zeiten. Somit wird die SOBALD Abfrage sehr lange (wieviele kann man da verodern?). Ich habe sechs Rollläden, jedes Fenster drei Zuständen, die Abfrage der Wetterstation, dann noch Uhrzeiten fürs Hochfahren und Schließen. Also so ca. 20 - 30 Oder in SOBALD, wenn ich alle Rollläden in einem Blockeditor mache.
Dann kommen noch Abfragen in FALLS und SONST.....
Das wird schon ein mächtiger Block....
Zur Wetterstation, die schickt alle 2 - 3 Minuten eine Aktualisierung. Des weiteren wird bei dem Befehl Rauf oder Runter immer noch der aktuelle Zustand des Rolllandes abgefragt und somit ein Befehl nur abgeschickt wenn notwendig:
Also wenn die Beschattung z.B bei 50% und Rollladen ganz oben 100%, ganz unten 0% ist wird bei der Beschattung gefragt Rollladen > 50%, wenn der Rollladen runter fahren soll > 10% und nach oben < 90%. Somit verhindere ich das die Befehle nur geschickt werden wenn notwendig.
Dies habe ich in der Homematic schon seit Jahren wie oben beschrieben so gemacht und hat gut funktioniert.
So jetzt wäre es schon mal interessant wie groß so ein Block werden darf??? Wer kann da Auskunft geben?
Viele Grüße
Von
ok, wenn SOBALD immer gleich ist, kann man das durchaus in einen Task zusammenfassen. Eine definitve Auskunft, wie gross ein Task werden darf, kenne ich nicht, habe aber schon Beispiele von sehr grossen Tasks gesehen.
Ich nehme an, das die Abfrage und due Steuerungen ja eher immer gleich sind, nur die Schwellwerte sowie die Gerätenamen variabel sind?
Wenn das so ist, würde ich persönlich das eher in einem Script als Schleife realisieren.
Dann wäre der eigentlich Code ja deutlich kompakter (weil nur einmal).
Von
Danke für die Antwort. Nur weis ich nicht wie ich in einer Schleife die diversen Namen der Rollläden, Fenster als Variable deklarieren soll.
Von
da könnte ich vielleicht helfen.
ein ganz simples beispiel (array von objects)
var car = [
{type:"Fiat", model:"500", color:"white"},
{type:"Opel", model:"ASTRA", color:"grey"}
]
for (var i = 0; i < car.length ; i++) {
console.log(car[i].type + ":" + car[i].model);
}
erster schritt wäre es festzulegen, was die variablen werte bei den rolladen sind ( also namen, vielleicht helligkeit etc)
das objekt 'car' hat beliebige member (hier typ, model, color) und kommt im array beliebig häufig vor.
innerhalb der schleife müssten dann die geräteabfragen/ -kommandos aufgerufen werdne, wobei dann zB der gerätenamen im aufruf nicht fix drin steht sondern als variable (car[i].color).
ich habe kein vorstellung, wie das bei dir aussehen soll, aber wenn du die kommandos für eine rollade im block-editor anlegen und posten würdest, hätte ich eine bessere vorstellung und könnte morgen abend ein beispiel skizzieren.
Von
Danke! Werde mal es probieren und Deine Hilfe gerne annehmen!
Neuen Kommentar hinzufügen