Zustand wiederherstellen/ MQTT-Nachricht senden: Begrenzung der Anzahl der Variablen?

Hallo,
ich habe eine Szene mit 12 Rücksetz-Zustand-Aktionen in einer einzigen Aktion.
Im folgenden Aktionsblock möchte ich 12 MQTT-Nachrichten senden, aber ich sehe nur die letzten 10 Variablen:


Ich weiß nicht, seit welcher Version das nicht mehr funktioniert, da ich alle 12 sichtbar hatte, als ich die Szene erstellt habe.

Ich habe gesehen, dass ein alter Bug diesen Fehler beschrieben hat: [BUG][SCENES] recupération variable limitée à 10 données sur un bloc lors de l'utilisation dans l'action "envoyer un message"

Hallo @mutmut,

Ich kann das Problem nicht reproduzieren. Bei mir funktioniert es, wenn ich viele Variablen über eine Aktion wie „HTTP-Anfrage“ abrufe, zum Beispiel:

Anschließend habe ich alle Variablen:

Es gibt eine kleine Scrollleiste, und wenn ich die Pfeiltasten hoch/runter verwende, kann ich in der Liste navigieren. Hast du das nicht bei dir?

Das ist also nicht dasselbe, weil ich auch alle Variablen abrufe, wenn ich eine HTTP-Anfrage sende und eine der Variablen abrufen möchte.
In meinem Fall führe ich mehr als 10 Letzten Zustand abrufen aus und dann möchte ich MQTT-Nachricht senden und genau dort bleibt es bei 10 hängen, kein Aufzug zum Scrollen und wenn ich nach unten „Pfeil“ drücke, geht es nach dem 10 wieder zu 1.
Ich habe es mit der Duplizierung der Szene versucht, aber ich habe das gleiche Verhalten.

Okay, danke, ich kann es reproduzieren und verstehe, was nicht stimmt :slight_smile: Ich korrigiere es!

Der Bug war ein bisschen verdreht :sweat_smile:

In jeder Aktion gibt es eine Funktion, die überprüft, ob eine Variable zu diesem Zeitpunkt „verfügbar“ ist. Eine Variable gilt nur dann als verfügbar, wenn sie vor der aktuellen Aktion definiert wurde.

Um dies zu bestimmen, hat jede Aktion einen Pfad (path) wie « 1.1 », « 1.1.then.1 », usw. Anschließend werden die Segmente des Pfades verglichen, um die Reihenfolge der Aktionen zu bestimmen.

Das Problem tritt auf, wenn es mehr als 9 Aktionen in einer Gruppe gibt: Die Pfade werden dann « 1.10 », « 1.11 », usw. An einer Stelle im Code wurde die Länge des Pfades verglichen (statt der Tiefe), was funktionierte, solange die Segmente nur eine Ziffer hatten. Sobald die Pfade jedoch zwei Ziffern erreichten, wurde der Vergleich falsch :grimacing:

Der Bug ist nun hier behoben:

Danke für die Erklärung!
Das Verrückte ist, dass es irgendwann mal funktioniert hat, denn ich habe es geschafft, meine 12 Senden-Befehle auszuführen, ohne Probleme zu haben.
Macht nichts, ich sage, solange es gelöst ist :wink:

Es war die Entwicklung des „IF… THEN… ELSE“ („WENN… DANN… SONST“), die diesen Teil überarbeitet hat – dort ist der Fehler aufgetreten!

Das Update ist in Gladys Assistant 4.59 verfügbar: