Szenen Programm für NodOn Wall Switch

Hallo Leute,
Ich habe mir zum Testen vor Kurzem einen NodOn Wandschalter und einen NodOn Octane Remote bestellt.
Grund dafür war, dass mein Soft Remote mit dem Szenenskript von hier aus dem Forum (finde den Link gerade nicht) wunderbar funktioniert hat und der Popp Schalter in meinem Test zu viel Strom verbraucht!
Nun habe ich versucht das bestehende Skript für den NodOn Wandschalter zu adaptieren, habe folgendes gemacht:

.) Wandschalter im Gateway Modus an die HC2 angelernt
.) Alle Parameter zugefügt, die ich für Nötig erachtet habe (lt. Anleitung siehe Anhang)
.) folgendes Script erstellt

--[[
%% properties
226 sceneActivation
%% globals
--]]
 
local id= 226; -- Hier die und in Zeile 3 die ID des NodOn Moduls eintragen
local name = fibaro:getName(id)
 
if (tonumber(fibaro:getValue(id, "sceneActivation"))==10)
then
 local deviceValue1 = tonumber(fibaro:getValue(218, "value"));
	if (deviceValue1 > 0) then
		fibaro:call(218, "open");
	else
		fibaro:call(218, "close");
	end  
fibaro:debug("1 x drücken auf Taste 1 --> Modul: "..name); 
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==13)
then
  fibaro:debug("Doppelt drücken auf Taste 1 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==12)
then
fibaro:debug("Lange drücken auf Taste 1 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==11)
then
fibaro:debug("Loslassen nach langem drücken auf Taste 1 --> Modul: "..name)
 
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==20)
then
  local deviceValue1 = tonumber(fibaro:getValue(38, "value"));
	if (deviceValue1 > 0) then
		fibaro:call(185, "turnOff");
	else
		fibaro:call(185, "turnOn");
	end
fibaro:debug("1 x drücken auf Taste 2 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==23)
then
fibaro:debug("Doppelt drücken auf Taste 2 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==22)
then
fibaro:debug("Lange drücken auf Taste 2 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==21)
then
fibaro:debug("Loslassen nach langem drücken auf Taste 2 --> Modul: "..name)
 
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==30)
then
  local deviceValue1 = tonumber(fibaro:getValue(41, "value"));
	if (deviceValue1 > 0) then
		fibaro:call(41, "turnOff");
	else
		fibaro:call(41, "turnOn");
	end
fibaro:debug("1 x drücken auf Taste 3 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==33)
then
fibaro:debug("Doppelt drücken auf Taste 3 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==32)
then
fibaro:debug("Lange drücken auf Taste 3 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==31)
then
fibaro:debug("Loslassen nach langem drücken auf Taste 3 --> Modul: "..name)
 
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==40)
then
fibaro:debug("1 x drücken auf Taste 4 --> Modul: "..name);
local deviceValue1 = tonumber(fibaro:getValue(215, "value"));
	if (deviceValue1 > 0) then
		fibaro:call(215, "turnOff");
	else
		fibaro:call(215, "turnOn");
	end
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==43)
then
fibaro:debug("Doppelt drücken auf Taste 4 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==42)
then
fibaro:debug("Lange drücken auf Taste 4 --> Modul: "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==41)
then
fibaro:debug("Loslassen nach langem drücken auf Taste 4 --> Modul: "..name)
end

Leider klappt es noch nicht Szenen aufzurufen ;-(
Hat jemand von Euch den Schalter mit Szenensteuerung schon im Einsatz?
Habt ihr einen Tipp, was ich noch falsch mache??

NodOn-Switch-Parameter.jpg

Hi,

ich nutze den NodOn Wandschalter mit der centralSceneEvent-Klasse. Funktioniert ohne Probleme.

Gruß

Moin!

Was sagt denn der debug?

Ich habe jetzt mal versucht den Schalter über ein Blockszene anzusteuern, das funktioniert!
Am Schalter liegts also nicht.
Habe mir auch die Einstellungen vom funktionierenden Soft Remote nochmal angesehen, dort habe ich KEINE zusätzlichen Parameter hinzugefügt.
Ich hatte gehofft, dass alle Produkte von NodOn mit der gleichen Logik ansteuerbar sind, offensichtlich ist das nicht so ;-(

@basti: Ich kann drücken was ich will, im Debugfenster kommt nix!

@boomx: Kannst du mir einen Tipp geben wo ich das mit der “Central Scene Event Klasse” einstelle, bin leider noch nicht so ein Profi wie du :wink:
Was ich bereits rausgefunden hab, dass mein Block TEST Skript in LUA übersetzt so aussieht:

--[[
%% properties
%% events
226 CentralSceneEvent 1 Pressed
%% globals
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( true )
or
startSource["type"] == "other"
)
then
	local deviceValue1 = tonumber(fibaro:getValue(185, "value"));
	if (deviceValue1 > 0) then
		fibaro:call(185, "turnOff");
	else
		fibaro:call(185, "turnOn");
	end
end

Dort steht irgendwas von Central Scene Event!
Die Frage ist nur, wie ich ein zentrales Skript für ALLE Tasten daraus machen kann, wie im Beispiel oben mit dem Soft Remote.

Sorry für die vielleicht blöden Fragen, aber ich habe diese Geschichte mit den Szenen noch nichzt wirklich verstanden.
Und eine für mich verständliche Doku, habe ich auch noch nicht gefunden ;-(

Hi,

schau dir mal den Artikel zu dem Fibaro Button an, dort gibt es ein fertiges Skript, welches du ohne Probleme erweitern kannst.

https://www.siio.de/kleine-lua-scripte-teil-9-fibaro-button-lua/

Gruß

Danke Boomx, das sieht sehr übersichtlich aus!
Wenn ich das Skript folgendermassen abändere, sollte es mit dem Nod on funktionieren?

--[[
%% properties
%% events
226 CentralSceneEvent
%% globals
--]]
 
local button_source = fibaro:getSourceTrigger()["event"]["data"]
 
if (tostring(button_source["keyAttribute"]) == "Key 1 Pressed") then
  	fibaro:debug('Button 1 gedrückt.')
elseif (tostring(button_source["keyAttribute"]) == "Key 2 Pressed") then
  	fibaro:debug('Button 2 gedrückt.')
elseif (tostring(button_source["keyAttribute"]) == "Key 3 Pressed") then
  	fibaro:debug('Button 3 gedrückt.')
elseif (tostring(button_source["keyAttribute"]) == "Key 4 Pressed") then
  	fibaro:debug('Button 4 gedrückt.')
end

Als “KeyAttribute” nehme ich den Syntax den ich im Blockskript finde (siehe Anhang)
Soweit richtig verstanden ??

Bin zwar jetzt nicht vor meiner HC2, kann aber das Skript vorbereiten und dann daheim probieren…

KeyAttribut.jpg

Bei meinem NodOn ist es so:

--[[
%% properties
%% events
381 CentralSceneEvent
%% globals
--]]

local pressSource = fibaro:getSourceTrigger()["event"]["data"]
--fibaro:debug(json.encode(pressSource))
local pressSource_Attribute = tostring(pressSource["keyAttribute"])
local pressSource_Key = pressSource["keyId"]

if (pressSource_Attribute == "Pressed" and pressSource_Key == 1) then
  	fibaro:debug('Pressed - Button 1') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 2) then
  	fibaro:debug('Pressed - Button 2') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 3) then
  	fibaro:debug('Pressed - Button 3') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 4) then
  	fibaro:debug('Pressed - Button 4') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 1) then
  	fibaro:debug('2x Pressed - Button 1') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 2) then
  	fibaro:debug('2x Pressed - Button 2') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 3) then
  	fibaro:debug('2x Pressed - Button 3') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 4) then
  	fibaro:debug('2x Pressed - Button 4') -- replace with scene/device/VD
end

Ok, danke!
Werd ich sowohl mit dem NodOn Wandschalter als auch mit dem NodOn Octane Remote testen und mich hier mit dem Ergebnis melden…
Vielleicht schaff ich für die Beiden ein Muster mit allen Tastenfunktionen, welches ihr dann bei den Beispiel Skripten ablegen könnt :wink:
Natürlich nur wenn sie nicht eh gleich sind!

Wird aber etwas dauern, da ich derzeit leider nicht oft zum “spielen” mit meiner HC2 komme …

Habe nach Anleitung von boomx eine Vorlage erstellt, die in meinem Test bei BEIDEN NodOn Schaltern funktioniert.
Einzig wenn mal die Tasten lange drückt, meldet der Debug MEHRERE Male lange gedrückt, aber das ist offensichtlich normal, oder???

Hier das Skript für alle die es mal ausführlich tsten wollen:

--[[
%% properties
%% events
-- Hier die ID eurer NodOn Fernsteuerung eintragen!!
208 CentralSceneEvent 
%% globals
--]]

local pressSource = fibaro:getSourceTrigger()["event"]["data"]
--fibaro:debug(json.encode(pressSource))
local pressSource_Attribute = tostring(pressSource["keyAttribute"])
local pressSource_Key = pressSource["keyId"]

-- Taste - 1 x gedrückt ------------------------------------------------------
if (pressSource_Attribute == "Pressed" and pressSource_Key == 1) then
  	fibaro:debug('Taste1 - 1 x gedrückt') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 2) then
  	fibaro:debug('Taste2 - 1 x gedrückt') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 3) then
  	fibaro:debug('Taste3 - 1 x gedrückt') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 4) then
  	fibaro:debug('Taste4 - 1 x gedrückt') -- replace with scene/device/VD
