Szene - Nur fortfahren, wenn

Hallo zusammen,

Ich bin mir nicht sicher, ob ich die Funktionsweise des Blocks „Nur fortsetzen, wenn“ in den Szenen zu 100% verstehe.

Funktioniert er wie Punkt 1 oder 2?

1 → Er holt den Wert der Variable aus „Letzten Zustand abrufen“ im vorherigen Block und die Szene stoppt endgültig, wenn die Bedingung nicht erfüllt ist.

2 → Er holt den Wert der Variable aus „Letzten Zustand abrufen“ im vorherigen Block und die Szene pausiert SO LANGE, bis die Variable die Bedingung erfüllt? Im Grunde würde er jede Sekunde die Variable überprüfen und dann zum nächsten Block übergehen, sobald die Bedingung erfüllt ist.

Mein Ziel ist es, meinen Geschirrspüler nur zu starten, wenn ein Event gesendet wird, das „Ich bin bereit“ sagt, und wenn meine Energieerzeugung über x kW/h liegt.
Sobald ich das Event über Node-RED erhalte, wird die Szene ausgelöst und ich warte ungeduldig, bis die Variable über dem definierten Wert liegt.

Ich hoffe also, dass es wie Punkt 2 funktioniert, sonst bin ich etwas in der Klemme.
Falls es wie Punkt 1 funktioniert, hätten Sie Ideen, um mir zu helfen?

Vielen Dank im Voraus :slight_smile:

Hallo,

das funktioniert so, wie du es in Punkt 1 beschrieben hast. Meiner Meinung nach ist es am besten, einen programmierten Auslöser für deine Szene zu verwenden: zum Beispiel alle 5 Minuten, wenn „ich bin bereit“ und wenn die Produktion > x kW, den Geschirrspüler starten.

Okay, ich danke dir für deine Antwort, auch wenn sie mir nicht gefällt :stuck_out_tongue: Aber wenigstens habe ich meine Antwort.

Warum einfach, wenn es auch kompliziert geht :smiley: Es wäre so viel einfacher, mehrere Auslöser mit UND-Bedingungen zu haben, statt nur ODER-Bedingungen. Vielleicht ist das aber für die Zukunft geplant, weil es zu technisch für die Entwicklung ist. Ich werde nicht urteilen oder kritisieren, ohne den Grund zu kennen.

Und wenn ich also eine Pause für 230 Minuten einstelle (die Dauer eines Geschirrspülgangs), bestätigst du mir auch, dass er in dieser Zeit nicht alle 5 Minuten unnötige Tests durchführt?
Danke für den Tipp auf jeden Fall!

Nach mehreren Stunden kann ich bestätigen, dass es mit deinem System funktioniert :slight_smile:

Für alle, die interessiert sind und einen Geschirrspüler haben, der über das System « Home Connect » (Siemens, Bosh, …) verbunden ist, zögert nicht, mich zu kontaktieren, wenn ihr etwas Hilfe braucht, um euch auf den Weg zu bringen.

doch, es wird weitergehen. Es ist notwendig, ein „Fortsetzen“ nur hinzuzufügen, wenn der Geschirrspüler noch nicht gestartet wurde oder deine Variable „Ich bin bereit“ zurückzusetzen, nachdem du gestartet hast :slight_smile: (um zu vermeiden, dass er in einer Schleife startet)

Seltsam, dass man dieselbe Szene parallel starten kann… Es sollte eine Steuerung geben, um zu überprüfen, ob sie nicht bereits läuft. Oder den Leuten die Wahl lassen, sie parallel auszuführen oder nicht, für andere Zwecke, die mir unbekannt sind.

In meinem Fall wird die Spülmaschine nicht mehr „bereit“ sein, da sie „läuft“, daher kann sie den Befehl nicht mehrmals starten. Aber in Bezug auf die Leistung wird die Szene weiterhin unnötige Tests durchführen.

Nochmals vielen Dank für deine Antworten.

