Seite 2 von 3
#11 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Fr 17. Apr 2015, 10:14
von Beleuchtfix
rayb hat geschrieben:Also bleibt die Frage, wo ist der Unterschied zwischen Ressoruce und LOGIC Fenster?
Auf die Idee muss man erst einmal kommen

Lua Code im Logic Fenster wird beim Start von Base (oder nach dem Abspeichern) ausgeführt / geladen und steht dann zur Verfügung. Du initialisiert dort z.B. Variablen und schreibst eben deine Scripte.
C.LOGIC.xxxx ruft eben eine Funktion unter Logic auf.
Ich denke, dass die Scripts unter Resource eher Base-intern benötigt werden, damit habe ich mich aber noch nicht genau beschäftigt. Ich habe nur Schaltelemente für die Visu (unter themes) und Hintergründe dort abgespeichert.
Vielleicht kann Piotr genauer erklären, was man damit macht.
Gruß
Florian
#12 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Sa 18. Apr 2015, 11:25
von Beleuchtfix
Thomas, deine tolle Antwort habe ich zu dem anderen Beitrag verschoben, er beschreibt aber gut, wofür die Resourcen gut sind.
Gruß
Florian
#13 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Sa 18. Apr 2015, 17:44
von Thomas
Hallo Florian,
stimmt, da passt es besser.
Habe noch was gefunden, keine Ahnung ob es noch geht.
Muss bestimmt noch etwas angepasst werden :
Code: Alles auswählen
------------------------------------------------------------------------
--
-- Sonnenschutz - wird vom Winkel aufgerufen
--
l_azi_ein_soll = use 'MEM.so.azi_ein_soll' -- Sonnenwinkel ein, per Remote einstellbar
l_azi_aus_soll = use 'MEM.so.azi_aus_soll' -- Sonnenwinkel aus, per Remote einstellbar
l_azi_ein_soll_west = use 'MEM.so.azi_ein_soll_west'
l_azi_aus_soll_west = use 'MEM.so.azi_aus_soll_west'
l_azi_ein_soll_ost = use 'MEM.so.azi_ein_soll_ost'
l_azi_aus_soll_ost = use 'MEM.so.azi_aus_soll_ost'
l_sonnenschutz_sued = use 'VAR.sonnesued2' -- Anzeige der Anforderung
l_sonnenschutz_west = use 'VAR.sonnewest2'
l_sonnenschutz_ost = use 'VAR.sonneost2'
l_azi_ist = use 'SUN.azimuth' -- der Sonnenwinkel
l_lux_soll = use 'MEM.so.klux_soll' -- (k)Lux Sollwert, , per Remote einstellbar
l_lux_soll_west = use 'MEM.so.klux_soll_west'
l_lux_soll_ost = use 'MEM.so.klux_soll_ost'
l_lux_ist = use 'VAR.luxwert_s' -- aus Funktion : LCN WIH Wert in Lux umgerechnet oder Modbus.Elsner...
l_lux_ist_west = use 'VAR.luxwert_w'
l_lux_ist_ost = use 'VAR.luxwert_0'
l_temp_ist = use 'LCN.value.0.27.r1' -- die Referenzraum Temperatur
l_temp_soll = use 'MEM.so.temp_sued_soll' -- Refezenz überschritten - Schutz aktiv, , per Remote einstellbar
l_temp_ist_west = use 'LCN.value.0.70.r1'
l_temp_soll_west = use 'MEM.so.temp_west_soll'
l_temp_ist_ost = use 'LCN.value.0.60.r1'
l_temp_soll_ost = use 'MEM.so.temp_ost_soll'
l_auto_sued = use 'MEM.so.auto_sued' -- Hand/Auto Schalter, per Remote einstellbar
l_auto_west = use 'MEM.so.auto_west'
l_auto_ost = use 'MEM.so.auto_ost'
l_zeit_ein = use 'MEM.so_ein' -- Zeitverzögerung runter in Minuten , per Remote einstellbar
l_zeit_aus = use 'MEM.so_aus'
function f_sonnenschutz()
if l_temp_soll.value l_azi_ein_soll.value and l_azi_ist.value l_lux_soll.value and l_temp_ist.value > l_temp_soll.value and l_auto_sued.value == 1 then
if l_sonnenschutz_sued.value == 0 then
command ("TIMER.sued1." .. l_zeit_ein.value .. "m.C.VAR.sonnesued=1")
l_sonnenschutz_sued.value = 1
l_sonnenschutz_sued:set(l_sonnenschutz_sued.value)
-- print ('so süd ein')
end
else
if l_sonnenschutz_sued.value == 1 then
command ("TIMER.sued1." .. l_zeit_aus.value .. "m.C.VAR.sonnesued=0")
l_sonnenschutz_sued.value = 0
l_sonnenschutz_sued:set(l_sonnenschutz_sued.value)
-- print ('so süd: aus')
end
end
------------------
-- Westseite
--
if l_azi_ist.value > l_azi_ein_soll_west.value and l_azi_ist.value l_lux_soll_west.value and l_temp_ist_west.value > l_temp_soll_west.value and l_auto_west.value == 1 then
if l_sonnenschutz_west.value == 0 then
command ("TIMER.west1." .. l_zeit_ein.value .. "m.C.VAR.sonnewest=1")
l_sonnenschutz_west.value = 1
l_sonnenschutz_west:set(l_sonnenschutz_west.value)
-- print ('so west ein')
end
else
if l_sonnenschutz_west.value == 1 then
command ("TIMER.west1." .. l_zeit_aus.value .. "m.C.VAR.sonnewest=0")
l_sonnenschutz_west.value = 0
l_sonnenschutz_west:set(l_sonnenschutz_west.value)
-- print ('so west: aus')
end
end
------------------
-- Ostseite
--
if l_azi_ist.value > l_azi_ein_soll_ost.value and l_azi_ist.value l_lux_soll_ost.value and l_temp_ist_ost.value > l_temp_soll_ost.value and l_auto_ost.value == 1 then
if l_sonnenschutz_ost.value == 0 then
command ("TIMER.ost1." .. l_zeit_ein.value .. "m.C.VAR.sonneost=1")
l_sonnenschutz_ost.value = 1
l_sonnenschutz_ost:set(l_sonnenschutz_ost.value)
-- print ('so ost ein')
end
else
if l_sonnenschutz_ost.value == 1 then
command ("TIMER.ost1." .. l_zeit_aus.value .. "m.C.VAR.sonneost=0")
l_sonnenschutz_ost.value = 0
l_sonnenschutz_ost:set(l_sonnenschutz_ost.value)
-- print ('so ost: aus')
end
end
--------------------------------------------------------------
-- Debug
-- print('Anforderung Sonne Sued: ' .. l_sonnenschutz_sued.value)
-- print('Anforderung Sonne West: ' .. l_sonnenschutz_west.value)
-- print('Anforderung Sonne Ost: ' .. l_sonnenschutz_ost.value)
-- -----------------------------------------------------------
end
-- ende Funktion
l_azi_ein_soll.onchange = f_sonnenschutz
l_azi_aus_soll.onchange = f_sonnenschutz
l_azi_ein_soll_west.onchange = f_sonnenschutz
l_azi_aus_soll_west.onchange = f_sonnenschutz
l_azi_ein_soll_ost.onchange = f_sonnenschutz
l_azi_aus_soll_ost.onchange = f_sonnenschutz
l_lux_soll.onchange = f_sonnenschutz
l_lux_soll_west.onchange = f_sonnenschutz
l_lux_soll_ost.onchange = f_sonnenschutz
l_azi_ist.onchange = f_sonnenschutz
l_auto_sued.onchange = f_sonnenschutz
l_auto_west.onchange = f_sonnenschutz
l_auto_ost.onchange = f_sonnenschutz
-- Debug, schneller aufrufen, wird nicht gebraucht, da der Winkel tut....
-- l_lux_ist.onchange = f_sonnenschutz
------------------------------------------------------------------------
-- Ende Sonnenschutz
------------------------------------------------------------------------
und Lux WIH:
Code: Alles auswählen
------------------------------------------------------------------------
--
-- Luxberechnung WIH
--
luxwih_s = use 'LCN.variable.0.16.9'
lux_var_s = use 'VAR.luxwert_s'
function luxwihs()
luxwih_s.value=luxwih_s.value/100
luxwih_s.value= math.exp(luxwih_s.value)
luxwih_s.value= math.ceil(luxwih_s.value)
lux_var_s:set(luxwih_s.value)
-- print("Lux WIH s : " .. luxwih_s.value)
end
luxwih_s.onchange = luxwihs
lux_var_o = use 'VAR.luxwert_0'
luxwih_o = use 'LCN.variable.0.16.8'
function luxwiho()
luxwih_o.value=luxwih_o.value/100
luxwih_o.value= math.exp(luxwih_o.value)
luxwih_o.value= math.ceil(luxwih_o.value)
lux_var_o:set(luxwih_o.value)
-- print("Lux WIH o : " .. luxwih_o.value)
end
luxwih_o.onchange = luxwiho
luxwih_w = use 'LCN.variable.0.16.10'
lux_var_w = use 'VAR.luxwert_w'
function luxwihw()
luxwih_w.value=luxwih_w.value/100
luxwih_w.value= math.exp(luxwih_w.value)
luxwih_w.value= math.ceil(luxwih_w.value)
lux_var_w:set(luxwih_w.value)
-- print("Lux WIH w : " .. luxwih_w.value)
end
luxwih_w.onchange = luxwihw
------------------------------------------------------------------------
lg Thomas - war ein Beispiel, konnte das nie real probieren - habe keine Rollos im Haus.
alte Version erwischt, Code ausgetauscht
#14 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: So 19. Apr 2015, 20:35
von rayb
Hi Thomas, hi Floria,
vielen Dank für den Code und die Tipps. Das erspart mir Stunden der Codierung. Ich muss mich ein wenig an die LUA Syntax gewöhnen.
Das mit den Ressourcen klappt noch nicht so wie ich mir das vorstelle. Aber im LOGIC funktionieren die Aufrufe von Folrians Script exemplarisch an einem Rollo. Ich muss jetzt "nur noch", die Umsetzung aus dem Display hinbekommen. Erst danach werde ich mich mit der Automatik aus Thomas Script beschäftigen ;-).
Wenn ich die Funktion am laufen habe, werde ich das fertige Script hier wieder einstellen.
Danke
Ralf
#15 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: So 19. Apr 2015, 22:06
von Thomas
Hi Ralf,
kein Problem.
Bin aber seit einigen Monaten raus, und habe Florian jetzt auch alles zu kommen lassen.
Ich kann nur noch "alte Daten" weitergeben, den Rest müsst Ihr machen.
lg Thomas
#16 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Mi 6. Mai 2015, 09:27
von rayb
Hallo Zusammen,
ich brauch da noch mal einen Anstoss.
Als blutiger Anfänger ist die Doku zur Base "CM-BL-DE-140307.pdf" nur eingeschränkt zu gebrauchen wenn es darum geht, ein LUA Funktion über - ich denke Ereignis - zu verarbeiten. Das fängt damit an, das die Bezeichnungen der Fensterelemente bei Ereignissen im Browser nicht mit der Doku übereinstimmen. Erst der Tipp von Christian es mit der englischen Doku zu probieren hat mich weiter gebracht. Dort sind die Bezeichnungen in der Doku und im Broswer einheitlicher.
Die Funktionen sind eingespielt. Offenbar funktionieren die auch. Im Monitor kann ich den Status der Variablen sehen - print machts möglich
Im Remote App bzw. im Display bekomme ich mittlerweile die Variablen angezeigt bzw. kann diese setzen. D.h. Winkel, Temperatur etc. welche in den lua Funktionen von Florian benutzt werden. Das Ergebniss sehe ich dann im Monitor.
Der nächste Schritt ist aus meiner Sicht, das ich unter bestimmten Voraussetzungen, die Rollos z.B. Herunter fahre.
Beispiel "Südseite - Rollos runter"
Bedingung:
a) MEM.so.temp_sued_soll > 20
b) MEM.so.azi_ein_soll > 135
c) Funktion aktiv -> MEM.so.auto_sued
Wie schon gesagt, werde ich wohl ein Ereignis definieren müssen. Hier komme ich nicht weiter

. Kann mir mal jemand einen Bild für eine solche "Lösung" zeigen, wo eine solche oder änliche Funktion abgebildet wird.
Vielen Dank
Ralf
#17 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Mi 6. Mai 2015, 09:44
von Thomas
Ich kann dir nur ein Event Beispiel für mein Skript geben :
Da sollte alles drin sein.
lg Thomas
#18 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Fr 15. Mai 2015, 23:42
von rayb
Hallo Zusammen,
ich habe die Steuerung seit einigen Tagen am laufen. Sprich über die Winkel, Temperatur und Schalter kann ich die Aktivierung steuern.
Frage 1
Was jetzt auffällt, ist das mit dem Wechsel von Sonnenschein und Wolken (Helligkeit), zu oft die Rollo hoch und runter fahren. Auch ist mir nicht klar, wie das Zusammenspiel der
sowie die Command Zeilen mit dem Timer befehl sind.
Code: Alles auswählen
command ("TIMER.sued1." .. l_zeit_ein.value .. "m.C.VAR.sonnesued=1")
Ich stelle mir vor, das ich die Zeit einstelle, wo noch nicht die Umschaltung erfolgt.
Frage 2
Die WIH speichert die Werte für Temperatur als LCN Wert. Wie kann ich diesen Umrechnen, das er als normale Temperatur angezeit werden kann für die VISU.
Gruß
Ralf
#19 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Sa 16. Mai 2015, 14:53
von Thomas
Hatte im "Remote" eine Verstellung der 'MEM.so_ein' und 'MEM.so_aus' gemacht, war für Minuten.
Dieses wird dann in der LOGIG da geholt :
Code: Alles auswählen
l_zeit_ein = use 'MEM.so_ein' -- Zeitverzoegerung runter in Minuten , per Remote einstellbar
l_zeit_aus = use 'MEM.so_aus'
lg Thomas
#20 RE: Herausforderung für die Steuerung der Raffstore nach Sonnenstand
Verfasst: Mi 20. Mai 2015, 22:08
von rayb
Hallo Thomas,
danke für die Info. Leider kann ich nicht erkennen, das die Einstellung sich auswirkt. Dazu folgende Frage:
Der Wert wird ja über folgende Zeile(n) genutzt.
command ("TIMER.nord1." .. l_zeit_aus.value .. "m.C.VAR.sonnenord=0")
Ich verstehe das so, das nach der gegebenen Zeit die Variable "VAR.sonnenord" auf 0 gesetzt wird.
Wie kann ich mir den aktuellen Stand des Timers anschauen?
Ich habe das Script von Florian erweitert und hier in "meiner" aktuellen Version abgelegt.
Dazu gekommen ist die Nordseite sowie einige Kommentare und Formatierungen ;-)
Gruß
Ralf