NEWS
In Blockly im Skript erzeugte Tastenfunktion wird im WeMos D1 mini nicht erkannt
-
Folgende Realisierung:
In der Visualisierung vis wurden zwei Schalter (Taster00 und Taster01) definiert.
Diese beiden Schalter sind auch unter Objekte im mqtt.0 zu finden (30Taster00 und 30Taster01).
Ein Sketch im WeMos D1 mini bekommt eineindeutig korrekt jede Schalterstellung, bestätigt durch ein "Serial.println" am seriellen Monitor, mit.
Diese beiden Schalter werden nun zu Tastern: Beigefügtes Blocky-Skript schaltet sie nach 3 Sekunden wieder auf LOW.
.
Dies funktioniert in vis, der Taster wird nach 3 Sekunden wieder umgelegt und auch der Status des Topic geht unter Objekte wieder auf LOW.
Fehlverhalten:
Bei aktivierten Blockly-Skript bekommt der WeMos in den aller meisten Fällen nichts von einem Statuswechsel mit. Es hat für mich den Anschein, dass kein Telegramm über einen Statuswechsel an den WeMos geschickt wird.
Was ist in meinem ersten Blockly-Skript falsch, das es mit dem WeMos dann nicht klappt? -
warum schaltest du auf "0" zurück und nicht auf "false"
-
@E-W-d-G sagte:
bekommt der WeMos in den aller meisten Fällen nichts von einem Statuswechsel mit.
aktualisiere --> steuere
-
@liv-in-sky
Ich habe die Wahl nach dem Ablaufen des Timers nach den 3 Sekunden von "0" auf "unwahr" gesetzt. Jetzt erscheint in den Objekten als Status nicht mehr "0", sondern "false". Aber der WeMos bekommt genauso wenig mit wie mit der "0". Obwohl der WeMos alles abfragt:
if (strPayload == "off" || strPayload == "0" || strPayload == "false") Serial.println("..00 false");
Habe auch die Bedingungsabfrage von "wahr" auf "1" gesetzt. Hat aber die gleichen Auswirkungen.
Ich denke, das ist auch nicht das Problem. Der Timer läuft ja. Durch die Betätigung des Schalter wird das Topic auf "1" gesetzt und der Timer angestoßen. Nach 3 Sekunden wird das Topic durch den Timer wieder auf "0" oder "false" gesetzt und der Schalter in der Visualisierung wieder auf "Aus" umgelegt. Das funktioniert ja.
Nur der WeMos bekommt bei akriviertem Skript selten etwas davon mit. -
@paul53
Sorry. Aber deine Anregung kann ich nicht deuten. Was soll ich "aktualisiere --> steuere"?
Sicher habe ich den Skript nach den Änderungen angehalten, gespeichert und neu gestartet. Auch mqtt.0 habe ich gestoppt und neu wieder aktiviert.
Aber das meinst du vielleicht nicht? -
@E-W-d-G
Du sollst den aktualisiere Block gegen den steuere Block tauschen -
wie die beiden anderen jungs sagten - ändere mal das blockly-modul- anstatt aktualisieren mal steuere nehmen.
wenn das nichts bringt:
wenn sich der datenpunkt ändert - siehst du das auch im serial.println auf dem wemos - ist mir noch nicht klar?
du scheinst mqtt zu nutzen - dann ist natürlich die frage, ob du die änderung im mqtt datenpunkt siehst? bzw sendest - also die frage, kommt die änderung am wemos wirklich an? könnte sein, dass das ändern des blocklys wie oben erwähnt was bringt - wenn nicht, gibt es noch 2 möglichkeiten. du sendest mal einen mqqt befehl mit einem mqtt tool direct an den wemos und beobachtest - damit stellst du sicher, das der wemos richtig schaltet. funktioniert das, sollten mal die mqqt einstellungen im iobroker kontrolliert werden - mehr fällt mir erstmal nicht ein -
Recht herzlichen Dank für eure Tipps. Jetzt funktioniert es wie folgendes Bild zeigt:
Der Tausch des Blocks "aktualisiere" gegen "steuere" hat es gebracht. Es wird nun nicht nur in Objekten der Topic-Status aktualisiert, sondern auch der WeMos über die Statusänderung informiert.
Ich hatte bis dato wohl falsche Vorstellungen der Arbeitsweise von ioBroker. Für mich war der Status des Topic unter den Objekten immer der Dreh- und Angelpunkt für weitere Veranlassungen von ioBroker. Das ioBroker durch den Block "aktualisiere" wohl in Objekten den Status ändert und in vis zu dem Aufruf eines andern Schalterbildes führt und nicht zur Weitergabe der Statusmeldungsänderung an den WeMos halte ich für sehr bedenklich. Durch diese Abarbeitung erzeugt ioBroker von sich aus eine Diskrepanz der angeschlossenen Gerätschaften.
Und dann kommte ja noch hinzu, dass mit dem Skript und dem Block "aktualisiere" das Schalten auf "1" oder "true" ja manchmal funktioniert hat. Irgendwie scheint mir da etwas nicht "sauber" zu sein. -
O.k. erledigt.
Nur wie markiere ich diesen Beitrag als erledigt?