Ich habe diese Doku: https://www.stall.biz/project/tutorial- ... ebui-logik
Diese habe ich schon mehrfach hoch und runter. Bis auf das Thema mit dem 'events management' und den roten Punkten meine ich das soweit verstanden zu haben.
Moderator: Co-Administratoren
Ich habe diese Doku: https://www.stall.biz/project/tutorial- ... ebui-logik
und:
Code: Alles auswählen
Ich möchte in meinem Haus die Stelllung aller Heizungsventile der Heizkörperthermostate überwachen.
Wenn das letzte Ventil zugegangen ist, dann soll eine Aktion getriggert werden.
Geht das erste Ventil wieder auf, so soll die Aktion wieder zurück genommen werden. Wie muß das Programm dazu aussehen? Annahme: 3 Ventile.
Hast Du denn mal selber angefangen? Deine Schreiberei dauert doch schon viel länger wie das einfache zusammenklicken ...
WENN
Aktion starten -> keine Ahnung, was Du haben willst.
Ventilöffnung1 > 0 -> Änderung
Aktion stoppen -> keine Ahnung, was Du haben willst.
Code: Alles auswählen
Wenn
Heizkörperthermostat-1 "geschlossen" "bei Änderung auslösen"
AND
Heizkörperthermostat-2 "geschlossen" "bei Änderung auslösen"
Dann
...
Sonst
...
Dieser "Vorschlag" ist aber nicht identisch mit Deinen Anforderungen. Du schreibst, dass Du möchtest:
Code: Alles auswählen
Geht das erste Ventil wieder auf, so soll die Aktion wieder zurück genommen werden.
Da habe ich dann einen Fehler in meinem Programmvorschlag. Ich habe ja geschrieben dass ich keine Ahnung habe. Ich weiß ja nicht was ich falsch gemacht habe. Am Ende soll ein Programm heraus kommen was genau das macht was ich verbal beschrieben habe.
Das empfinde ich leider gar nicht so. Der erste Klick auf deiner Signatur führt mich auf den "Einsteigerthread". Allein der erste Beitrag umfasst einen recht komplexen Text mit sehr vielen Punkten, den ersten Schritten. Danach folgen weitere 4 Seiten mit insgesamt 40 Beiträgen. Der erste Thread beschäftigt sich nicht explizit mit unserem Thema welches wir hier gerade erläutern.
Code: Alles auswählen
18.2.1.1 Grundsätzliches zur Programmerstellung
Ein einfaches Programm besteht aus einer oder mehreren Bedingungen, die im Feld „Bedingung: Wenn...“ definiert sind, und einer oder mehreren Aktivitäten, die in den Feldern „Aktivität: Dann...“ und „Aktivität: Sonst...“ festgelegt sind.
Programme können durch verschiedene Ereignisse (Trigger) gestartet werden. Sobald ein Programm durch ein Ereignis gestartet wurde, werden die Bedingungen des Programms von oben beginnend geprüft und die Dann-Aktivitäten des ersten erfüllten Bedingungs-Blocks ausgeführt. Wenn ein Block erfüllt ist, werden eventuell folgende Bedingungen nicht mehr geprüft und somit deren Dann-Aktivitäten auch nicht ausgeführt.
Folgende Ereignisse sind Trigger für ein Programm:
• Tastendrücke (auf Fernbedienungen)
• Änderungen des logischen Zustands einer Bedingungszeile („Auslösen auf Änderung“)
• Aktualisierung eines Sensorwertes oder Aktorzustands („Auslösen auf Aktualisierung“)
• Eintreten von definierten Zeitpunkten oder der Zeitbereichswechsel von definierten Zeiträumen („Auslösen zu Zeitpunkten“).
Zusätzlich werden alle aktiven Programme beim Start oder Neustart der Zentrale ausgeführt (getriggert). Die Trigger-Ereignisse sind komplett losgelöst von den logischen Abfrage-Bedingungen der Programme zu betrachten und sind nicht selbst Bestandteil der Bedingung. Dies bedeutet,
dass z. B. die Bedingung „Wenn: Schaltaktor eingeschaltet, Auslösen auf Änderung“ das Programm sowohl beim Einschalten, als auch beim Ausschalten triggert, die Bedingung aber während der gesamtem Zeit, in der der Aktor eingeschaltet ist, erfüllt ist. Würde das Programm also nach dem Einschalten des Aktors also durch ein anderes Ereignis nochmals getriggert, wäre diese Bedingung also erfüllt (weil der Aktor eingeschaltet ist). Das Ereignis „Änderung“ ist selbst also nicht Teil der logischen Abfrage, sondern dient lediglich als ein Auslöser, um die Prüfung und Abarbeitung des gesamten Programms zu starten.
Prinzipiell ist der Ablauf wie folgt:
1. Sobald das Programm durch ein Ereignis getriggert wird und das Programm mit „aktiv“ markiert ist, prüft die Zentrale, ob das Bedingungsfeld („Bedingung: Wenn...“) erfüllt ist, d. h. ob die aufgeführten Bedingungen in Verbindung mit deren logischer Verknüpfung (UND oder/und ODER) erfüllt sind. Sind die Bedingungen erfüllt, so nimmt das Bedingungsfeld den Zustand WAHR an, ansonsten besitzt das Feld den logischen Zustand FALSCH.
Sind im Bedingungsfeld keine Bedingungen festgelegt, hat das Programm zunächst den Wert FALSCH. Die Bedingung wird dann nur durch manuelle Bedienung (siehe 19.5 Status und Bedienung – Programme) auf WAHR gesetzt (für den Augenblick der Bedienung).
2. Nimmt das Bedingungsfeld den Zustand WAHR an, wird automatisch sofort das Aktivitätsfeld „Aktivität: Dann...“, d. h. alle darin enthaltenen Aktionen, ausgeführt und die in den weiteren Aktivitätsfeldern festgelegten Aktionen (bzw. definierten weiteren Bedingungen) werden ignoriert.
3. Nimmt das Bedingungsfeld („Bedingung: Wenn...“) den Zustand FALSCH an, ist der weitere Ablauf von der Auswahl im Feld „Aktivität: Sonst...“ abhängig:
◦ Ist in der Auswahlliste der Eintrag „Sonst“ gewählt, wird automatisch sofort das Aktivitätsfeld „Aktivität: Sonst...“, d. h. alle darin enthaltenen Aktionen, ausgeführt und die in den übrigen Aktivitätsfeldern festgelegten Aktionen werden ignoriert.
◦ Ist in der Auswahlliste der Eintrag „Sonst Wenn“ gewählt, so wird dieses Feld automatisch zu einem weiteren Bedingungsfeld mit der Bezeichnung „Bedingung: Sonst Wenn...“, das automatisch wieder zugehörige Aktivitätsfelder (zugehöriges „Aktivität: Dann...“ und zugehöriges „Aktivität: Sonst...“ Feld) erzeugt. Die in diesem Bedingungsfeld „Sonst, wenn...“ definierten Bedingungen werden dann, im Prinzip genauso wie unter 1. beschrieben, geprüft. Je nach Ergebnis der Prüfung (WAHR oder FALSCH) verzweigt das Programm dann wiederum in die zugehörigen (zu diesem Bedingungsfeld gehörenden) Aktivitätsfelder (wie in 2. bzw. 3. beschrieben).
Der Ablauf des Programmes folgt somit der mathematisch logischen Form:
• Wenn das Feld „Bedingungen: Wenn...“ = WAHR ist, dann alle Aktivitäten im Feld „Aktivitäten: Dann...“ ausführen.
• Wenn das Feld „Bedingungen: Wenn...“ = FALSCH ist, dann
◦ alle Aktivitäten im Feld „Aktivitäten: Sonst...“ ausführen (Eintrag „Sonst...“ der Auswahlliste ausgewählt). bzw.
◦ alle Bedingungen im Feld „Aktivitäten: Sonst Wenn...“ prüfen (Eintrag „Sonst...“ der Auswahlliste ausgewählt):
Wenn das Feld „Bedingungen: Sonst Wenn...“ = WAHR ist, dann alle Aktivitäten im Feld „Aktivitäten: Dann...“ ausführen.
Wenn das Feld „Bedingungen: Sonst Wenn...“ = FALSCH ist, dann
a. alle Aktivitäten im Feld „Aktivitäten: Sonst...“ ausführen (Eintrag „Sonst...“ der Auswahlliste ausgewählt), bzw.
b. alle Bedingungen im Feld „Aktivitäten: Sonst Wenn...“ prüfen (Eintrag „Sonst Wenn...“ der Auswahlliste ausgewählt)
So lassen sich neben einfachen Programmen, die nur eine übersichtliche „Wenn -> Dann -> Sonst-Verknüpfung“ besitzen, auch verschachtelte Programmabläufe mit Fallunterscheidungen nach dem „if-then-else if-Prinzip“, wie sie auch in verschiedenen Programmiersprachen
üblich sind, erstellen.