-- Taste - 2 x gedrückt ------------------------------------------------------
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 1) then
  	fibaro:debug('Taste1 - 2 x gedrückt') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 2) then
  	fibaro:debug('Taste2 - 2 x gedrückt') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 3) then
  	fibaro:debug('Taste3 - 2 x gedrückt') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 4) then
  	fibaro:debug('Taste4 - 2 x gedrückt') -- replace with scene/device/VD
-- Taste gehalten ---------------------------------------------------
	elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 1) then
  	fibaro:debug('Taste1 - gehalten') -- replace with scene/device/VD
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 2) then
  	fibaro:debug('Taste2 - gehalten') -- replace with scene/device/VD
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 3) then
  	fibaro:debug('Taste3 - gehalten') -- replace with scene/device/VD
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 4) then
  	fibaro:debug('Taste4 - gehalten') -- replace with scene/device/VD
-- Taste losgelassen ---------------------------------------------------
	elseif (pressSource_Attribute == "Released" and pressSource_Key == 1) then
  	fibaro:debug('Taste1 - losgelassen') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Released" and pressSource_Key == 2) then
  	fibaro:debug('Taste2 - losgelassen') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Released" and pressSource_Key == 3) then
  	fibaro:debug('Taste3 - losgelassen') -- replace with scene/device/VD
