Workflow Beispiele

Ich eröffne hier mal einen Thread für Workflows, wenn jemand von Euch eine Problemstellung mit Hilfe eines SubWorkflows gelöst hat und diesen der Allgemeinheit zur Verfügung stellen möchte, dann bitte gerne hier posten.

Importieren eines SubWorkflows ist mittlerweile direkt im Repository möglich, einfach das Modul auf die Zeichenfläche ziehen und einen Workflow auswählen:

image

Fragen zu einem Workflow bitte immer in einem eigenen Thread stellen :wink:

1 „Gefällt mir“

Abschaltverzögerung

Der Status eines Sensors (Bewegungsmelder oder ähnliches) soll bei Aktivierung eine Beleuchtung ansteuern und bei Deaktivierung verzögert ausschalten.

Eingänge:

  • Sensor Status - Statusvariable (Boolean) eines Sensors, der das Licht ansteuern soll.
  • Nachlaufzeit (Sekunden) - Zeit in Sekunden für die Abschaltverzögerung

Ausgänge:

  • Licht Status - Schaltausgang für die Ansteuerung der Beleuchtung

Workflow:
Abschaltverzögerung_2023-01-31.zip (1,7 KB)

Screenshots:

Bewegungsmelder mit Treppenhausautomat

Einschalten einer Beleuchtung:

  • Aktivierung des Bewegungsmelders
  • Helligkeitssensor unter bestimmten Limit
  • Locked/Sperre des Bewegungsmelders nicht aktiv
  • Letzte Änderung der Sperrvariable ist älter als 10 Sekunden (damit das Licht nicht angeht wenn man den Lock deaktivert und den Raum verlässt)

Ausschalten der Beleuchtung

  • x Sekunden nach Deaktivierung des Bewegungsmelders
  • Sperre nicht aktiv

Eingänge:

  • Melder Aktualisierung - Status des Melders wurde gerade geändert
  • Melder Status - Aktueller Status des Melders
  • Helligkeit Wert - Aktueller Wert des Helligkeitssensors
  • Helligkeit Limit - Limit für die Auswertung des Helligkeitssensors
  • Locked Zeitstempel - Zeitstempel letzte Aktualisierung des Locked Status
  • Locked Status - Aktueller Status der Sperrvariable
  • Licht Status - Aktueller Status der Beleuchtung
  • Timer Sekunden - Zeit in Sekunden für die Abschaltverzögerung

Ausgänge:

  • Licht - Schaltausgang für die Ansteuerung der Beleuchtung
  • Offene Sekunden - Verbleibende Zeit in Sekunden bis zum Ausschalten der Beleuchtung (wird alle 5 Sekunden aktualisiert)

Workflow:
BWM_2023-01-26.zip (3,2 KB)

Screenshots:

1 „Gefällt mir“

Überwachung einer Variable

Die zyklische Befüllung einer Variable soll überwacht werden, wenn die letzte Aktualisierung der Variable länger als x Sekunden zurückliegt, soll eine Alarmierung erfolgen.

Eingänge:

  • Letzte Aktualisierung - Timestamp der letzten Aktualisierung der Variable, die überwacht werden soll.
  • Limit in Sekunden - Zeit in Sekunden nach der eine Alarmierung erfolgen soll.
  • Intervall in Sekunden - Intervall für die Überprüfung der Variable
  • Alarm bereits aktiv - Statusvariable für die Alarmierung, diese Variable wird auch am Ausgang für die Zuweisung des aktiven Alarms verwendet.

Ausgänge:

  • Alarm Status - liefert immer den aktuellen Status der Variable Überwachung
  • Alarm Ein/Aus - liefert true oder false wenn sich der Status ändert

Workflow:
WatchdogMissingValue_2023-02-28.zip (2,4 KB)

Screenshots:

im aktuellen Beispiel soll die Variable alle 5 Sekunden einen neuen Wert liefern, der Workflow läuft alle 60 Sekunden und wenn länger als 30 Sekunden kein Wert geliefert wurde, wird das Skript „AlarmByPowerMeter“ aufgerufen.

