NEWS
Rollosteuerung funktioniert nicht
-
Hallo liebe Gemeinde,
mich macht ein Thema grade wahnsinnig, weil ich nicht verstehe....
Ich hab eine Rollosteuerung mit mehreren Shellys als Trigger gebaut.
In eine richtung funktioniert das Ganze auch ganz toll, aber inb die andere Richtung stoppt das Rollo nicht.Das funktioniert.

Aber das nicht.

Hier wird einfach ein weiteres "Auf" geschickt. Aber warum? -
Oben links im Editor gibt es einen button mit dem du zwischen JS und Blockly ansicht wechseln kannst.
Mach mal und poste das entstandene JS. nochmal drauf clicken und du hast das Blockly zurück :)
A.
@Asgothian sagte in Rollosteuerung funktioniert nicht:
Oben links im Editor
Wohl eher oben rechts ;-)

-
HIer noch das Skript:
on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Ab_bei_Bett' /* Taster Ab bei Bett */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Ab' /* Rollo Ab */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != 'stopped')) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } }); on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Auf_bei_Bett' /* Taster Auf bei Bett */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Auf' /* Rollo Auf */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != 'stopped')) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } }); on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Ab' /* Taster Ab */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Ab' /* Rollo Ab */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val == ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } }); on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Auf' /* Taster Auf */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Auf' /* Rollo Auf */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val == ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } }); -
Das siehrt hier aber nicht so aus wie ich das wollte 🙈🙈
-
Das siehrt hier aber nicht so aus wie ich das wollte 🙈🙈
@Valerian-Kriwaczek sagte in Rollosteuerung funktioniert nicht:
Das siehrt hier aber nicht so aus wie ich das wollte 🙈🙈
und jetzt?
-
so, jetzt...
Das hier Funktioniert praktisch:
on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Ab_bei_Bett' /* Taster Ab bei Bett */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Ab' /* Rollo Ab */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != 'stopped')) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } }); on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Auf_bei_Bett' /* Taster Auf bei Bett */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Auf' /* Rollo Auf */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != 'stopped')) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } });Und dert Teil macht immer wieder nur Auf und stoppt nicht
on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Ab' /* Taster Ab */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Ab' /* Rollo Ab */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val == ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } }); on({ id: 'alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Taster_Auf' /* Taster Auf */, change: 'any' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val != ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Auf' /* Rollo Auf */, true); } else if (((obj.state ? obj.state.val : '') == 'single_push') && (getState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Status').val == ('closing' || 'opening'))) { setState('alias.0.Haus.Rollo.Rollo_Roland_Schlafen.Rollo_Stop' /* Rollo Stop */, true); } });MOD-EDIT: Code in code-tags gesetzt!
Erkennt Ihr da ein Muster?`
-
Noch nicht, aber da gibt es etwas was so nicht geht:

Das das so funktioniert wie du das willst ist eher zufall. der
oderBaustein erwartet einen Wahr / Falsch Wert an beiden Eingängen. Du gibst ihm einen Text. ich würde folgendes machen:
Wobei du natürlich an stelle der von mir eingesetzten Textblöcke in den blauen Rahmen die korrekten Objekt-Selektions Blöcke nehmen musst. Und im Roten Rahmen ist derw 'stop' dp gemeint, während im grünen der 'start' dp gemeint ist.
-
Habs jetzt mal so gemacht, aber jetzt funktioniert der stop garnicht mehr...🫤

-
Na ja, bei
closingsollte es gehen. Beiopeningnicht.Nur - warum hast du nicht das nachgebaut was ich gebaut habe. Und poste doch mal welche Zustände der Rollo Status denn haben kann. ich gehe von
closing closed opening openaus.
-
habs jetzt grade noch geändert, hab das "ing" im ersten Moment ned gecheckt.. :-)


Ich kann jetzt direkt zwischen auf und ab umschalten, aber stoppen geht nicht.
Die Zustände sind open, closed, opening, closing, stopped, calibrating
-
Nochmal - warum baust du nicht genau das nach was ich gemacht hab. Dein vergleich mit
enthält nicht den Wert openingsort dafür das du fast immerRollo Aufansteuerst.ich hatte durchaus schon mit absicht auf genau einen vergleich mit else gesetzt.
A.
-
Ok, jetzt hab ich dich. Vielen Dank!
das heißt also auch ein "nicht" funktioniert in Verbindung mit Text nicht zuverlässig. -
Ok, jetzt hab ich dich. Vielen Dank!
das heißt also auch ein "nicht" funktioniert in Verbindung mit Text nicht zuverlässig.@Valerian-Kriwaczek sagte in Rollosteuerung funktioniert nicht:
das heißt also auch ein "nicht" funktioniert in Verbindung mit Text nicht zuverlässig.
Das "nicht" funktioniert mit bool'schen Ausdrücken. Nicht mit Texten.
Dein "sonst falls" ist übrigens völliger Mumpitz - denn dieser Block wird NIEMALS erreicht.
Du reagierts ja auf ein "Falls Wert == 'single_push'". Dann wird bei einem single_push auch genau dieser Block ausgeführt. Der "sonst falls" Block wird dann nicht mehr ausgewertet. Warum auch? Ein "sonst" ist ja nicht mehr nötig, wenn der Ausdruck im "Falls" bereits wahr war. -
@Valerian-Kriwaczek sagte in Rollosteuerung funktioniert nicht:
das heißt also auch ein "nicht" funktioniert in Verbindung mit Text nicht zuverlässig.
Das "nicht" funktioniert mit bool'schen Ausdrücken. Nicht mit Texten.
Dein "sonst falls" ist übrigens völliger Mumpitz - denn dieser Block wird NIEMALS erreicht.
Du reagierts ja auf ein "Falls Wert == 'single_push'". Dann wird bei einem single_push auch genau dieser Block ausgeführt. Der "sonst falls" Block wird dann nicht mehr ausgewertet. Warum auch? Ein "sonst" ist ja nicht mehr nötig, wenn der Ausdruck im "Falls" bereits wahr war.@Valerian-Kriwaczek sagte: stoppen geht nicht.
Versuche es mal so:

Es entspricht etwa dem Vorschlag von @asgothian