Hallo,
Ich habe folgende einfache Aufgabe, die ich jedoch leider nicht erfolgreich umsetzen kann.
Ich möchte in Remote eine Statusangabe machen ob ein odere mehrere Leuchten in einem bestimmten Stockwerk brennen.
Dazu habe ich folgende Einträge unter dem Tab Logic im Base Modul erzeugt. Dei Variable VAR.Licht_UG sollte dabei
einen Wert 0 erhalten wenn keine Leuchten brennen. Das funktioniert jedoch offenbar nicht. Ein Einschalten oder Ausschalten von Leuchten
in diesem Stockwerk führt nicht zu einer Aktualisierung der Variabele. Der Wert ist immer 1. Was läuft hier schief? Vielleicht verstehe ich nicht
wann dieses onchange zu einer Ausführung der Funktion Status-Licht_UG führt.
Herzlichen Dank für Kommentare und Hilfe.
-- Licht UG --
Licht_UG = use 'VAR.Licht_UG'
Licht_UG_Hobby = use 'LCN.output.0.11.1'
Licht_UG_Abstellraum = use 'LCN.output.0.11.2'
Licht_UG_Flur = use 'LCN.relay.0.19.2'
function Status_Licht_UG()
if Licht_UG_Flur == 0 and Licht_UG_Hobby == 0 and Licht_UG_Abstellraum == 0
then Licht_UG:set(0)
else Licht_UG:set(1) end
end
Licht_UG_Flur.onchange = Status_Licht_UG()
Licht_UG_Hobby.onchange = Status_Licht_UG()
Licht_UG_Abstellraum.onchange = Status_Licht_UG()
Gruß
Hat
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.
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.
Benutzung von Funktionen im Logic Tab
-
- Alleswisser
- Beiträge: 5742
- Registriert: Mo 21. Apr 2008, 20:03
- Hat sich bedankt: 20 Mal
- Danksagung erhalten: 13 Mal
#2 RE: Benutzung von Funktionen im Logic Tab
Ein Beispiel,
die Funktion wird alle 60 Sekunden per Timer aufgerufen :
lg thomas
die Funktion wird alle 60 Sekunden per Timer aufgerufen :
Code: Alles auswählen
------------------------------------------------------------------------
--
-- Base Laufzeit in Minuten
lzm = use 'VAR.laufzeit'
lzs = use 'VAR.laufzeit_std'
function laufzeit()
local m,s
m = lzm.value + 1
if m == 60 then
m=0
s = lzs.value + 1
end
set ('VAR.laufzeit',m)
set ('VAR.laufzeit_std',s)
end
------------------------------------------------------------------------
lg thomas
lg Thomas
-
- Fleißiges Mitglied
- Beiträge: 302
- Registriert: Do 1. Mär 2007, 18:09
- Danksagung erhalten: 1 Mal
- Kontaktdaten:
#3 RE: Benutzung von Funktionen im Logic Tab
Hallo Hat,
Die Abfrage müsste meiner Meinung nach lauten:
if Licht_UG_Flur.value == 0 and ...
Gruss,
Ueli
Die Abfrage müsste meiner Meinung nach lauten:
if Licht_UG_Flur.value == 0 and ...
Gruss,
Ueli
#4 RE: Benutzung von Funktionen im Logic Tab
Vielen Dank für den Hinweis. Das .value ist natürlich notwendig. Die Funktion ist nun syntaktisch korrekt. Allerdings ist mein wesentliches Problem
noch nicht gelöst, da der Wert von VAR.Licht_UG erst dann aktualisiert wird wenn ich diesen Kode erneut abspeichere. Ich würde eigentlich erwarten, dass wenn eine Lampe ein- oder ausgeschaltet wird die Variable VAR.Licht_UG aktualisiert wird , aufgrund der letzten Zeilen mit '.onchange' (Das habe ich aus dem Tutorial für "Shutters") . Dem ist jedoch nicht so. Wo finde ich mehr Info über .onchange? Muss ich das Aktualisieren über Events realisieren?
Gruß
Hat
noch nicht gelöst, da der Wert von VAR.Licht_UG erst dann aktualisiert wird wenn ich diesen Kode erneut abspeichere. Ich würde eigentlich erwarten, dass wenn eine Lampe ein- oder ausgeschaltet wird die Variable VAR.Licht_UG aktualisiert wird , aufgrund der letzten Zeilen mit '.onchange' (Das habe ich aus dem Tutorial für "Shutters") . Dem ist jedoch nicht so. Wo finde ich mehr Info über .onchange? Muss ich das Aktualisieren über Events realisieren?
Gruß
Hat
#5 RE: Benutzung von Funktionen im Logic Tab
Dieses .onchange verstehe ich nach wie vor nicht, aber habe mein Ziel nun doch hinbekommen über Events.
Dazu nun eine Frage:
Wie kann man ein Event triggern wenn ein output sich von 0 auf einen beliebigen Wert ändert?
Kann man unter Data ein Range angeben, statt nur einen Wert?
Channel E.LCN.output.0.(%d+).(%d)
Data 100 (hier möchte ich aber alle möglichen Werte außer 0, da ein Ausgang nicht unbedingt Vollast liefert).
Vielen Dank im vorraus.
Gruß
Hat
Dazu nun eine Frage:
Wie kann man ein Event triggern wenn ein output sich von 0 auf einen beliebigen Wert ändert?
Kann man unter Data ein Range angeben, statt nur einen Wert?
Channel E.LCN.output.0.(%d+).(%d)
Data 100 (hier möchte ich aber alle möglichen Werte außer 0, da ein Ausgang nicht unbedingt Vollast liefert).
Vielen Dank im vorraus.
Gruß
Hat
-
- Administrator
- Beiträge: 5294
- Registriert: Mi 10. Jan 2007, 18:49
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 16 Mal
- Kontaktdaten:
#6 RE: Benutzung von Funktionen im Logic Tab
Hast du es schon einmal mit >0 versucht? Allerdings wird er auch erst einmal ausgelöst, wenn sich der Wert von 50 auf 80 ändert oder von 80 auf 50.
Viel Erfolg
Florian
Viel Erfolg
Florian
-
- Administrator
- Beiträge: 5294
- Registriert: Mi 10. Jan 2007, 18:49
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 16 Mal
- Kontaktdaten:
#7 RE: Benutzung von Funktionen im Logic Tab
onchange
Bei mir ist onchange immer innerhalb einer function, also so:
Bei den set Befehlen musst du leider davon ausgehen, dass die etwas Zeit brauchen. Ein geänderte Variable stimmt leider nicht innerhalb eine Funktion (hast du nicht, aber hat mich schon zur Verzweiflung gebracht). Da muss man dann lokale Zwischenvariablen benutzen.
Viel Erfolg
Florian
Bei mir ist onchange immer innerhalb einer function, also so:
Code: Alles auswählen
function brenner:onchange(new)Â
    if (brenner.value == 1) then
        brenner_text:set ('An')
    else
        brenner_text:set ('Aus')
    end
end
Bei den set Befehlen musst du leider davon ausgehen, dass die etwas Zeit brauchen. Ein geänderte Variable stimmt leider nicht innerhalb eine Funktion (hast du nicht, aber hat mich schon zur Verzweiflung gebracht). Da muss man dann lokale Zwischenvariablen benutzen.
Viel Erfolg
Florian
#8 RE: Benutzung von Funktionen im Logic Tab
Hallo Florian,
Domiq hat aber ein Tutorial für Shutters/Jalousien und da wird das .onchange so verwendet wie in der von mir geposteten LUA Kode.
Das mit ">0" habe ich versucht, aber hat nicht zum Erfolg geführt. Events wäre nochmals deutlich leistungsfähiger wenn man zum Triggern
unter DATA logische Operatoren verwenden könnte. Geht das denn nicht? Vielleicht etwas was nur Filip beantworten kann.
Gruß
Hat
Domiq hat aber ein Tutorial für Shutters/Jalousien und da wird das .onchange so verwendet wie in der von mir geposteten LUA Kode.
Das mit ">0" habe ich versucht, aber hat nicht zum Erfolg geführt. Events wäre nochmals deutlich leistungsfähiger wenn man zum Triggern
unter DATA logische Operatoren verwenden könnte. Geht das denn nicht? Vielleicht etwas was nur Filip beantworten kann.
Gruß
Hat
-
- Administrator
- Beiträge: 5294
- Registriert: Mi 10. Jan 2007, 18:49
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 16 Mal
- Kontaktdaten:
#9 RE: Benutzung von Funktionen im Logic Tab
was mir auffällt, das die Funktion wird in dem shutters Beispiel ohne () aufgerufen
Empfinde ich zwar nicht als logisch, aber wer weiß....
Viel Erfolg
Florian
Code: Alles auswählen
shutter1.onchange = shutters
Empfinde ich zwar nicht als logisch, aber wer weiß....
Viel Erfolg
Florian
#10 RE: Benutzung von Funktionen im Logic Tab
Tatsächlich, man sollte genau lesen können. Nun brauche ich kein Event mehr!
Es würde mich dennoch weiterhin interessieren ob man neben einfache Werte auch eine Berechnung oder Funktion bei der Eventsteuerung unter Daten
benutzen kann. Kurz oder lang werde ich sonst wieder auf diese Einschränkung stoßen.
Vielen Dank, Florian.
Gruß
Hat
Es würde mich dennoch weiterhin interessieren ob man neben einfache Werte auch eine Berechnung oder Funktion bei der Eventsteuerung unter Daten
benutzen kann. Kurz oder lang werde ich sonst wieder auf diese Einschränkung stoßen.
Vielen Dank, Florian.
Gruß
Hat
Zurück zu „Domiq-Module - DOMIQ Sp. z o.o.“
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste