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.

Benutzung von Funktionen im Logic Tab

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

Themenersteller
Hat
Neues Mitglied
Neues Mitglied
Beiträge: 15
Registriert: Mo 7. Feb 2011, 23:22

#1 Benutzung von Funktionen im Logic Tab

Beitragvon Hat » Mi 29. Jan 2014, 22:29

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

Benutzeravatar

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

#2 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Thomas » Mi 29. Jan 2014, 22:44

Ein Beispiel,

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


Wowbagger
Fleißiges Mitglied
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

Beitragvon Wowbagger » Do 30. Jan 2014, 01:21

Hallo Hat,

Die Abfrage müsste meiner Meinung nach lauten:

if Licht_UG_Flur.value == 0 and ...

Gruss,

Ueli


Themenersteller
Hat
Neues Mitglied
Neues Mitglied
Beiträge: 15
Registriert: Mo 7. Feb 2011, 23:22

#4 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Hat » Do 30. Jan 2014, 21:25

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


Themenersteller
Hat
Neues Mitglied
Neues Mitglied
Beiträge: 15
Registriert: Mo 7. Feb 2011, 23:22

#5 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Hat » Do 30. Jan 2014, 23:03

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

Benutzeravatar

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

#6 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Beleuchtfix » Fr 31. Jan 2014, 09:20

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

Benutzeravatar

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

#7 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Beleuchtfix » Fr 31. Jan 2014, 09:35

onchange
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


Themenersteller
Hat
Neues Mitglied
Neues Mitglied
Beiträge: 15
Registriert: Mo 7. Feb 2011, 23:22

#8 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Hat » Fr 31. Jan 2014, 15:18

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

Benutzeravatar

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

#9 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Beleuchtfix » Fr 31. Jan 2014, 16:56

was mir auffällt, das die Funktion wird in dem shutters Beispiel ohne () aufgerufen

Code: Alles auswählen

shutter1.onchange = shutters

Empfinde ich zwar nicht als logisch, aber wer weiß....
Viel Erfolg
Florian


Themenersteller
Hat
Neues Mitglied
Neues Mitglied
Beiträge: 15
Registriert: Mo 7. Feb 2011, 23:22

#10 RE: Benutzung von Funktionen im Logic Tab

Beitragvon Hat » Fr 31. Jan 2014, 18:16

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


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

Wer ist online?

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