Seite 1 von 2
#1 Lua Syntax?
Verfasst: Mo 1. Apr 2013, 22:38
von Beleuchtfix
Ich stehe momentan vor einem Problem:
Ich will Relais steuern und habe Variablen in Strings definiert (up_1 und down_1) Jetzt übergebe ich der Funktion den Wert
task mit z.B. 'up_1'. Wie bekomme ich jetzt den String der Variablen up_1 zu weiteren Auswertung?
Ich möchte also
up_1 übergeben und
'11------' benutzen. Ich hoffe, dass ich die Frage halbwegs verständlich stellen konnte.
Code: Alles auswählen
function roll_rel_run(mod,motor,task,pos) --
local up_1 = '11------'
local down_1 = '10------'
myresult = .... (task)....
command ('C.LCN.relays.0.'..mod..'='..myresult)
end
Gruß
Florian
#2 RE: Lua Syntax?
Verfasst: Mo 1. Apr 2013, 23:49
von norden
Hallo Florian,
wenn ich Dich richtg verstanden habe vielleicht so:
Code: Alles auswählen
roll_rel_run(x,x,'down_1',x)
function roll_rel_run(mod,motor,task,pos) --
if
task == 'up_1' then task = '11------'
elseif
task == 'down_1' then task ='10------'
end
command ('C.LCN.relays.0.'..mod..'='..task)
end
Gruß
Dieter
#3 RE: Lua Syntax?
Verfasst: Di 2. Apr 2013, 11:53
von Beleuchtfix
Hallo Dieter,
Danke,so würde es gehen, ich habe nur 12 mögliche Werte, da dachte ich, dass es eleganter geht.
Gruß
Florian
#4 RE: Lua Syntax?
Verfasst: Di 2. Apr 2013, 13:49
von norden
Hallo Florian,
Du könntest auch zwei Tabellen erstellen und dann den Aufruf der Funktion etwas anders machen.
task müsste dann z.B. down[1] statt down_1 sein
Gruß
Dieter
Code: Alles auswählen
roll_rel_run(x,x,down[2],x)
function roll_rel_run(mod,motor,myresult,pos)
local up = {"11------","--11----","----11--"}
local down = {"10------","--10----","----10--"}
command ('C.LCN.relays.0.'..mod..'='..myresult)
end
#5 RE: Lua Syntax?
Verfasst: Di 2. Apr 2013, 18:01
von Beleuchtfix
Das gefällt mir schon besser

werde ich testen. Normalerweise komme ich auch gut zurecht, mir dir Variablennamen "zusammenzusetzen" aber irgendwas ist hier anders.
Gruß
Florian, der sich vielleicht doch noch ein Lua Buch kaufen solle.
#6 RE: Lua Syntax?
Verfasst: Mi 3. Apr 2013, 21:56
von Beleuchtfix
Jetzt habe ich es gefunden, das Wesentliche ist, dass ich die Variablen nicht als local deklariere. Wenn ich das nicht tue, kann ich nur einen String 'up[3]' übergeben, und damit bekomme ich nicht die Variable ausgelesen-
der Aufruf:
[code= php]
LOGIC=roll_rel_run(121,3,up[3],0)
up = {'11------';'--11----';'----11--';'------11'}
down = { '10------';'--10----';'----10--';'------10'}
function roll_rel_run(mod,motor,_task,pos) --
print('Task '.._task) --> Task up[3]
print('Motor '..motor) --> Motor 3
value = (_task)
print('Value '..value) --> ----11--
print (up[3]) --> ----11--
test = _task
print(test)
end[/code]
Auch wenn es geht, eine Frage bleibt, wie kann ich den Wert einer Variablen (String) als Variablenname zur Abfrage verwenden.
Gruß
Florian
#7 RE: Lua Syntax?
Verfasst: Sa 1. Jun 2013, 00:42
von coleman
Hallo Leute,
habe ein kleines Problem in LUA.
Ich möchte gerne den Befehl bei einem bestimmten Sensor oder Relais Status auslösen also LCN.relay.x.x.1=1 oder LCN.sensor.x.x.1=0.
Zur Zeit funktioniert das nur bei Änderung.
Kann mir einer weiter helfen.
uhrzeit = use 'VAR.UHR'
sensor = use 'LCN.sensor.0.5.7'
function notify()
local t1 = 0
t1=uhrzeit.value
-- command ("C.REMOTE.notify=Klingel " .. t1)
print (t1)
end
sensor.onchange = notify
mfg Marcel
#8 RE: Lua Syntax?
Verfasst: Mi 5. Jun 2013, 11:45
von Beleuchtfix
Hallo Marcel,
nach meinem Gefühl müsste es eigentlich heißen
Aber ich verstehe deine Fragestellung nicht genau, die Aktion wird bei einer Änderung des Sensors ausgeführt. Ansonsten musst du den Sensor regelmäßig abfragen bzw die Funktion notify() über einen Timer aufrufen.
Viel Erfolg
Florian
#9 RE: Lua Syntax?
Verfasst: Mi 5. Jun 2013, 22:07
von Thomas
[zitat]sensor.onchange = notify[/zitat]
So nutze ich das auch, es geht.
Aber auch ich verstehe nicht wirklich, was du machen möchtest.
Im Moment sollte die Funktion, immer beim "Statuswechsel" von Modull5 B7 tun.
gruss thomas
#10 RE: Lua Syntax?
Verfasst: Sa 8. Jun 2013, 02:32
von coleman
Hallo Leute,
Also was ich meine. Ich möchte das Script nur dann ausführen wenn der Sensor = 1 ist.
In diesem fall bekomme ich immer zwei Meldungen und zwar wenn der Sensor auf 1 wechselt und dann wieder wenn er zurück setzt auf 0.
Das selbe gilt natürlich bei der Abfrage eines Relais.
Ich möchte jedoch nur bei einem bestimmten Status wie 0 oder 1 das Script ausführen und nicht allgemein bei jedem Wechsel.
Ich würde mich echt freuen wenn ihr mir bei der Lösung helfen könntet.
Danke im voraus.
MfG Marcel.