elseif (pressSource_Attribute == "Released" and pressSource_Key == 4) then
  	fibaro:debug('Taste4 - losgelassen') -- replace with scene/device/VD
end

Danke boomx für die hilfreichen Hinweise!!

Hallo,

ich bekomme das Script nicht zum Laufen unter 4.100. Habe den Schalter nodon CRC-3-6-0x (Softremote) und bekomme folgende Meldung beim Starten der Szene:

[DEBUG] 18:33:07: line 9: attempt to index field ‘event’ (a nil value)

Hat jemand das gleiche Problem?

Grüße

Ich habe das Update auf 4.100 gestern gemacht und habe mit einem meiner NodOns auch Probleme!
Zumindest mit dem wo ich versucht habe die Gerätevorlagen durch “leichte Geräteneukonfiguration” zu ergänzen ;-(
Seither reagiert der Schalter auf keine Szenen mehr!

@Hannibal: Du nutzt nicht die centralSceneEvent-Klasse, sondern sceneActivation. Da funktioniert das Skript nicht. Du musst mal in der Anleitung schauen, ob der Schalter diese Klasse unterstützt.

@pblacky: Die Parameter sind nicht notwendig. Diese können auch manuell gesetzt werden. Für die reine Funktion wird aber weder ein Template, noch Parameter benötigt.

Gruß

Bei meinem Octan funzt mit dem Script von pblacky leider der Doppelklick nicht. Alles andere läuft.
Kennt jemand das Phänomen?

Lass dir doch mal den json.encode(pressSource) ausgeben. Vielleicht ist der Inhalt da anders.

Gruß

Habe meinen NodOn Wall Switch nun gelösht und neu angelernt, jetzt funktioniert er wieder!

@basti
Habe die Doppelclick Funktion mit der 4.092 getestet und selbst im Einsatz gehabt, hat also funktioniert!
Aber du hast recht, seit der 4.100 klappt das bei mir auch nicht mehr.
Dafür funktioniert jetzt das lange drücken und loslassen problemlos!

@boomx
Ich habe jetzt gerade versucht die Codes über eine Blockszene zu suchen und festgestellt, dass dort das “doppelt drücken” seit dem Update verwschwunden ist!!!
Wie kann ich den json.encode(pressSource) sonst ausgeben lassen?

Steht kommentiert in der Szene von dir (Zeile 10)…

Gruß

Ups, das kommt davon wenn man Skripte verwendet die man nicht zu 100% verstanden hat :wink:
Danke boomx für diene Geduld!

Habe das mal aktiviert und getestet:
Bei 1 x oder lange drücken kommt der passende Code, den ich ihm script verwendet habe, retour.
Bei 2 x drücken wird KEIN Code zurückgegeben!!

Eigenartig aber ich bilde mir fest ein, dass ich den “Doppelclick” mit diesem Schalter schon verwendet hab !?
Es haben sich seither 2 Dinge geändert:

1.) Habe jetzt 4.100 statt 4.90
2.) Ich habe den Switch mit 4.100 neu angelernt.

Werd mal prüfen, wie sich die anderen beiden NodOn Soft und Octan verhalten…

Der NodOn Octan gibt beim 2 x drücken “pressed2” aus.
Offensichtlich sind die Sender unterschiedlich ausgestattet !?

Ich bilde mir eigentlich auch ein, dass der Doppelklick schon funktioniert hatte, und das war noch letzte Woche … danach habe ich am Setup nichts geändert.
Ja, auch mit JSON kommt im Debug beim 2x klick nichts.

Dann triggert der Doppelklick die Szene nicht, weshalb dann natürlich nichts passiert. Wüsste nicht, wie man das fixen kann.

Gruß