Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

sct
Beiträge: 139
Registriert: 02.03.2016, 15:12
Hat sich bedankt: 1 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von sct » 14.11.2022, 17:17

shartelt hat geschrieben:
14.11.2022, 17:11
wie weit biste denn bereits mit der Dokumentation gekommen, die Dir bereits ans Herz gelegt wurde?
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.

Benutzeravatar
shartelt
Beiträge: 7421
Registriert: 14.01.2015, 14:59
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 524 Mal
Danksagung erhalten: 753 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von shartelt » 14.11.2022, 17:24

Du musst mich nicht vollzitieren wenn Du direkt auf mich antwortest….

aber ich meinte:
MichaelN hat geschrieben:
13.11.2022, 22:33
Schau dir den Thread zur WebUI Logik an.
und:
Xel66 hat geschrieben:
13.11.2022, 22:06
Das kann man am besten im WebUI-Handbuch oder auch im Einsteigerthread.

sct
Beiträge: 139
Registriert: 02.03.2016, 15:12
Hat sich bedankt: 1 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von sct » 14.11.2022, 17:30

Schon klar. Du meinst diesen Thread: viewtopic.php?f=31&t=4251


sct
Beiträge: 139
Registriert: 02.03.2016, 15:12
Hat sich bedankt: 1 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von sct » 14.11.2022, 17:52

Leute, das verstehe ich nicht. Das ist zu viel. Ich würde dann mal auf meinen Use-Case zurück kommen:

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.
Eventuell ist ja jemand bereit das kurze Programm hier bereit zu stellen. Ich habe aber auch Verständnis wenn keiner Lust dazu hat.

Also bis dann
SCT

Gluehwurm
Beiträge: 12434
Registriert: 19.03.2014, 00:37
System: in Planung
Hat sich bedankt: 105 Mal
Danksagung erhalten: 380 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von Gluehwurm » 14.11.2022, 20:57

sct hat geschrieben:
14.11.2022, 17:52
auf meinen Use-Case zurück kommen
Hast Du denn mal selber angefangen? Deine Schreiberei dauert doch schon viel länger wie das einfache zusammenklicken ... 8)

Programm 1 -> Neu -> Namen vergeben ... Aktion starten
sct hat geschrieben:
14.11.2022, 17:52
das letzte Ventil zugegangen ist
WENN
Ventilöffnung1=0 -> Änderung
UND
Ventilöffnung2=0 -> Änderung
...3
DANN
sct hat geschrieben:
14.11.2022, 17:07
soll eine Aktion getriggert werden
Aktion starten -> keine Ahnung, was Du haben willst.

----------
Programm 2 -> Neu -> Namen vergeben ... Aktion stoppen

WENN
sct hat geschrieben:
14.11.2022, 17:52
Geht das erste Ventil wieder auf
Ventilöffnung1 > 0 -> Änderung
ODER
Ventilöffnung2 > 0 -> Änderung
...3
DANN
sct hat geschrieben:
14.11.2022, 17:52
so soll die Aktion wieder zurück genommen werden
Aktion stoppen -> keine Ahnung, was Du haben willst.


Gruß
Bruno

sct
Beiträge: 139
Registriert: 02.03.2016, 15:12
Hat sich bedankt: 1 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von sct » 14.11.2022, 22:08

Na klar habe ich schon angefangen. Meinen Programmvkrschlag habe ich ja schon zweimal gepostet aber hier gerne nochmal ein drittes Mal:

Code: Alles auswählen

Wenn
Heizkörperthermostat-1 "geschlossen" "bei Änderung auslösen" 
AND
Heizkörperthermostat-2 "geschlossen" "bei Änderung auslösen"

Dann 
...
Sonst
...
Aber hier wurde ja mehrfach kolportiert dass das so nicht funktionieren wird. Besser weiß ich es nicht. Die Literatur ist mir zu schwierig zu verstehen und viel zu viel.

Aber deine Lösung basiert auf zwei verschiedene Programme. Das liest sich auch sehr plausibel. Danke dafür.

Ciao
sct

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von Xel66 » 14.11.2022, 22:57

sct hat geschrieben:
14.11.2022, 22:08
Meinen Programmvkrschlag habe ich ja schon zweimal gepostet aber hier gerne nochmal ein drittes Mal:
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. 
Das ist aber so nicht ersichtlich. Du setzt ein SONST ein.

Und btw. die Links in meiner Signatur führen Dich auf die angeführten Dokumente (Handbuch, Einsteigerthread), die m.E. einsteigertauglich sind.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
shartelt
Beiträge: 7421
Registriert: 14.01.2015, 14:59
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 524 Mal
Danksagung erhalten: 753 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von shartelt » 15.11.2022, 08:55

und falls Du den Eiinsteigerthread auch wenigstens mal angeklickt hättest, wüsstest Du, dass Nacherzählungen nicht wirklich hilfreich sind sondern wir gerne im Forum hochgeladenen (auch dafür gibts ne bebilderte Anleitung) screenshots der Programme benötigen…

sct
Beiträge: 139
Registriert: 02.03.2016, 15:12
Hat sich bedankt: 1 Mal

Re: Unterschied: Bei Aktualisierung bzw. Änderung auslösen?

Beitrag von sct » 15.11.2022, 10:20

Xel66 hat geschrieben:
14.11.2022, 22:57
Dieser "Vorschlag" ist aber nicht identisch mit Deinen Anforderungen. .....
Das ist aber so nicht ersichtlich. Du setzt ein SONST ein.
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.
Xel66 hat geschrieben:
14.11.2022, 22:57
Und btw. die Links in meiner Signatur führen Dich auf die angeführten Dokumente (Handbuch, Einsteigerthread), die m.E. einsteigertauglich sind.
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.
Beim zweiten Klick auf deiner Signatur wird immerhin unser Thema behandelt, aber ich verstehe das trotzdem nicht. Vor allem nicht wann in Programmen wo nur "bei Änderung auslösen" benutzt wird, der SONST-Zweig ausgeführt wird. Auch zieht sich das Ganze über 18 Seiten mit mehr als 170 weiteren Beiträgen. Das ist alles viel zu viel.
Der letzte Klick verweist dann auf das WebUI Handbuch. Hier ist unser Thema im Kapitel 18.2.1.1 bechrieben, aber es tut mir Leid, für mich leider ebenfalls unverständlich. Hier nochmal zum nachlesen:

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.
Puuuuh, da schwirrt einem der Kopp.

Also am Wochenende mache ich da mal weiter und versuche es mit dem Programmvorschlag von @Gluehwurm. Danke dafür.

Ciao
sct

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“