NEWS
Viele Sensoren überwachen
-
Hallo,
ich habe eine Reihe von Fenstersensoren, die ich überwachen möchte.
Prinzipiell ist das ja eine ODER-Schaltung. Nur der entsprechende Logik-Baustein erfasst ja immer nur 2 Sensoren. Mit "externe Eingänge" kann man das zwar etwas optimieren, aber trotzdem...
Muss ich da jetzt das sooft verschachteln, bis ich alle erfasst habe. Also "oder" drunter "unter-oder" usw.? Das sieht ja äußerst unübersichtlich aus.
Ich habe zwar schon mit Listen experimentiert, aber nicht zu Stande gebracht.
Gibt es da eine clevere Lösung? -
Im Moment ist das genau so wie DU schreibst, könnte aber bald ne Änderung kommen, da es bei den Funktionen für Blockly sehr oft gewünscht wird.
Also abwarten oder im entsprechenden Thread auch noch mal wünschen -
@docadams sagte:
Ich habe zwar schon mit Listen experimentiert,
Prinzip mit 3 Fenstern:
Die Reihenfolge in der Liste vals muss mit der Reihenfolge in der Liste IDs übereinstimmen.
-
Vielen Dank.
Da war ich ja eigentlich schon in der richtigen Richtung, aber das hätte ich nie so hinbekommen. -
Die Funktion check_offen() kann auch so aussehen (nur einmal aktualisiere)
-
Hallo, die Hitze macht es möglich, dass ich mich endlich wieder einmal meinem Hobby widmen kann
Ich habe es zum Laufen bekommen und denke auch, dass ich die Logik verstanden habe. (bin ansonsten kein Programmierer). Es wird eine Art Matrix erzeugt und in der Schleife darin wird permanent nachgeschaut, ob in der Spalte vals (ist nur eine Name, aber wofür steht der eigentlich?) irgendwann mal false steht. Würde es das System entlasten, wenn ich dies nur alle 1...3 Sekunden abfrage, also ein Timeout einfüge)
Für die Listen IDs und vals habe ich als Objekt-ID den Wert contact genommen, ist das richtig so?
Aber beim Wie haperts noch etwas.
Die Zeile "in der Liste vals setze das pos ein Wert" Verstehe ich nicht ganz. Es wird nachgeschaut, in welcher Zeile erstmals der Wert wahr nicht vorkommt. Soweit OK.Warum ich ratlos nachhake hat folgenden Grund.
Das Programm reagiert korrekt, wenn es läuft und erst dann ein Kontakt geöffnet wird.
Ich versuche aber einen Weg zu finden, dass es bereits bei Programmstart überprüft, ob bereits ein Kontakt geöffnet ist.
Praktisches Beispiel: Ich gehe aus dem Haus, aktiviere das Wachprogramm und es ist noch ein Fenster offen. Das bekommt das Programm aber nicht mit. Es reagiert erst, wenn sich ein Status ändert. -
@docadams sagte:
dass es bereits bei Programmstart überprüft, ob bereits ein Kontakt geöffnet ist.
Das macht der Aufruf der Funktion check_offen über dem Trigger.
-
Hm, habe ich mir auch gedacht, macht er aber nicht.
Ich möchte das Programm über einen Datenpunkt "Ueberwachung" bedienen und habe es entsprechend in einen Trigger und Logikbaustein Ueberwachung eingebunden. Ansonsten habe ich mich im Wesentlichen eigentlich an euer Beispiel gehalten.
Aber auch wenn ich das umgehe, macht er es nicht bei Programmstart.Darf ich mal mein Programm hochladen? vieleSensoren1
-
Nur so als Anregung für deine Liste:
-
@iomountain
ich habe den RegExp-Baustein nicht gefunden und kenne auch den Befehl nicht. Deshalb habe ich Wikipedia konsultiert. Meinst du die Wildcard, also das Sternchen?
Ich möchte aber nicht alle Kontakte auf gleiche Art überprüfen.
Ich muss erst mal das eine Problem lösen, dass er mir zu Programmstart nicht schon mal alle Kontakte überprüft, sondern erst nach einem Zustandswechsel sich meldet. -
@docadams
unter System ganz unten die Bausteine, brauchst aber auch die aktuelle Java Version.
Mehr dazu unter wunschliste-blockly-elemente. -
@docadams sagte:
dass er mir zu Programmstart nicht schon mal alle Kontakte überprüft, sondern erst nach einem Zustandswechsel sich meldet.
Versuche es mal damit
-
Funktioniert leider auch nicht. Es reagiert zwar jetzt auf den Statuswechsel offen --> geschlossen, aber das wäre kein Problem, ich könnte ja statt des contact-Wertes den is open-Wert nehmen. Aber beim Programmstart wird noch nicht auf ein false reagiert.
-
@docadams sagte:
Aber beim Programmstart wird noch nicht auf ein false reagiert.
Wie soll die Reaktion aussehen ?
-
Jetzt in der Aufbau- und Bastelphase geht ein Licht an, später soll das Haustelefon klingeln, eine Telegramnachricht verschickt werden und eine Sirene heulen. Naja......
Ein Datenpunkt "Alarm ausgelöst" soll wahr werden.Es funktioniert jetzt schon, wenn das Programm bereits läuft und dann ein Fenster geöffnet wird. Alles bestens. Ich vermute deshalb, weil ein Zustandswechsel von wahr auf falsch erfolgt
Aber wenn das Programm gestartet wird, und das Fenster ist bereits offen, dann passiert nichts. Ich vermute, weil kein Zustandswechsel erfolgt, sondern der Zustand falsch bereits vorhanden ist. Darum vorhin die Frage, dass ich noch nicht begriffen habe , wie es funktioniert.
-
@docadams sagte:
weil ein Zustandswechsel von wahr auf falsch erfolgt
Bei einem Zustandswechsel von falsch auf wahr wird der Datenpunkt "Alarm ausgelöst" wahr.
Beim Programmstart wird die Funktion fenster_offen aufgerufen, in der geprüft wird, ob mind. 1 Fenster offen ist. Falls ein Fenster offen ist und "Sicherheit.Ueberwachung" wahr ist, wird "Alarm ausgelöst" auf wahr gesetzt.