Ich habe das Gefühl, dass das etwas ist, was von Neulingen oft missverstanden wird. Es ist wahrscheinlich einfach ein UX-Problem. Danke für dein Feedback, ich werde versuchen, es dir zu erklären, und dann können wir sehen, wie wir die Benutzeroberfläche verbessern können, damit es klarer wird. :slight_smile:

Ein Auslöser ist ein « Ereignis », das zu einem bestimmten Zeitpunkt t auftritt.

Es hätte keinen Sinn, mehrere Auslöser mit « UND » zu haben. Was jedoch Sinn macht, ist, das Ganze in zwei Teile zu betrachten:

Ein Ereignis + eine Liste von Bedingungen

Beispiel: Wenn ich das Haus verlasse UND das Licht an ist

  • « Ich verlasse das Haus » ist ein Ereignis
  • « Das Licht ist an » ist kein Ereignis (ich habe das Licht nicht in derselben Nanosekunde eingeschaltet, in der ich das Haus verlasse), aber es ist ein Zustand.

:right_arrow: Was für einen Benutzer nützlich ist, ist ein Auslöser UND eine Überprüfung der Bedingungen (Überprüfung der Zustände)

Das ist der Weg, den wir in Gladys gewählt haben!

Eine Szene kann aus 3 Teilen bestehen:

  • Der Auslöser
  • Die Bedingungen
  • Die Aktionen

Die Bedingungen können mehrfach sein (sie befinden sich schließlich im gleichen « Bereich » wie die Aktionen)

Ist das jetzt klarer, und kannst du mir sagen, was du nicht verstanden hast/was du gemeint hast, als du « Mehrere Auslöser » sagtest?

Du bist nicht der Erste, der denkt, dass man in Gladys keinen Auslöser mit Bedingungen erstellen kann, obwohl das durchaus möglich ist!

Vielleicht liegt das Problem darin, dass man mehrere Auslöser für eine Szene hat…

Zögern Sie nicht, ein Tutorial in der Kategorie „Tutorials“ des Forums zu schreiben, wir sind immer auf der Suche nach solchen Tutorials, die anderen helfen können :slight_smile:

Ich verstehe deine Sichtweise perfekt, kein Problem damit.
Ich denke nicht, dass es eine gute oder schlechte Art gibt, es zu tun, jedes Smart-Home-System hat seine eigene Philosophie. Es liegt am Nutzer, sich anzupassen, und das tue ich, ohne zu kritisieren :slight_smile:

Wo ich ein bisschen gestört war, ist, dass ich, als ehemaliger DEV, in meiner Szene zwei Auslöser sehe (wieder einmal ist das manchmal Interpretationssache).

  1. Die API von Siemens sendet mir ein Event zu einem Zeitpunkt T, wenn etwas passiert (Tür geöffnet, Programm läuft, Fehler, etc …)
    → Ich erstelle einen « Bereit »- oder « Nicht bereit »-Zustand in Node-RED, wenn drei Events zusammenkommen (Tür geschlossen, « Power »-Knopf eingeschaltet und « Fernzugriff » aktiviert).
  2. Die sofortige Energieerzeugung ist etwas, das ich physisch nicht kontrollieren kann, es sind die Wetterbedingungen, die diesen Faktor beeinflussen, es ist also für mich ein Event, wenn ich einen bestimmten Schwellenwert überschreite. Ich werde also zu einem bestimmten Zeitpunkt einen Wert überschreiten, aber ich weiß JAMAIS, wann das passieren wird.

In meinem Fall habe ich also wie folgt gearbeitet:

Da ich nicht weiß, wann das passieren wird, denn für mich sind es zwei Auslöser, hole ich alle X Minuten den Wert meiner Variablen zum Zeitpunkt T ab → Ist meine Spülmaschine bereit? Ist mein sofortiger Verbrauch > x Kwh?

Auf diese Weise umgehe ich ein wenig mein Problem.
Danach, ist das das Optimalste? Da ich alle X Minuten teste, sogar nachts, obwohl ich genau weiß, dass ich mit meinen Solarpaneelen streng genommen nichts produzieren werde, denke ich nicht.