Licht bei Betätigung der Türglocke ein/ausschalten:

Bei Betätigung der Türglocke soll eine Beleuchtung 2x Blinken.

Eingänge:

  • Licht Status - Status Variable der Beleuchtung
  • Türglocke aktiviert - Trigger der Türglocke
  • Bedingung - zusätzliche Bedingung, die erfüllt sein muss, damit die Beleuchtung angesteuert wird.

Ausgänge:

  • Licht Status - Ausgang für die Ansteuerung der Beleuchtung

Workflow:
TürglockeLicht_2023-02-28.zip (2,0 KB)

Screenshots:

Im aktuellen Beispiel wird die Status Variable bei TRUE und Aktualisierung als Trigger an den Subworkflow übergeben.
Die Statusvariable ist der Online Zustand meines Laptops, das Licht soll nur dann blinken, wenn der Laptop online ist (Hintergrund: durch das Headset höre ich die Türklingel manchmal nicht :slight_smile: )

1 „Gefällt mir“

Max/Min Werte einer Variable:

Der Workflow ermittelt die Max/Min Werte einer Variable aus den historischen Daten.

Eingänge:

  • ID der Variable
  • Aggregationslevel - Wert für Aggregation (1=24 Stunden, 2=Woche, 3=Monat, 4=Jahr)

Ausgänge:

  • Minimum - Minimaler Wert im Zeitraum (aktuell nur Tag)
  • Maximum - Maximaler Wert im Zeitraum
  • Durchschnitt - Durchschnittlicher Wert im Zeitraum

Workflow:
VariableMaxMin_2023-03-17.ipsWorkflow (7,5 KB)

Screenshots:

Aggregationslevel kann ich diesem Beispiel natürlich auch durch eine Konstante ersetzt werden, alternativ kann der gewünschte Wert auch direkt als Workflow Parameter übergeben werden.

Anbei auch noch eine Variante, die den aktuellen Tag von 00:00 bis aktuell auswertet:

VariableMaxMinDay_2023-03-12.ipsWorkflow (6,2 KB)

Ein Beitrag wurde in ein neues Thema verschoben: Frage zu Workflow Treppenlicht Automat

Steuerung Ladegerät

Der Workflow steuert das Ladegerät eines Tablets, das Ladegerät soll beim Unterschreiten eines Limits eingeschaltet werden und beim Erreichen eines Limit wieder ausgeschaltet werden.

Eingänge:

  • Limit Minimum - Unteres Limit zum Einschalten des Ladegerätes, als Default werden 20% verwendet falls der Eingang nicht belegt ist.
  • Ladegerät - Aktueller Status des Ladegerätes
  • Automatik - Boolean Wert für die automatische Steuerung, Default für den Eingang ist TRUE
  • Batterie Level - Aktueller Wert der Batterie
  • Limit Maximum - Oberes Limit zum Ausschalten des Ladegerätes, als Default werden 80% verwendet falls der Eingang nicht belegt ist.

Ausgänge:

  • Ladegerät - Ausgang zur Ansteuerung des Ladegerätes

Workflow:
SteuerungLadegerät_2023-06-08.ipsWorkflow (17,3 KB)

Screenshots:

Hier mal von mir ein Workflow für eine Tasterschaltung,
Ich weis die Jungs von IP Symcon sind nicht so zufrieden damit, aber es gibt Situationen bei denen eine Tasterschaltung in einer Visu doch sin macht, ( z.B. wenn man wie ich nur Taster im Haus verbaut hat und diese auch dementsprechend auf seiner SPS so Programmiert hat. habe keine Lust gehabt das komplette SPS Programm umzuschreiben. )

Mit freundlichen Grüßen
Chris

Tasterschaltung.ipsWorkflow (4,0 KB)

Hallo,
@Brownson hat mir bei meinem Workflow geholfen :slightly_smiling_face:, danke.
Doku Workflow Doku WorkFlow Brownson!

