Ich würde gerne in Szenen, beim Empfang einer MQTT-Nachricht, die empfangene Nachricht verwenden
die man mit „Letzten Zustand abrufen“ abrufen könnte
die man mit „Nur wenn“ und „Fortsetzen“ als Bedingung für die Szene verwenden könnte
Hallo @cce66,
Für mich funktioniert die letzte Integration (die du in Bild1 gezeigt hast). Das heißt, dass (und ich finde das super), wir den « wenn fortfahren » im Trigger haben, wir lösen nur aus, wenn die erwartete Nachricht die richtige ist.
Ich würde diese Integration gerne nicht nur für die Weiterleitung nutzen, sondern zum Beispiel den MQTT-Rückgabewert in ein Feature injizieren.
Ok, ja, das Abrufen der MQTT-Info kann interessant sein +1
Ja, aber ich habe geschummelt, um zu zeigen, was ich mir in meinem Feature-Request wünsche. Aktuell existiert das nicht ![]()
Die Idee wäre, den Wert der Nachricht abrufen zu können, um ihn z. B. in einer Nachricht als Variable zu verwenden (ich merke, dass meine Anfrage nicht ausreichend klar ist). Wenn man das mit „Letzten Zustand abrufen“ machen könnte, hätte man den Wert der Nachricht, den man dann z. B. verwenden könnte, um eine Nachricht zu senden. Momentan ist es nur möglich, die Szene fortzusetzen!
Aber du kannst dafür stimmen, wenn du möchtest, dass es entwickelt wird
!
Ich bin auch der Meinung, dass ich auch nicht verstehe, was das bringt!
Das Thema ändert sich nicht während der Szene, warum also eine Variable haben wollen? Wenn du es oben im Trigger definiert hast, dann ist es doch fix, oder? ![]()
Hallo @pierre-gilles,
Das ist nicht für das Thema, sondern für die empfangene Nachricht, bei der wir das Verhalten der Szene je nach empfangener Nachricht ändern könnten, z. B.
« Nur fortsetzen, wenn » Nachricht=Wert <
"Nachricht senden {{ MQTT-Wert "
et eine andere Szene
« Nur fortsetzen, wenn » Nachricht=Wert >
"Nachricht senden {{ MQTT-Wert "
oder wenn es ein « sonst » für « nur fortsetzen, wenn » geben würde
« Nur fortsetzen, wenn » Nachricht=Wert <
« Sonst »
"Nachricht senden {{ MQTT-Wert "
Ich habe « Nachricht senden » verwendet, aber es könnte auch eine andere Aktion sein
Das entspricht meiner Funktionsanfrage Pouvoir créer des variables globales utilisables dans gladys (Latitude, Longitude, Date, Heure etc)
Die Idee ist, etwas mehr Flexibilität und Parametrisierung in Gladys zu haben
Danach bleibt es Vorschläge, wenn es Nachfrage gibt, wird es Abstimmungen geben, also könnte es interessant sein, es zu entwickeln, wenn es keine gibt, dann lohnt es sich nicht, aber man kann es nicht wissen, ohne zu fragen! ![]()
Danach hatte ich das vorgeschlagen
Es stimmt, dass es idealerweise besser wäre, da es den Empfang und das Senden einer MQTT-Nachricht in den Szenen abdeckte, die @Lokkye implementiert hat, aber wir könnten den Status zurückgeben wie bei den anderen MQTT-Geräten, wobei die interne Syntax von Gladys beibehalten wird, es ist nur eine Zuordnung zu machen:
Gladys abonniert sich beim Publish eines externen Geräts, wenn es eine Nachricht empfängt, wandelt es in die MQTT-Syntax von Gladys um und sendet sie zur Verarbeitung, als ob es die Nachricht im Gladys-Format erhalten hätte
Wenn Gladys das MQTT eines externen Geräts veröffentlichen muss, wandelt es die MQTT-Syntax von Gladys in die externe MQTT-Syntax um und sendet die Nachricht
Damit könnte man Node-red für alle Geräte, die noch nicht integriert sind oder die es nicht sein werden, weil sie zu spezifisch sind, umgehen
Aber es gibt nicht viele Stimmen, also vielleicht interessiert es niemanden, vielleicht sollte man eine Integration entwickeln, bei der man diesen Mapping-Fall einfacher behandeln könnte, da nur eine Tabelle in der Datenbank hinzugefügt werden müsste, ich bin noch nicht so weit dafür
aber ich verzweifle nicht! ![]()
Würde es deinem Bedarf nicht entsprechen, wenn man den Wert einem virtuellen Gerät zuweist und mit dem Zustand dieser Funktion (wie bei einem klassischen Gerät) arbeitet?
Aber das ist bereits aktuell möglich! Ich sehe nicht, was das hinzufügen würde, meine Anmerkung funktioniert auch für die Nachricht
Aktuell lässt man entweder die Nachrichtenzone leer und die Szene setzt sich nach dem Auslöser nur fort, wenn eine Nachricht, egal welche, im Topic ankommt (die den Wert des Payloads widerspiegelt, das ist okay), aber man kann nichts mit dem empfangenen Wert im Topic anfangen.
Oder man gibt tatsächlich einen Wert in die Nachricht ein, aber man behandelt nur diesen einen Fall.
Wenn man also nichts in die Nachricht einträgt, wird die Szene ausgeführt, es gibt einen Wert, der über das Topic empfangen wurde, und genau diesen Wert möchte ich anschließend verwenden. Dafür muss man ihn aber einer Variablen zuweisen, denn wenn man „Gerätestatus abrufen“ macht, hat man keine Verbindung, um diesen Wert abzurufen, und in der Zone „Fortsetzen, wenn“ ist es genauso (soweit ich weiß).
Nehmen wir das Beispiel eines exotischen Geräts „Exotic“, das nicht integriert ist. In die Topic-Zone trägt man den Wert ein, den das Gerät ausgibt, der „ExoticValue“ heißt. Also hat man in der Zone „Topic“ den Wert „Exotic/ExoticValue“. Und wenn das Gerät „Exotic“ einen Wertwechsel bei „ExoticValue“ hat, der zum Beispiel eine ganze Zahl von 0 bis 100 ist, könnte man je nach Wert von ExoticValue anschließend eine Telegramm-Nachricht senden, die „Achtung, der Wert von Exotic beträgt xx“ sagt.
derzeit kannst du kein Thema einem virtuellen Gerät zuweisen, schau mal, ich habe es nicht geschafft, das der Szene zuzuweisen, vielleicht habe ich die falsche Syntax
, es sollte ein Beispiel geben! ![]()
Nach Reflexion erinnere ich mich, eine Nachricht in dieser Richtung in den Diskussionen zwischen @pierre-gilles und @Lokkye gesehen zu haben, tatsächlich ist es besser, über ein virtuelles Gerät zu gehen und diese Funktion in einer Szene nicht zu verwenden (die aber nicht nutzlos ist, aber einfach nicht für das geeignet, was ich tun wollte) ich gehe weiterhin über Node-red vor!
Das ist aktuell nicht möglich oder ich habe mich falsch ausgedrückt.
Ich habe eine Szene, die einen String an Node Red sendet und dann TTS verarbeitet, der auf meiner Sonos abgespielt wird.
Zum Beispiel: „Der Alarm ist scharf.“
Was ich gerne machen würde, ist, dass bei Empfang einer Nachricht im Topic /tts, die Nachricht abgerufen und an Node Red gesendet wird.
Das würde mir in meinem Fall ermöglichen, nur eine TTS SONOS-Szene zu haben und meine anderen Szenen senden auf das Topic tts mit der gewünschten Nachricht.
Das ist nur ein Beispiel.
Aber man könnte genauso gut einen Wert in ein Gerät injizieren
(Ja, ich könnte meine Nachricht an ein Topic senden und auf Node Red hören, aber das Ziel ist, dass ich eines Tages ohne Node Red auskommen kann, heute verwende ich es nur dafür.
Falls es auf Gladys möglich ist, würde ich gerne wissen, wie man das macht.
Das Ziel wäre, das gleiche Verhalten wie der Auslöser „Ereignis im Kalender“ zu haben.)
Kann das @pierre-gilles trotzdem machen?
Das ist doch nicht möglich!
Hallo zusammen!
Dieses Thema ist nun in Entwicklung.
Ein Pull Request wurde eröffnet, um das Thema und die empfangene MQTT-Nachricht als Szenenvariablen zu verwenden:
Zögert nicht, dem Pull Request zu folgen, es so früh wie möglich zu testen und euer Feedback hier zu hinterlassen.