Ich könnte auch einen Auslöser in Bezug auf den sofortigen Verbrauch verwenden. Sobald er größer als X Kwh ist, überprüfe ich meine Bedingung (Ist der Zustand der Spülmaschine bereit?).
Auch hier, teste ich systematisch:

Mit dem Risiko, die Szene jede Sekunde auszulösen, nicht optimal aus meiner Sicht.

Oder ich teste nur einmal, ob der Schwellenwert überschritten wird? Mit dem Risiko, dass der Wert den ganzen Tag über dem Schwellenwert bleibt und ich so das Einschalten der Spülmaschine verpasse…

Nicht einfach, Entscheidungen zu treffen :sweat_smile:


Für die Tutorials, ja, ich sollte mir einmal die Zeit nehmen, das zu tun.
Ich hatte auch ein anderes über die Einrichtung und Konfiguration des Reverse-Proxy, der auf dem Synology-NAS für den Zugriff von außen vorhanden ist (im Gegensatz zu einem bereits vorhandenen Tutorial über das Öffnen der Ports), aber im Widerspruch zu deinem kostenpflichtigen Angebot.

Du umgehst es überhaupt nicht, ich denke, das ist eine gute Art und Weise.

Du sagst, es gibt 2 Möglichkeiten, das zu tun:

  • Entweder einen programmierten, wiederkehrenden Auslöser, der 2 Bedingungen überprüft
  • Oder einen Auslöser auf eine der 2 Variablen, und dann eine Bedingung

Was die Frage der Optimierung des programmierten Auslösers betrifft, ist in Gladys der Szenario-Motor extrem leistungsfähig, und einige Überprüfungen einiger Variablen sind wirklich nichts.

Ein CPU führt Milliarden von Operationen pro Sekunde aus, es sind nicht 2 zusätzliche if-Bedingungen, die ihn stören werden, dafür ist er da :slight_smile:

In deinem Fall macht tatsächlich ein programmierter Auslöser alle X Minuten am meisten Sinn. Denke sogar daran, ein „virtuelles“ MQTT-Gerät in Gladys zu haben, das es dir ermöglicht, einen Zustand zu speichern, um deinen Geschirrspüler nicht mehrmals zu starten, wenn er bereits läuft.

Man darf nicht vergessen, dass ich kein NUC, sondern einen Raspberry habe und ich bereits einige Zugriffsprobleme auf Gladys hatte, weil zu viele Anfragen an die zu große DB gingen. Deshalb achte ich gerne auf die „Performance“-Seite :face_with_open_eyes_and_hand_over_mouth:

Danke für den Rat, aber dieser Punkt wurde berücksichtigt, meine Spülmaschine kann sich nicht mehrmals starten :slight_smile:

Ich habe kein anderes passenderes Element gefunden, das „bereit“ oder „nicht bereit“ (statt „aktiv“ oder „inaktiv“) aussagt, aber es erfüllt seinen Zweck. Und Node-RED erledigt die Arbeit im Backend, um den Wert dieses Status zu ändern oder nicht.

Nochmals vielen Dank an alle _

Ach? Zögere nicht, ein eigenes Thema zu erstellen, dazu gibt es Feedback! Auf welcher SD-Speicherung bist du? SSD?

In diesem Fall finden die Aktionen „Letzten Zustand abrufen“ und „Nur fortfahren, wenn“ nur im RAM statt, keine Festplatte :slight_smile:

Cool! Das ist sauber

Ich hatte einen Post geöffnet und nach der Analyse war meine DB auf 14 GB auf einer SD-Karte angewachsen. Jeder empfangene MQTT-Wert wurde jede Sekunde in der DB gespeichert. Irgendwann kann man auch keine Wunder mehr vollbringen :slight_smile: Ich habe meine DB bereinigt (mehrere Nächte, so riesig war sie), das Speichern jedes Zustands deaktiviert, „eine Woche“ in den Einstellungen ausgewählt und jetzt läuft alles wieder wie geschmiert :innocent:

Ach ja, stimmt. 1 MQTT-Event pro Sekunde, wobei der gesamte Verlauf gespeichert wird, das geht schnell ^^

:+1: