Roller Shutter / Szenensteuerung / ID

Hallo zusammen,

ich bin relativ neu und nun auf ein Problem gestoßen, welches ich alleine nicht lösen kann…

Ich möchte, dass im Erdgeschoss alle Raffstoren zusammen hoch fahren, wenn ich die Taste “hoch” von einem der Raffstoren doppelt drücke. Und wenn ich dann die Taste “runter” doppelt drücke, dann sollen alle Raffstoren im EG runter gehen.

Ich habe also 2 Szenen angelegt (“Raffstore EG hoch” und “Raffstore EG runter”). Und ich habe die “Szenensteuerung” beim betroffenen RollerShutter aktiviert.

In den beiden Szenen “lausche” ich nun auf die Parameter “14” und “24”. Laut mir vorliegenden Dokus sind das die IDs, die der Shutter sendet, wenn er “doppelt” geklickt wird.

Soweit, so gut. Klicke ich nun den Shutter bzw. den angeschlossenen Taster doppelt auf “runter” tippe, dann gehen die Raffstoren auch alle brav runter! Problem nur: Wenn ich die Taste “hoch” doppelt tippe, dann passiert nichts. Warum weiß ich nun: Weil diese Taste die selbe Szene (also “Raffstore EG runter”) triggert, obwohl meine Szene ja auf die andere ID lauscht.

Kommt das jemandem bekannt vor? Warum senden beide Tasten die selbe ID?

Danke vorab!! :slight_smile:

Herzliche Grüße
Niclas

Hi,

also je nach dem, wie genau Deine Szene aussehen - die Szenen werden nur durch das Modul selbst getriggert.
Die Szenenaktivierungspara für hoch und runter sind unterschiedlich und können in der selben Szene bei unterschiedlichen Bedingungen für differenzierte aktionen genutzt werden.

Hiermit kannst Du die Drücker debuggen:

--[[
%% properties
%% events
171 sceneActivation
%% globals
--]]

--Letizia Seitenrollo
fibaro:debug(fibaro:getValue(171, "sceneActivation"))

local id= 171; -- Hier die und in Zeile 3 die ID des fibaro Aktors eintragen
local name = fibaro:getName(id)
fibaro:debug(name);
local name = tonumber(fibaro:getValue(id, "sceneActivation"));
if (tonumber(fibaro:getValue(id, "sceneActivation"))==16)
then
fibaro:debug("1 click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==26)
then
 fibaro:debug("1 click s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==25)
then
 fibaro:debug("3 click s2 "..name);
  -- fibaro:call(173, "close");
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==15)
then
fibaro:debug("3 click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==14)
then
fibaro:debug("2 click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==24)
then
 fibaro:debug("2 click s2 "..name);
--  fibaro:call(173, "open");
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==12)
then
fibaro:debug("hold click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==13)
then
fibaro:debug("release click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==22)
then
 fibaro:debug("hold click s2 "..name);
  --  fibaro:call(151, "open");
	
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==23)
then
fibaro:debug("release click s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==10)
then
fibaro:debug("change from turn off to turn on s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==11)
then
fibaro:debug("change from turn on to turn off s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==20)
then
fibaro:debug("change from turn off to turn on s2 "..name);
  -- Rollo runterfahren
  
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==21)
then
fibaro:debug("change from turn on to turn off s2 "..name);
  -- Rollo hochfahren
  
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==17)
then
fibaro:debug("up "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==18)
then
fibaro:debug("down "..name);
end;

Hi Hoggle,

1.000 Dank und bitte entschuldige die späte Rückmeldung. Ich habe nicht mitbekommen, dass Du geantwortet hast…

Dein Skript ist super! Denn es hat mir nun 2 Dinge gezeigt:

  1. Die Doppelklicks funktionieren wie gewünscht, d.h. 14 für S1 und 24 für S2, wenn doppelt geklickt.
    Somit war mir schon klar, dass es nicht der Taster sondern die Szene sein muss. Dazu unten mehr.

  2. Aber ich habe auch festgestellt, dass der Dreifach-Klick bei S1 nicht geht. Dieser ist “tot”. Der Dreifach-Klick auf S2 liefert Signal 25. Ist Dir das bekannt?

Zurück zu 1)
Ich hatte die Szene über den grafischen Editor gebaut. vermeintlich “Narren sicher”. Dennoch habe ich es verbockt. :wink: Ich habe es nun mal über Lua gemacht, einfach und sauber und teste es heute Abend noch mal in Ruhe aus. Ich hatte versehentlich dafür gesorgt, dass auf das Signal “0” gelauscht wird… :frowning:

Danke noch einmal!! :slight_smile:

Hi Hoggle,
hi alle,

ok, mein Problem ist leider doch nicht gelöst…
Nach wie vor triggern die Taster zu viele Szenen.

Zusammenfassung:

Ich habe das Debug Skript von Hoggle auf den Taster “Raffstore LU” (ID 27) konfiguriert und den Taster “Pfeil nach oben” doppelt gedrückt. Anbei ein Screenshot. Das Ergebnis ist klar. Er erkennt den Doppelklick und meldet “14”.

ABER:
Alle 3 Szenen von mir werden getriggert, obwohl eine auf die 14 konfiguriert ist (die soll alle Raffstoren im EG hochfahren und wäre die Einzige, die nun greifen soll), aber auch die, die auf die 24 konfiguriert ist (die soll alle Raffstoren herunter fahren bei Doppelklick auf runter) und sogar die Szene, die auf 25 konfiguriert ist (die soll nur einen Teil der Raffstoren herunter fahren, wenn die Taste “Pfeil runter” drei mal gedrückt wird und die 25 sendet.

Was mache ich denn falsch?!

`–[[
%% properties
21 sceneActivation
27 sceneActivation
35 sceneActivation
%% weather
%% events
%% globals
–]]

local startSource = fibaro:getSourceTrigger();
if (
(
tonumber(fibaro:getValue(21, “sceneActivation”)) == 24 – 21 = Raffstore WoZi Links, Signal 24 ist Doppelklick runter (S2)
or
tonumber(fibaro:getValue(27, “sceneActivation”)) == 24 – 27 = Raffstore Essen Links Unten, Signal 24 ist Doppelklick runter (S2)
or
tonumber(fibaro:getValue(35, “sceneActivation”)) == 24 – 35 = Raffstore Kueche Schiebelement, Signal 24 ist Doppelklick runter (S2)
)
or
startSource[“type”] == “other”
)
then
fibaro:call(21, “close”); – 21 = Raffstore WoZi Links
fibaro:call(23, “close”); – 23 = Raffstore WoZi Schiebelement
fibaro:call(25, “close”); – 25 = Raffstore WoZi rechts
fibaro:call(27, “close”); – 27 = Raffstore Essen Links Unten
fibaro:call(29, “close”); – 29 = Raffstore Essen Rechts Unten
fibaro:call(31, “close”); – 31 = Raffstore Essen Rechts Oben
fibaro:call(33, “close”); – 33 = Raffstore Essen Links Oben
fibaro:call(35, “close”); – 35 = Raffstore Kueche Schiebelement
fibaro:call(37, “close”); – 37 = Raffstore Speisekammer Links
fibaro:call(39, “close”); – 39 = Raffstore Speisekammer Rechts
fibaro:call(41, “close”); – 41 = Raffstore Gaeste-WC
fibaro:call(21, “setValue2”, “0”); – 21 = Raffstore WoZi Links
fibaro:call(23, “setValue2”, “0”); – 23 = Raffstore WoZi Schiebelement
fibaro:call(25, “setValue2”, “0”); – 25 = Raffstore WoZi rechts
fibaro:call(27, “setValue2”, “0”); – 27 = Raffstore Essen Links Unten
fibaro:call(29, “setValue2”, “0”); – 29 = Raffstore Essen Rechts Unten
fibaro:call(31, “setValue2”, “0”); – 31 = Raffstore Essen Rechts Oben
fibaro:call(33, “setValue2”, “0”); – 33 = Raffstore Essen Links
fibaro:call(35, “setValue2”, “0”); – 35 = Raffstore Kueche Schiebelement
fibaro:call(37, “setValue2”, “0”); – 37 = Raffstore Speisekammer Links
fibaro:call(39, “setValue2”, “0”); – 39 = Raffstore Speisekammer Rechts
fibaro:call(41, “setValue2”, “0”); – 41 = Raffstore Gaeste-WC
end

Die wird getriggert, wenn mein Taster die 14 sendet?! Was mache ich denn falsch?!

HG
Niclas

Bildschirmfoto-2017-05-04-um-18.08.04.png

Oder hat das “Szene triggered”, was an allen 3 Szenen kurz aufleuchtet, gar nichts zu sagen und ist das nur, weil ein “möglicher” Trigger der Szene ausgelöst wurde…? Dann frage ich mich nur, warum das Verhalten dann so chaotisch ist… Denn es passiert einfach nicht zuverlässig, was geplant ist. Er passiert mal nichts, dann fahren die Raffstoren alle hoch, dann plötzlich wieder runter, so als würden doch alle 3 Szenen parallel laufen und sich gegenseitig in die Parade fahren. Soeben sind die Raffstoren hoch und dann mitten drin wieder runter gefahren. Tatsächlich so, als würden die Szenen gegeneinander “kämpfen”… :frowning:

So… Ich habe nun alles in eine Szene gepackt, damit ich sicherstellen konnte, dass sich hier nichts beißt. Und das Ergebnis ist verwirrend.
Ich habe alle 3 Szenarien reingesetzt (lausche auf Signal 14, lausche auf Signal 24, lausche auf Signal 25) und eine Debug-Zeile je Szenario ergänzt. Hier das Skript:

--[[
%% properties
21 sceneActivation
27 sceneActivation
35 sceneActivation
%% weather
%% events
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( 
 tonumber(fibaro:getValue(21, "sceneActivation")) == 14  -- 21 = Raffstore WoZi Links, Signal 14 ist Doppelklick hoch (S1)
 or
 tonumber(fibaro:getValue(27, "sceneActivation")) == 14  -- 27 = Raffstore Essen Links Unten, Signal 14 ist Doppelklick hoch (S1)
 or
 tonumber(fibaro:getValue(35, "sceneActivation")) == 14  -- 35 = Raffstore Kueche Schiebelement, Signal 14 ist Doppelklick hoch (S1)
 )
)
then
	fibaro:debug("Signal 14, es geht rauf");
	fibaro:call(21, "open"); -- 21 = Raffstore WoZi Links
	fibaro:call(23, "open"); -- 23 = Raffstore WoZi Schiebelement
	fibaro:call(25, "open"); -- 25 = Raffstore WoZi rechts 
	fibaro:call(27, "open"); -- 27 = Raffstore Essen Links Unten
	fibaro:call(29, "open"); -- 29 = Raffstore Essen Rechts Unten
	fibaro:call(31, "open"); -- 31 = Raffstore Essen Rechts Oben
	fibaro:call(33, "open"); -- 33 = Raffstore Essen Links Oben	
	fibaro:call(35, "open"); -- 35 = Raffstore Kueche Schiebelement
	fibaro:call(37, "open"); -- 37 = Raffstore Speisekammer Links
	fibaro:call(39, "open"); -- 39 = Raffstore Speisekammer Rechts	
	fibaro:call(41, "open"); -- 41 = Raffstore Gaeste-WC	
	fibaro:call(21, "setValue2", "100"); -- 21 = Raffstore WoZi Links
	fibaro:call(23, "setValue2", "100"); -- 23 = Raffstore WoZi Schiebelement
	fibaro:call(25, "setValue2", "100"); -- 25 = Raffstore WoZi rechts 
	fibaro:call(27, "setValue2", "100"); -- 27 = Raffstore Essen Links Unten
	fibaro:call(29, "setValue2", "100"); -- 29 = Raffstore Essen Rechts Unten
	fibaro:call(31, "setValue2", "100"); -- 31 = Raffstore Essen Rechts Oben
	fibaro:call(33, "setValue2", "100"); -- 33 = Raffstore Essen Links	
	fibaro:call(35, "setValue2", "100"); -- 35 = Raffstore Kueche Schiebelement
	fibaro:call(37, "setValue2", "100"); -- 37 = Raffstore Speisekammer Links
	fibaro:call(39, "setValue2", "100"); -- 39 = Raffstore Speisekammer Rechts
	fibaro:call(41, "setValue2", "100"); -- 41 = Raffstore Gaeste-WC
end

if (
 ( 
 tonumber(fibaro:getValue(21, "sceneActivation")) == 24  -- 21 = Raffstore WoZi Links, Signal 24 ist Doppelklick runter (S2)
 or
 tonumber(fibaro:getValue(27, "sceneActivation")) == 24  -- 27 = Raffstore Essen Links Unten, Signal 24 ist Doppelklick runter (S2)
 or
 tonumber(fibaro:getValue(35, "sceneActivation")) == 24  -- 35 = Raffstore Kueche Schiebelement, Signal 24 ist Doppelklick runter (S2)
 )
)
then
	fibaro:debug("Signal 24, es geht runter");
	fibaro:call(21, "close"); -- 21 = Raffstore WoZi Links
	fibaro:call(23, "close"); -- 23 = Raffstore WoZi Schiebelement
	fibaro:call(25, "close"); -- 25 = Raffstore WoZi rechts 
	fibaro:call(27, "close"); -- 27 = Raffstore Essen Links Unten
	fibaro:call(29, "close"); -- 29 = Raffstore Essen Rechts Unten
	fibaro:call(31, "close"); -- 31 = Raffstore Essen Rechts Oben
	fibaro:call(33, "close"); -- 33 = Raffstore Essen Links Oben	
	fibaro:call(35, "close"); -- 35 = Raffstore Kueche Schiebelement
	fibaro:call(37, "close"); -- 37 = Raffstore Speisekammer Links
	fibaro:call(39, "close"); -- 39 = Raffstore Speisekammer Rechts	
	fibaro:call(41, "close"); -- 41 = Raffstore Gaeste-WC	
	fibaro:call(21, "setValue2", "0"); -- 21 = Raffstore WoZi Links
	fibaro:call(23, "setValue2", "0"); -- 23 = Raffstore WoZi Schiebelement
	fibaro:call(25, "setValue2", "0"); -- 25 = Raffstore WoZi rechts 
	fibaro:call(27, "setValue2", "0"); -- 27 = Raffstore Essen Links Unten
	fibaro:call(29, "setValue2", "0"); -- 29 = Raffstore Essen Rechts Unten
	fibaro:call(31, "setValue2", "0"); -- 31 = Raffstore Essen Rechts Oben
	fibaro:call(33, "setValue2", "0"); -- 33 = Raffstore Essen Links	
	fibaro:call(35, "setValue2", "0"); -- 35 = Raffstore Kueche Schiebelement
	fibaro:call(37, "setValue2", "0"); -- 37 = Raffstore Speisekammer Links
	fibaro:call(39, "setValue2", "0"); -- 39 = Raffstore Speisekammer Rechts
	fibaro:call(41, "setValue2", "0"); -- 41 = Raffstore Gaeste-WC

end

if (
 ( 
 tonumber(fibaro:getValue(21, "sceneActivation")) == 25  -- 21 = Raffstore WoZi Links, Signal 25 ist Dreifach-Klick runter (S2)
 or
 tonumber(fibaro:getValue(27, "sceneActivation")) == 25  -- 27 = Raffstore Essen Links Unten, Signal 25 ist Dreifach-Klick runter (S2)
 or
 tonumber(fibaro:getValue(35, "sceneActivation")) == 25  -- 35 = Raffstore Kueche Schiebelement, Signal 25 ist Dreifach-Klick runter (S2)
 )
)
then
	fibaro:debug("Signal 25, Privacy");
	fibaro:call(21, "close"); -- 21 = Raffstore WoZi Links
  	fibaro:call(35, "close"); -- 35 = Raffstore Kueche Schiebelement
	fibaro:call(37, "close"); -- 37 = Raffstore Speisekammer Links
	fibaro:call(39, "close"); -- 39 = Raffstore Speisekammer Rechts	
	fibaro:call(23, "open"); -- 23 = Raffstore WoZi Schiebelement
	fibaro:call(25, "open"); -- 25 = Raffstore WoZi rechts 
	fibaro:call(27, "open"); -- 27 = Raffstore Essen Links Unten
	fibaro:call(29, "open"); -- 29 = Raffstore Essen Rechts Unten
	fibaro:call(31, "open"); -- 31 = Raffstore Essen Rechts Oben
	fibaro:call(33, "open"); -- 33 = Raffstore Essen Links Oben	
	fibaro:call(41, "open"); -- 41 = Raffstore Gaeste-WC	
	fibaro:call(21, "setValue2", "0"); -- 21 = Raffstore WoZi Links
 	fibaro:call(35, "setValue2", "0"); -- 35 = Raffstore Kueche Schiebelement
	fibaro:call(37, "setValue2", "0"); -- 37 = Raffstore Speisekammer Links
	fibaro:call(39, "setValue2", "0"); -- 39 = Raffstore Speisekammer Rechts 
	fibaro:call(23, "setValue2", "100"); -- 23 = Raffstore WoZi Schiebelement
	fibaro:call(25, "setValue2", "100"); -- 25 = Raffstore WoZi rechts 
	fibaro:call(27, "setValue2", "100"); -- 27 = Raffstore Essen Links Unten
	fibaro:call(29, "setValue2", "100"); -- 29 = Raffstore Essen Rechts Unten
	fibaro:call(31, "setValue2", "100"); -- 31 = Raffstore Essen Rechts Oben
	fibaro:call(33, "setValue2", "100"); -- 33 = Raffstore Essen Links	
	fibaro:call(41, "setValue2", "100"); -- 41 = Raffstore Gaeste-WC

end

Dann drücke ich den S1 doppelt und das Chaos beginnt. Und das hier loggt er:

[DEBUG 18:35:33: Signal 14, es geht rauf]
[DEBUG 18:35:34: Signal 25, Privacy]

Obwohl also nur 14 gesendet wird schlägt auch Signal 25 zu… :frowning: Häh…

Also die Szene wird dadurch gestartet (getriggert), dass an einem deiner drei Module eine Aktion ausgelöst wird:
--[[ %% properties 21 sceneActivation 27 sceneActivation 35 sceneActivation %% weather %% events %% globals --]]
wenn eines der drei Module im Header auslösen, geht er in die Szene und prüft die einzelnen Bedingungen.

was genau meinst Du mit “Chaos beginnt”?

Hallo Hoggle,

ok, dann verstehe ich es richtig: Alle 3 Schalter sind im Header definiert, d.h. jede Aktion der Schalter “triggert” die Szene. ABER: Wenn eine IF Bedingung nicht zutrifft, dann darf auch nichts passieren.

Und genau da läuft was falsch…

Kannst Du mal einen Blick auf mein LUA Skript werfen, welches ich gestern um 4. Mai 2017 um 18:38 gepostet habe. Hier ist für mich klar:
Trigger sind die Taster 21, 27 und 35.
Das hatte ich so eingerichtet und bei einem der Taster “doppelt nach oben” gedrückt. Dann sendet er die 14. Gemäß LUA Skript darf dann nur die erste IF Schleife laufen. Das tut sie aber nicht. Es läuft auch die letzte. Was totaler Quatsch ist. Aber Fakt. Hatte darunter den Log-Auszug geschickt…
Tja, und dann laufen halt die Funktionen “hoch” und “runter” gegeneinander. Das meinte ich mit Chaos.

VG
Niclas

Hi,

gib doch mal via Debug aus, was durch die sceneActivation zurückgegeben wird. Ich gehe zu 100% davon aus, dass die 14 & die 25 zurückgeliefert werden. Du solltest hier mit einer if/elseif-Struktur arbeiten und nicht mit einfachen if-Abfragen.

Gruß

Hi boomx,

bitte entschuldige die späte Antwort.
Das mit dem Debug hatte ich doch bereits, oder meinst Du etwas anderes?

Dann drücke ich den S1 doppelt und das Chaos beginnt. Und das hier loggt er:

[DEBUG 18:35:33: Signal 14, es geht rauf]
[DEBUG 18:35:34: Signal 25, Privacy]

Obwohl also nur 14 gesendet wird schlägt auch Signal 25 zu… :frowning: Häh…

Ich habe es aber zwischenzeitlich, wenn auch über Umwege, gelöst:
Ich habe nun einfach jedem Schalter eine eigene Szene verpasst, d.h. ich “lausche” nun nicht mehr in der selben Szene auf mehrere Schalter sondern habe das nun getrennt. Das funktioniert einwandfrei. Da es nur um 5 Schalter geht ist das noch “vertretbar”.

HG
Niclas