Hier mein Workflow:
Akkulader ( 51,2V LiFePo4 ) wird über eine Tasmota Steckdose Ein/Ausgeschaltet.
Habe zwei LiFePo 25,6V Akkus in Serie geschaltet ( 51,2V ) und wird in einem Victron-System überwacht.
Ich verwende die Akku Spannung und die Voltabweichung in % zur Steuerung.
Habe 3 eigenständige Workflows für meine Steuerung verwendet.
Hier mein Objektbaum:


Diverse Variablen ( z.B. Grenzwerte und Schalter ( Bool )).
Unter den Workflows, werden diverse Event´s abgelegt ( vom Workflow automatisch erstellt ).
Habe in meinem Fall, im Workflow, bei den Eingangs-Variablen ( Variable Lesen ),
„Bei Änderung“ in Workflow Ausführung eingestellt ( wird als Blitz neben Wert dargestellt ).
Bedeutet → Der Wert wird nur bei Änderung an den nächsten Baustein weitergegeben!
Da mein Workflow „Laden bis Max Volt oder VDiff max“ auch nach dem beenden vom Laden ausgeführt wird,
Zusätzlich bei den zwei Event´s „Batt Volt“ und „Volt Abweichung %“ eine weitere Bedingung eingefügt:

Erst wenn „Batt Laden Aktivieren“ auf TRUE ist, werden die beiden Variablen an den nächsten Baustein weitergeleitet.
Somit dieser Workflow, ( fast ) nur im Ladevorgang bearbeitet wird.

Die drei Workflows:
Batt Laden zurücksetzen wenn Laden ENDE:


Laden bis Max Volt oder VDiff max:

Lader Batt Aktivieren:

„Batt Laden Aktivieren“ und „Laden Ende bis Max Volt oder V Diff max“ = false.
Die Grenzwerte bestimmen die Variablen „Max Batt Volt Laden“ und „Max Diff V %“.
Gestartet wird mein Workflow mit einem Schalter „Batt Laden Aktivieren“ = True.
Somit wird im Workflow „Lader Batt Aktivieren“ meine Steckdose ( Power ) auch auf True gesetzt.
Ladenetzteil beginnt meine Akkus zu laden.
Im Workflow „Laden bis Max Volt oder VDiff max“ werden die sich ändernden Variablen „Batt Volt“ und „Volt Abweichung %“ überwacht auf die eingestellten Grenzwerte „Max Batt Volt Laden“ und „Max Diff V %“.
Wird ein Grenzwert erreicht ( Oder Baustein ), wird True an den Baustein „Bedingter Wert“ weitergegeben.
Dieser Baustein wird in meinem Fall nur zum SETZEN auf TRUE für die Variable „Laden Ende bis Max Volt oder Diff max“ verwendet ( in der SPS Welt als SET Baustein bekannt ).
Da jetzt die beiden Variablen „Batt Laden Aktivieren“ und Laden Ende bis…" auf True sind,
Wird im Workflow " Lader Batt Aktivieren" der Power Wert auf False gesetzt und
der Lader ist Stromlos.
Jetzt verringert sich die Akku Spannung " Batt Volt" und eventuell die " Volt Abweichung %„.
Durch den Baustein „Bedingter Wert“ in meinem Workflow, bleibt die Variable „Laden Ende bis …“ auf True!!!
Obwohl meine Grenzwerte, nach den Beenden der Ladung nicht mehr erreicht werden und
False am Baustein " Bedingter Wert“ anliegen, bleibt „Laden Ende bis …“ auf TRUE!!
Hier hatte Andreas mir den entscheidenden Tipp gegeben. :smiley:
Erst, wenn die Start Variable „Batt Laden Aktivieren“ auf False gesetzt wird ( Schalter in der Visu ), setzt der Workflow „Batt Laden zurücksetzen wenn Laden ENDE“ die Variable „Laden Ende bis …“ auf False.

Grundstellung des Workflows.

Bin teilweise detaillierter ins Detail gegangen, um eventuell nicht Profis zu helfen :wink:

LG Willi