YESLY Smart Home

Startseite Foren Fibaro Forum (Z-Wave) Fibaro LUA Scripts für HC2 Rollladen-Steuerung (Sonnenaufgang/-untergang)

Dieses Thema enthält 338 Antworten und 37 Teilnehmer. Es wurde zuletzt aktualisiert von Tramix Tramix vor 3 Monate, 4 Wochen.

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 339)
  • Autor
    Beiträge
  • #15663

    boomx
    Teilnehmer

    Anbei eine Rollladen-Steuerung, welche die Rollläden anhand des Sonnenaufgangs/-untergangs steuert. Es gibt in dem Skript eine random()-Zeit, welche das Skript wartet, bis es den Befehl absendet. Zusätzlich ist eine Prüfung eingebaut, ob die Temperatur unter 0° ist. So werden Schäden bei festgefrorenen Rollladenmotoren verhindert. Ihr müsst nur die ID’s der Geräte anpassen :)

    Es wird eine Variable rollershutter_runs benötigt.

    • Dieses Thema wurde geändert vor 4 Jahre von  boomx.
    • Dieses Thema wurde geändert vor 4 Jahre von  boomx.
    #17767

    DeDouby
    Teilnehmer

    Das Script hat paar Tippfehler..

    ich hab hier meines mit meinen Rollädenshuttern.

    Leider läuft es nicht. Es zeigt an das es erstmalig gestartet wurde. Das wars dann aber schon.

    Die random 100000 ist ja eine verzögerung, wenn ich das richtig verstanden hab. 100000 als wert sind wieviel max. verzögerung in Minuten?
    Woher holt das Script die Temperatur?

    #17768

    DeDouby
    Teilnehmer

    Und eine Frage noch. Der Satz: „es wird eine Variable xy benötigt“ macht mich ein wenig stutzig. Muss man da noch etwas machen oder wird einfach eine Variable mit dem Namen verwendet?

    #17789

    DeDouby
    Teilnehmer

    Also der Fehler war die Fehlende Variable. Die man erst anlegen muss. Nun läuft das Script durch..

    #17791

    boomx
    Teilnehmer

    Hi,

    steht ja auch im Eingangspost, dass die Variable benötigt wird. Diese verhindert, dass die Open-Befehle mehrmals gesendet werden.

    Die Temperatur holt er sich aus der API vom HC2. Werde es aber demnächst auf mein Aussenmodul vom Netatmo umstellen. Die sleep-Zeit wird durch Zufall (zwischen 1 und 60 min) generiert und wird dir im Debüt angezeigt.

    Wo waren da Schreibfehler? :D

    Gruß

    #17828

    DeDouby
    Teilnehmer

    [ERROR] 10:52:29: line 26: expected near char(195)
    es fehlt ein ‚ vor Sonnenaufgang
    [ERROR] 10:54:28: line 42: unexpected symbol near ‚=‘
    das leerzeichen muss weg fast am ende der zeile: temp)< =0)

    Wenn es für Dich ok ist, würde ich das script ändern/anpassen und als mod dann veröffentlichen.

    • Diese Antwort wurde geändert vor 3 Jahre, 10 Monate von  DeDouby.
    #17830

    boomx
    Teilnehmer

    Hi,

    dachte ich hätte mein Skript direkt von dem HC2 kopiert. Hatte es dann wohl doch nochmal geändert. :( sorry. Ja, kannst du gern Posten.

    Gruß

    #17903
    chriss1873
    chriss1873
    Teilnehmer

    Hey BoomX!

    Wie weit bist Du mit dem Auslesen der Außentemperatur über Netatmo? Kann sich das schon sehen lassen? ;-)
    Interessant wäre auch, wenn man einzelne Rollläden durch einen Fensterkontakt „stoppen“ könnte. Z.B. ein Geburtstag – man sitzt auf der Terrasse, die Tür ist geöffnet, der Kontakt „weiß dies – so dass der Rolladen erst dann runter fährt, wenn die Tür geschlossen wird, oder aber der Schalter manuell betätigt wird…

    Geht sowas?

    Und wie verwende ich das Script, wenn ich quasi mit Sonnenauf- und Untergang, die Außenbeleuchtung steuern möchte?

    Viele Grüße

    Christian

    • Diese Antwort wurde geändert vor 3 Jahre, 10 Monate von chriss1873 chriss1873.
    • Diese Antwort wurde geändert vor 3 Jahre, 10 Monate von chriss1873 chriss1873.
    #17907

    boomx
    Teilnehmer

    Hi,

    kann gerne mal so ein Skript schreiben. Werde ich im Laufe der nächsten Woche mal in Angriff nehmen :)

    bzgl. deiner anderen Frage:

    Würde das oben genannte Skript so Coden, dass du da dann auch Lampen mit steuern kannst, da hab ich auch noch welche draußen. Mache also ein Skript, zur Steuerung der Aktionen von Sonnenauf & Untergang.

    Gruß

    #17909
    chriss1873
    chriss1873
    Teilnehmer

    Du bist der Beste – danke! Ich bin also gespannt! :-)

    Gruß zurück!

    #17938
    chriss1873
    chriss1873
    Teilnehmer

    Hey zusammen!

    Bei mir läuft die Szene leider noch nicht. Das hier ist der Fehlercode:

    [DEBUG] 21:58:52: Rollladen-Steuerung erstmalig gestartet (Ver.2.0)
    [DEBUG] 21:59:03: Rollladen-Steuerung erstmalig gestartet (Ver.2.0)
    [DEBUG] 21:59:04: Rollladen-Steuerung erstmalig gestartet (Ver.2.0)
    [ERROR] 07:37:58: LUA error: /opt/fibaro/scenes/517.lua:22: attempt to compare number with nil

    Was habe ich denn jetzt wieder nicht hinbekommen?

    Grüße

    Christian

    #17947

    boomx
    Teilnehmer

    Hi,

    hast du Variable rollershutter_runs eingerichtet?

    Gruß

    #17964
    chriss1873
    chriss1873
    Teilnehmer

    Guten Morgen!

    Ja, habe ich. Ich hänge aber sicherheitshalber gleich mal ein Bild davon dran……

    Hier das Script – adaptiert auf meine IDs:

    –[[
    %% autostart
    %% properties
    %% globals
    –]]

    local sourceTrigger = fibaro:getSourceTrigger();
    local version = ‚2.0‘;

    fibaro:debug(‚Rollladen-Steuerung erstmalig gestartet (Ver.‘ .. version .. ‚)‘);

    function rollershutter()
    local version = ‚2.0‘;
    local sunriseHour = fibaro:getValue(1,“sunriseHour“);
    local sunsetHour = fibaro:getValue(1,“sunsetHour“);
    local currentDate = os.date(„*t“);
    local temp = tonumber(fibaro:getValue(41, „Temperature“));
    local rollershutter_runs = tonumber(fibaro:getGlobalValue(„rollershutter_runs“));
    local random = math.random(35);
    local min = math.floor((random*100)/60);

    if ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format(„%02d“, currentDate.hour) .. „:“ .. string.format(„%02d“, currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
    then
    fibaro:debug(‚Rollladen-Steuerung gestartet (Ver.‘ .. version .. ‚)‘);
    fibaro:setGlobal(„rollershutter_runs“, „1“);
    fibaro:debug(‚Sonnenaufgang. Offne Rollladen‘);
    fibaro:debug(‚Warte ‚ .. min .. ‚ min‘);
    fibaro:sleep(random*100000);
    fibaro:call(569, „open“);
    fibaro:call(571, „open“);
    fibaro:call(579, „open“);
    fibaro:call(573, „open“);
    fibaro:call(575, „open“);
    fibaro:call(581, „open“);
    fibaro:debug(‚Rollladen geöffnet‘);
    fibaro:setGlobal(„rollershutter_runs“, „0“);
    elseif ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format(„%02d“, currentDate.hour) .. „:“ .. string.format(„%02d“, currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)>=0)
    then
    fibaro:debug(‚Rollladen-Steuerung gestartet (Ver.‘ .. version .. ‚)‘);
    fibaro:setGlobal(„rollershutter_runs“, „1“);
    fibaro:debug(‚Sonnenuntergang… Schließe Rollladen‘);
    fibaro:debug(‚Waiting ‚ .. min .. ‚ min‘);
    fibaro:sleep(random*100000);
    fibaro:call(569, „close“);
    fibaro:call(571, „close“);
    fibaro:call(579, „close“);
    fibaro:call(573, „close“);
    fibaro:call(575, „close“);
    fibaro:call(581, „close“);
    fibaro:debug(‚Rollladen geschlossen‘);
    fibaro:setGlobal(„rollershutter_runs“, „0“);
    elseif ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format(„%02d“, currentDate.hour) .. „:“ .. string.format(„%02d“, currentDate.min) == sunriseHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
    then
    fibaro:debug(‚Rollladen-Steuerung gestartet (Ver.‘ .. version .. ‚)‘);
    fibaro:setGlobal(„rollershutter_runs“, „1“);
    fibaro:debug(‚Sonnenaufgang… Temperatur < 0… Rollladen bleibt geschlossen.‘);
    fibaro:call(531, „sendPush“, „Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen“, „rollershutter“);
    fibaro:setGlobal(„rollershutter_runs“, „0“);
    elseif ((((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7) and string.format(„%02d“, currentDate.hour) .. „:“ .. string.format(„%02d“, currentDate.min) == sunsetHour)) and rollershutter_runs == 0 and tonumber(temp)<=0)
    then
    fibaro:debug(‚Rollladen-Steuerung gestartet (Ver.‘ .. version .. ‚)‘);
    fibaro:setGlobal(„rollershutter_runs“, „1“);
    fibaro:debug(‚Sonnenuntergang… Temperatur < 0… Rollladen bleibt offen.‘);
    fibaro:call(531, „sendPush“, „Temperatur unter 0. Rollladen wurde nicht geöffnet. Bitte manuell öffnen“, „rollershutter“);
    fibaro:setGlobal(„rollershutter_runs“, „0“);
    end
    setTimeout(rollershutter, 60*1000);
    end

    if (sourceTrigger[„type“] == „autostart“) then
    rollershutter();
    end

    Wahrscheinlich bin ich wieder zu mehlig und bekomme es nicht hin. Auf der einen Seite, meinen Sohn in den Schlaf wiegen, auf der Anderen der Laptop – Szenen umschreiben! :-D

    • Diese Antwort wurde geändert vor 3 Jahre, 10 Monate von chriss1873 chriss1873.
    Dateianhänge:
    You must be logged in to view attached files.
    #17973

    boomx
    Teilnehmer

    Hi,

    nimm mal bitte folgenden Code. Deine Rollladen-IDs habe ich schon hinzugefügt :)

    • Diese Antwort wurde geändert vor 3 Jahre, 10 Monate von  boomx.
    #17975
    chriss1873
    chriss1873
    Teilnehmer

    Klasse, Danke! 👍🏽😃

    Ich liebe dieses Forum! :-))))

    Folgenden Fehler bekomme ich dann:

    [ERROR] 10:09:53: line 29: unexpected symbol near char(226)

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 339)

Du musst angemeldet sein, um auf dieses Thema antworten zu können.