Remotec Basisscript für 8 fach Remote

Hallo Leute,
Ich habe heute eine Remotec Scene Master ZRC90-EU zum testen bekommen.
Sie kann über ein zentrales Szenen Skript bedient werden und ich habe euch hier mein Basis Skript mit Debug Meldungen für die Fibaro HC2 dafür reingestellt.
Vielleicht mag es ja jemand als Basis nutzen…

Ihr braucht nur die Zahl im “CentralSceneEvent” in der 3.Zeile, gegen die ID Eures Grätes tauschen

--[[
%% properties
%% events
465 CentralSceneEvent
%% globals
--]]
-- Debug in Farben
Debug=function (color,message ) fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span")) end

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

------------------------------------------ 
------------- ### Taste 1 ### ------------ 
------------------------------------------ 
if (pressSource_Attribute == "Pressed" and pressSource_Key == 1) then
	Debug("green",(os.date("%d.%m.%Y - Taste 1 - 1 x gedrückt")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 1) then
	Debug("green",(os.date("%d.%m.%Y - Taste 1 - 2 x gedrückt")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 1) then
	Debug("green",(os.date("%d.%m.%Y - Taste 1 - gehalten")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "Released" and pressSource_Key == 1) then
	Debug("green",(os.date("%d.%m.%Y - Taste 1 - losgelassen")))
	-- ersetzen durch Befehl ...

------------------------------------------ 
------------- ### Taste 2 ### ------------ 
------------------------------------------ 
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 2) then
	Debug("green",(os.date("%d.%m.%Y - Taste 2 - 1 x gedrückt")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 2) then
	Debug("green",(os.date("%d.%m.%Y - Taste 2 - 2 x gedrückt")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 2) then
	Debug("green",(os.date("%d.%m.%Y - Taste 2 - gehalten")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "Released" and pressSource_Key == 2) then
	Debug("green",(os.date("%d.%m.%Y - Taste 2 - losgelassen")))
	-- ersetzen durch Befehl ...

------------------------------------------ 
------------- ### Taste 3 ### ------------ 
------------------------------------------ 
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 3) then
	Debug("green",(os.date("%d.%m.%Y - Taste 3 - 1 x gedrückt")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 3) then
	Debug("green",(os.date("%d.%m.%Y - Taste 3 - 2 x gedrückt")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 3) then
	Debug("green",(os.date("%d.%m.%Y - Taste 3 - gehalten")))
	-- ersetzen durch Befehl ...
elseif (pressSource_Attribute == "Released" and pressSource_Key == 3) then
	Debug("green",(os.date("%d.%m.%Y - Taste 3 - losgelassen")))
	-- ersetzen durch Befehl ...

------------------------------------------ 
------------- ### Taste 4 ### ------------ 
------------------------------------------ 
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 4) then
	Debug("green",(os.date("%d.%m.%Y - Taste 4 - 1 x gedrückt")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 4) then
	Debug("green",(os.date("%d.%m.%Y - Taste 4 - 2 x gedrückt")))
  -- ersetzen durch Befehl ...	
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 4) then
	Debug("green",(os.date("%d.%m.%Y - Taste 4 - gehalten")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Released" and pressSource_Key == 4) then
	Debug("green",(os.date("%d.%m.%Y - Taste 4 - losgelassen")))
	-- ersetzen durch Befehl ...

------------------------------------------ 
------------- ### Taste 5 ### ------------ 
------------------------------------------ 
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 5) then
	Debug("green",(os.date("%d.%m.%Y - Taste 5 - 1 x gedrückt")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 5) then
	Debug("green",(os.date("%d.%m.%Y - Taste 5 - 2 x gedrückt")))
  -- ersetzen durch Befehl ...	
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 5) then
	Debug("green",(os.date("%d.%m.%Y - Taste 5 - gehalten")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Released" and pressSource_Key == 5) then
	Debug("green",(os.date("%d.%m.%Y - Taste 5 - losgelassen")))
	-- ersetzen durch Befehl ...

------------------------------------------ 
------------- ### Taste 6 ### ------------ 
------------------------------------------ 
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 6) then
	Debug("green",(os.date("%d.%m.%Y - Taste 6 - 1 x gedrückt")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 6) then
	Debug("green",(os.date("%d.%m.%Y - Taste 6 - 2 x gedrückt")))
  -- ersetzen durch Befehl ...	
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 6) then
	Debug("green",(os.date("%d.%m.%Y - Taste 6 - gehalten")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Released" and pressSource_Key == 6) then
	Debug("green",(os.date("%d.%m.%Y - Taste 6 - losgelassen")))
	-- ersetzen durch Befehl ...

------------------------------------------ 
------------- ### Taste 7 ### ------------ 
------------------------------------------ 
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 7) then
	Debug("green",(os.date("%d.%m.%Y - Taste 7 - 1 x gedrückt")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 7) then
	Debug("green",(os.date("%d.%m.%Y - Taste 7 - 2 x gedrückt")))
  -- ersetzen durch Befehl ...	
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 7) then
	Debug("green",(os.date("%d.%m.%Y - Taste 7 - gehalten")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Released" and pressSource_Key == 7) then
	Debug("green",(os.date("%d.%m.%Y - Taste 7 - losgelassen")))
	-- ersetzen durch Befehl ...

------------------------------------------ 
------------- ### Taste 8 ### ------------ 
------------------------------------------ 
elseif (pressSource_Attribute == "Pressed" and pressSource_Key == 8) then
	Debug("green",(os.date("%d.%m.%Y - Taste 8 - 1 x gedrückt")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Pressed2" and pressSource_Key == 8) then
	Debug("green",(os.date("%d.%m.%Y - Taste 8 - 2 x gedrückt")))
  -- ersetzen durch Befehl ...	
elseif (pressSource_Attribute == "HeldDown" and pressSource_Key == 8) then
	Debug("green",(os.date("%d.%m.%Y - Taste 8 - gehalten")))
	-- ersetzen durch Befehl 
elseif (pressSource_Attribute == "Released" and pressSource_Key == 8) then
	Debug("green",(os.date("%d.%m.%Y - Taste 8 - losgelassen")))
	-- ersetzen durch Befehl ...
end

Falls jemand von euch ein Icon für die Fibaro HC2 von diesem Ding hat würde ich mich über einen Link freuen :wink:

Hab mir inzwischen selbst ein Icon gemacht, anbei für euch …

Remcon-Scene-Master.png

Vielen Dank für das Skript! Funktioniert ohne Probleme.

Freut mich, danke für dein Feedback!

Hallo,

ich habe heute die Fernbedienung in mein HC2 includiert. Dein Script hat auf Anhieb funktioniert.

Vielen Dank dass du das Skript und sogar ein passendes Icon zur Verfügung stellst.

Gruß Manuel

Gerne!
Es macht mir viel Freude, zu sehen wie wir hier alle gemeinsam voneinander profitieren :wink:

Vielen Dank für die gute Arbeit. Funktioniert auch bei mir auf anhieb.

mfg
ATARI

Moin zusammen.

Wie kann ich aus einer LUA Scene heraus einen Tastendruck der Remotec simulieren?
Hab bisher hier nichts gefunden.

ATARI

Hallo ich habe einen QA gebaut zum Testen…
Schau mal möglicherweise kannst du das gebrauchen.
Erst die zugehörige Szene :

DECLARATIONS (Bedingungen/Trigger)

–[[
Die ID 561 ist ein Binärsensor zum Testen.
Die ID 569 ist die ID der Quick-APP.
Angelegt ist die QA als Multilevel-Sensor
Die Abfrage auf den ID 569 erfolgt auf ungleich 0
Bei einem Tastendruck wird in dem Beispiel die Nummer der Taste ausgegeben 1-4
Nach 500ms wird der Wert wieder 0.
Damit auch bei mehrmaligen drücken der Taste eine Reaktion ausgelöst wird.
–]]
{
conditions = { {
id = 561,
isTrigger = true,
operator = „==“,
property = „state“,
type = „device“,
value = true
}, {
id = 569,
isTrigger = true,
operator = „!=“,
property = „value“,
type = „device“,
value = 0
} },
operator = „any“
}


AKTION

–[[
Beispiel Bedienfeld
Wenn eine Taste auf dem Bedienfeld betätigt wird so verändert sich der Wert „value“.
Abfrage und Trigger ist damit also möglich.
So wird abgefragt :
fibaro.getValue(bedienfeld,„value“)
Der wert 0 sagt keine Taste ist betätigt.
1.0 besagt Taste 1 ist betätigt worden usw.
Die Infofelder wie auch die Tasten können vom LUA-Programm aus beschriftet werden.
So wird der Text in die Felder gegeben :
fibaro.call(bedienfeld,„Label_1“, „Beliebigen Text auf das Feld ausgeben“)
usw.
Das ist eine einfache Möglichkeit zu Programme zu Testen oder Alarmanlagen zu bedienen usw.
Ich habe das hier möglichst einfach gehalten damit man die Funktion leich versteht.
Die Quickapp ist eigendlich für etwas Anderes vorgesehen aber so etwas kann man auch damit machen.
Die Darstellung bei Android funktioniert Momentan noch nicht, bei IOS ?
Viel Spaas damit !
–]]
–ID des Bedienfeldes
bedienfeld = 569
test_eingang = 561
–print("Start ", json.encode(sourceTrigger.id))
–print("Wert = ",fibaro.getValue(bedienfeld,„value“))
if (json.encode(sourceTrigger.property) == ‚„execute“‘) then
–print('Szene manuell ausgeführt - UserID: ’ …json.encode(sourceTrigger.id))
– Bedienfeld Manuel nicht vorgesehen !
elseif tonumber(json.encode(sourceTrigger.id)) == test_eingang then – Taster hat getriggert
–print(„Meldung ausgeben“)
fibaro.call(bedienfeld,„Label_1“, „Beliebigen Text auf das Feld ausgeben“)
elseif tonumber(json.encode(sourceTrigger.id)) == bedienfeld then – Bedienfeld hat getriggert
if fibaro.getValue(bedienfeld,„value“) == „1.0“ then
print(„Taste 1“) – Die Taste mit der Nummer 1 wurde betätigt
elseif fibaro.getValue(bedienfeld,„value“) == „2.0“ then
print(„Taste 2“) – Die Taste mit der Nummer 2 wurde betätigt
elseif fibaro.getValue(bedienfeld,„value“) == „3.0“ then
print(„Taste 3“) – Die Taste mit der Nummer 3 wurde betätigt
elseif fibaro.getValue(bedienfeld,„value“) == „4.0“ then
print(„Taste 4“) – Die Taste mit der Nummer 4 wurde betätigt
end
end


Jetzt der Quick-App Code für einen Multilevel-Sensor


--------------------- Ausgabe von Meldungen in 3 Meldefelder -------------------------------------

– Aufruf in der Szene mit fibaro.call(ID,„label_1“, „Das ist eine Alarmmeldung“)
– ID = ID der QuickApp, „Name der Function“, „Auszugebender Text“
function QuickApp:label_1(arg1)
–self:debug(„label_1“, arg1)
self:updateView(„label_1“, „text“, arg1) – Rauchmeldung auf dem Platz label_1 anzeigen
end
function QuickApp:label_2(arg1)
–self:debug(„label_2“, arg1)
self:updateView(„label_2“, „text“, arg1) – Heizungsmeldung auf dem Platz label_1 anzeigen
end
function QuickApp:Alarmhinweis_ausgeben(arg1)
–self:debug(„label_3“, arg1)
self:updateView(„label_3“, „text“, arg1) – Alarmhinweismeldung auf dem Platz label_2 anzeigen
end
function QuickApp:Trennlinie(arg1)
–self:debug(„Trennlinie“, arg1)
self:updateView(„Trennlinie“, „text“, arg1) – Alarmmeldung auf dem Platz label_3 anzeigen
end

------------------- Abfrage der Tastenbetätigung und Reaktion darauf -----------------------------

– Abfrage in der Szene per Trigger und dann der Wert als Tastennummer
–Der Wert der Tastennummer bleibt für 500ms bestehen und geht dann auf 0
function QuickApp:betaetigt_1() --Feuermeldung löschen
–self:debug(„Tase - 1“)
self:updateView(„label_1“, „text“, „Keine Meldung“)
self:updateView(„button1“, „text“, „betätigt“)
fibaro.sleep(500) --Anzeigezeit für betätigt
self:updateView(„button1“, „text“, „Taste - 1“)
self:updateProperty(‚value‘, 1) – binary switch on
fibaro.sleep(500)
self:updateProperty(‚value‘, 0) – binary switch off
end
function QuickApp:betaetigt_2() --Heizungsmeldung löschen
–self:debug(„Tase - 2“)
self:updateView(„label_1“, „text“, „Keine Meldung“)
self:updateView(„button2“, „text“, „betätigt“)
fibaro.sleep(500) --Anzeigezeit für betätigt
self:updateView(„button2“, „text“, „Taste - 2“)
self:updateProperty(‚value‘, 2) – binary switch on
fibaro.sleep(500)
self:updateProperty(‚value‘, 0) – binary switch off
end
function QuickApp:betaetigt_3() --Alarm scharfschalten
–self:debug(„Tase - 3“)
self:updateView(„label_3“, „text“, „Text-bet. 3“)
self:updateView(„button3“, „text“, „betätigt“)
fibaro.sleep(500) --Anzeigezeit für betätigt
self:updateView(„button3“, „text“, „Taste - 3“)
self:updateProperty(‚value‘, 3) – binary switch on
fibaro.sleep(500)
self:updateProperty(‚value‘, 0) – binary switch off
end
function QuickApp:betaetigt_4() --Alarmanlage endschärfen
–self:debug(„Tase - 4“)
self:updateView(„label_3“, „text“, „Text-bet. 4“)
self:updateView(„button4“, „text“, „betätigt“)
fibaro.sleep(500) --Anzeigezeit für betätigt
self:updateView(„button4“, „text“, „Taste - 4“)
self:updateProperty(‚value‘, 4) – binary switch on
fibaro.sleep(500)
self:updateProperty(‚value‘, 0) – binary switch off
end

---------------------------- Initialisierung der Quick-App ---------------------------------------

function QuickApp:onInit() --Aufrufe beim Initialisieren der APP
self:updateView(„label_1“, „text“, „Keine Meldung“) – Text auf platz label_1 ausgaben
self:updateView(„label_2“, „text“, „Meldung oder Festtext“)-- Text auf platz label_2 ausgaben
self:updateView(„label_3“, „text“, „Meldung :“)-- Text auf platz label_3 ausgaben
end

Die Datei bedienfel.txt habe ich beigefügt, das erspart euch Arbeit.
Umbenennen in bedienfeld.fqa.
Viel Spas mit dem Ausprobieren !
Bedienfeld.txt (7,2 KB)

So sieht das dann aus.

Gruss Frank

Moin Frank.

Vielen Dank für Deine rasche Antwort.
Ich glaube Du hast mich aber falsch verstanden.
Ich nutze z.Zt. o.g. Szene von pblacky, die funzt tadellos.

Ich suche jetzt eine Möglichkeit aus einer anderen Szene
heraus so zu tun, als wäre z.B. die Taste 6 am Remotec
betätigt worden, ohne das die Taste tatsächlich gedrückt
wurde.

Gruß
ATARI

erweitere die einfach !

sehe ich das richtig? Deine QA ist für HC3, oder?
Ich hab ne HC2.

Gruß
ATARI

Ui SORRY hatte ich nicht gesehen !
Natürlich für den HC3.

kein Ding.
Was gäbe es denn sonst für eine Möglichkeit für mein Problem?
Das Script (LUA-Szene) von pblacky läuft super.
Eine Möglichkeit wäre ja, das ich diese Szene mit einem vordefinierten
Wert (z.B. „6“ für Taste 6) aufrufe, weiß aber nicht wie und ob das
überhaupt so geht.

Gruß
ATARI

Ich kann leider nur für meine sprechen.
Ich könnte die ohne Probleme auf 8 Tasten erweitern aber das hilft dir nicht weiter.
Die obere Szene ist für 8 Tasten.
Ich kann die aber nicht testen Sorry ich bin hier raus leider kann ich dir so nicht helfen.

@Berges01
Null Problemo, entweder es gibt eine Lösung oder auch nicht.

Gruß
ATARI