Willkommen auf unserer neuen Forenplattform für das Bus-Profi Forum

Neue Felder für die persönlichen Daten
Man kann jetzt seine öffentlich einsehbare Daten genau bestimmen. Details findet ihr in in diesem Beitrag.

Durch die neue Forensoftware und die Portierung der Daten konnten die Passwörter aus dem alten Forum nicht übernommen werden, bitte lassen Sie sich ein neues Passwort über die Passwort vergessen Funktion zusenden. Sollte es zu Problemen kommen kontaktieren Sie das Bus-Profi Team per E-Mail.

Lua Syntax?

Hard- und Softwarefragen rund Domiq-Module fürs LCN-System
Benutzeravatar

Themenersteller
Beleuchtfix
Administrator
Administrator
Beiträge: 5298
Registriert: Mi 10. Jan 2007, 18:49
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

#1 Lua Syntax?

Beitragvon Beleuchtfix » Mo 1. Apr 2013, 22:38

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


norden
Fleißiges Mitglied
Fleißiges Mitglied
Beiträge: 269
Registriert: Do 20. Nov 2008, 07:46

#2 RE: Lua Syntax?

Beitragvon norden » Mo 1. Apr 2013, 23:49

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

Benutzeravatar

Themenersteller
Beleuchtfix
Administrator
Administrator
Beiträge: 5298
Registriert: Mi 10. Jan 2007, 18:49
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

#3 RE: Lua Syntax?

Beitragvon Beleuchtfix » Di 2. Apr 2013, 11:53

Hallo Dieter,

Danke,so würde es gehen, ich habe nur 12 mögliche Werte, da dachte ich, dass es eleganter geht.
Gruß
Florian


norden
Fleißiges Mitglied
Fleißiges Mitglied
Beiträge: 269
Registriert: Do 20. Nov 2008, 07:46

#4 RE: Lua Syntax?

Beitragvon norden » Di 2. Apr 2013, 13:49

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

Benutzeravatar

Themenersteller
Beleuchtfix
Administrator
Administrator
Beiträge: 5298
Registriert: Mi 10. Jan 2007, 18:49
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

#5 RE: Lua Syntax?

Beitragvon Beleuchtfix » Di 2. Apr 2013, 18:01

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.

Benutzeravatar

Themenersteller
Beleuchtfix
Administrator
Administrator
Beiträge: 5298
Registriert: Mi 10. Jan 2007, 18:49
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

#6 RE: Lua Syntax?

Beitragvon Beleuchtfix » Mi 3. Apr 2013, 21:56

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


coleman
Fingerwundschreiber
Fingerwundschreiber
Beiträge: 110
Registriert: Mo 4. Jun 2012, 22:37
Kontaktdaten:

#7 RE: Lua Syntax?

Beitragvon coleman » Sa 1. Jun 2013, 00:42

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

Benutzeravatar

Themenersteller
Beleuchtfix
Administrator
Administrator
Beiträge: 5298
Registriert: Mi 10. Jan 2007, 18:49
Hat sich bedankt: 4 Mal
Danksagung erhalten: 16 Mal
Kontaktdaten:

#8 RE: Lua Syntax?

Beitragvon Beleuchtfix » Mi 5. Jun 2013, 11:45

Hallo Marcel,

nach meinem Gefühl müsste es eigentlich heißen

Code: Alles auswählen

sensor.onchange = notify()

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

Benutzeravatar

Thomas
Alleswisser
Alleswisser
Beiträge: 5742
Registriert: Mo 21. Apr 2008, 20:03
Hat sich bedankt: 20 Mal
Danksagung erhalten: 13 Mal

#9 RE: Lua Syntax?

Beitragvon Thomas » Mi 5. Jun 2013, 22:07

[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
lg Thomas


coleman
Fingerwundschreiber
Fingerwundschreiber
Beiträge: 110
Registriert: Mo 4. Jun 2012, 22:37
Kontaktdaten:

#10 RE: Lua Syntax?

Beitragvon coleman » Sa 8. Jun 2013, 02:32

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.


Zurück zu „Domiq-Module - DOMIQ Sp. z o.o.“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste