YESLY Smart Home

Startseite Foren Fibaro Forum (Z-Wave) Fibaro LUA Scripts für HC2 Und noch ein Rollladen Script

Dieses Thema enthält 104 Antworten und 17 Teilnehmer. Es wurde zuletzt aktualisiert von dirkg173 dirkg173 vor 1 Monat.

Ansicht von 15 Beiträgen - 61 bis 75 (von insgesamt 105)
  • Autor
    Beiträge
  • #106198

    Cruncher
    Teilnehmer

    @ Jeep

    in welcher Zeile finde ich denn die Variablensteuerung ?
    Ich finde nichts wo ich den Wert ändern kann (version 1.3.1) :-(

    @cruncher

    setz einfach in der Variablensteuerung den Wert von „´rollershutters_runs“ auf 0
    Dann sollte es funktionieren. Das kann passieren wenn das Script unkontrolliert beendet wird, oder zu viele Instanzen laufen.

    Grüße, Jeep

    #106200

    jeep
    Teilnehmer

    @cruncher,
    die Variable „rollershutter_runs“ ist eine globale Variable, die musst Du im Menü, unter „Steuerungen-> Variablensteuerung“ anlegen.


    Grüße, Jeep
    #106270

    Cruncher
    Teilnehmer

    @ Jeep

    ich habe es gefunden :-)
    Vielen Dank..

    #106461
    dirkg173
    dirkg173
    Teilnehmer

    Hallo @jeep,

    ich würde gerne auch Dein Rolladen-Script ausprobieren. Du schreibst aber am 21.02.19, dass Du die Ver. 1.3.3 noch hochladen möchtest. Würdest Du das noch tun?
    Als LUA-Neuling würde ich große Probleme haben in einem so komplexen Script irgendwelche Fehler zu finden und zu korrigieren.
    Das kleine Script zur Überprüfung des Zustandes der Terrassentür habe ich bereits mit kleinen Modifikationen (ich nutze den POPP Tür-/Kippsensor mit zwei Zuständen) erfolgreich getestet.

    Vielen Dank schon mal im Voraus!
    Gruß, Dirk

    #106463

    jeep
    Teilnehmer

    Hi Dirk,

    bitte schön, da ist es. Bitte das angehängte PDF beachten, da gibts noch Unterschiede zu den Vorgängerversionen.


    Grüße, Jeep
    • Diese Antwort wurde geändert vor 3 Monate, 4 Wochen von  jeep.
    Dateianhänge:
    You must be logged in to view attached files.
    #106472
    dirkg173
    dirkg173
    Teilnehmer

    Wow, vielen Dank!!

    Werde die PDF-Datei beachten und berichten, ob ich es hinbekommen und durchgeblickt habe… ;)

    Nochmals vielen Dank!
    Gruß, Dirk

    #106674

    bieer
    Teilnehmer

    Hallo Jeep,
    vielen Dank für das tolle Script. Ich habe es seit einigen Tagen geladen und es arbeitet sehr gut, …bis auf Folgendes:

    1. Das Terrassenrollo sollte bei geöffneter Tür ja nicht runter fahren. Das wird ignoriert. Es fährt mit allen anderen zur gegebenen Zeit runter, ist aber nur separat unter rollerIDsNC eingetragen. Wird es per Handschalter einzeln wieder geöffnet, fährt es selbständig nach ein paar Minuten wieder runter.

    2. Feiertage oder Sonntag -heute bzw -morgen werden nicht berücksichtigt und logischerweise auch nicht angezeigt, es gibt ja kein Debug dafür. Die 3 Globalen und das Feiertags-Script sind installiert.

    Muss ich da eventuell noch was nachträglich eintragen. Es wäre schön, wenn es hierzu eine Info gäbe.
    Viele Grüße
    bieer

    #106676

    jeep
    Teilnehmer

    @bieer,

    schön das es Dir gefällt. Zu 1., vermute ich folgendes:

    Hast Du die richtige Function aufgerufen? Und nur eine der beiden. Entweder die mit doorCheck oder die goodNight ohne doorCheck.

    Zu 2.
    Das ist richtig dass es keine Debug-Ausgabe für den Feiertag gibt. Habe ich jetzt nachgeholt. Bitte Zeile 357 durch folgende ersetzen:
    if (holiday == nil) then holiday = 0; einORkein = 'kein' else einORkein = 'ein' end

    Dazu noch hinter Zeile 369 diese Zeile einfügen:
    Debug('lightblue','Heute ist '..einORkein..' Feiertag oder Wochenende.')

    Diese Code-Zeilen haben keine Auswirkungen auf die Funktionalität. Sie sind nur für die Debug-Ausgabe ob Feiertag oder nicht.

    Es gibt ab Zeile 397 bis 401 ein Beispiel wo der Feiertag in der Bedingung abgefragt wird. Ich hab das nicht explizit aktiviert da es vermutlich nicht bei jedem passt. Aber die Bedingungen an eigene Bedürfnisse anzupassen sollte kein allzu großes Problem darstellen.
    Noch ’ne kurze frage zum „Ausschlafen VD“. Hast Du das installiert? Dafür gibt es auch ein Beispiel der Bedingung in Zeile 403, da geht dann kein Rollladen auf wenn ’sleepin‘ auf 1 steht.
    Wenn es noch Probleme geben sollte bitte hier melden.


    Grüße, Jeep
    • Diese Antwort wurde geändert vor 3 Monate, 2 Wochen von  jeep.
    • Diese Antwort wurde geändert vor 3 Monate, 2 Wochen von  jeep.
    #106697

    jeep
    Teilnehmer

    @bieer,

    da war ich wohl ein wenig zu schnell. Also für Punkt 2 sollte es korrekt so lauten:
    Nach Zeile 357 diese Zeile einfügen: if (holiday == 1) then einORkein = 'ein' else einORkein = 'kein' end
    Die Debug-Ausgabe nach Zeile 369 bleibt wie angegeben.


    Grüße, Jeep
    #106705
    dirkg173
    dirkg173
    Teilnehmer

    Hallo @jeep,

    ich bin gestern auch endlich mal dazu gekommen Dein Script auszuprobieren.
    Das Schließen der Rollläden abends hat soweit in 2 Stufen funktioniert, allerdings haben sich die Rollläden erst ca. 20-30 Minuten nach „notafterE“ vollständig geschlossen (?). Heute Morgen haben sich die Rollläden nicht geöffnet, hatte allerdings einen Fehler eingebaut, den ich aber schon korrigieren konnte. Zumindest hat die Simulation mit einer gesetzten „newsunriseHour“ soweit funktioniert, dass die Rollläden auf 25 % geöffnet haben. Mal abwarten, wie es morgen ausschaut.

    Wie Du vielleicht schon erkannt hast, blicke ich bei den Zeiten leider nicht ganz durch. Prinzipiell kann ich zwar nachvollziehen, wie die einzelnen Zeiten berechnet werden, aber wie ich sie konkret beeinflussen kann, verstehe ich nicht ganz. Wie kann ich z.B. sicherstellen, dass die Rollläden werktags nicht vor 7:30 Uhr und am Wochenende und an Feiertagen (Feirtage-Script läuft) nicht vor 8:30 Uhr geöffnet werden, wenn der Sonnenaufgang vor den jeweiligen Zeiten liegt. In der dunkleren Jahreszeit sollten die Rollläden dann aber ungefähr entsprechend der Sonnenaufgangszeiten öffnen. Dasselbe gilt für das Schließen der Rollläden.
    Muss ich das über die „Sonnenauf-/-untergangs Korrektur“ steuern?
    Kann ich die Zeiten zwischen „earlymorning()“ und „goodmorningSun()“ bzw. „goodEvening()“ und „goodNightWdoorCheck()“ so beeinflussen, dass eine Mindestzeit z.B. von 30 Minuten dazwischen liegt? Wenn ja, wie?

    Unabhängig von meinen Fragen, aber kann es sein, dass Du „timeStringMIN“ zweimal unterschiedlich definierst? Siehe Zeile 107 und 108 bzw. auf dem Screenshot.

    Vielen Dank im Voraus!

    Gruß, Dirk

    Dateianhänge:
    You must be logged in to view attached files.
    #106712

    jeep
    Teilnehmer

    Hallo @dirkg173,

    kein Problem. Im Prinzip ist es recht einfach wenn man die Logik verstanden hat. Hier mal ein Beispiel dass Deinen Wunsch berücksichtigt:

    Für Abends dann analog zum obigen Beispiel verfahren. Nicht vergessen die Variable für eine gelaufene Function (z.B. runEarly) wieder auf ‚true‘ setzen so dass die Function beim nächsten Durchlauf nicht wiederholt wird.

    Die Zeiten zwischen den 2 morgendlichen und abendlichen Funktionen liegen im Sommer so ca 30 Min. auseinander. Dies kann man mit den Variablen in den Zeilen 29-31 beeinflussen.

    Zu Deiner Frage mit der Definition der timeStringMIN Variable – sie wird nicht zweimal unterschiedlich definiert, sondern verändert. Der Zufall wird noch hinzuaddiert.
    Natürlich hätte ich es in eienr Zeile machen können, aber zu der Zeit konnte man das LUA-Eingabefenster nicht so frei positionieren wie jetzt.
    Und kurze Zeilen sind besser lesbar. ;-)
    a = 1
    a = a + 1
    Bedeutet das a jetzt den Wert 2 hat.
    Viel Erfolg und wenn Du noch Fragen hast, dann gibt s meistens innerhalb eines Tages ’ne Antwort.


    Grüße, Jeep
    #106738
    dirkg173
    dirkg173
    Teilnehmer

    Hallo @jeep,

    vielen Dank für das Beispiel. Ehrlich gesagt blicke ich noch nicht ganz durch, werde mich aber erst mal selber dran versuchen, bevor ich wieder um Hilfe bettle… ;)
    Kennst Du eigentlich das „Feiertage und Termine aus dem Google Kalender“-Script (einfach mal nach googeln, Uploadfilter (?) sei dank)? Man kann über den Google-Kalender außer Wochenenden und Feiertage ganz einfach auch andere Termine hinzufügen, z.B. Urlaubstage, Krankheitstage, etc., die dann entsprechend eine globale Variable auf 1 setzen. Mit dieser Möglichkeit ist man wesentlich flexibler als nur mit dem reinen Feiertags-Script.

    Hallo @bieer,

    das Problem, dass das Terrassenrollo runter geht, habe ich auch (gehabt!?). Das Problem ist, dass der Doorcheck NICHT in der goodEvening() Funktion berücksichtigt ist, sondern nur in der goodNightWdoorCheck() Funktion, deshalb fährt das Rollo bei geöffneter Terrassentür auf 50 % runter (zumindest bei mir). Ich habe versucht das auch in der goodEvening() Funktion zu integrieren und werde es heute oder morgen Abend ausprobieren und bescheid geben, ob es funktioniert hat.

    Gruß, Dirk

    #106744
    dirkg173
    dirkg173
    Teilnehmer

    Hallo @jeep,

    ich hätte noch nochmal eine Fragen.
    Was bedeutet diese Zeile?
    local newsunriseHour, laterOpen = calcTime(sunriseHour, tonumber(randminutes) + offSetM() )

    Dass dadurch die „newsunriseHour“ berechnet wird ist klar, aber wie muss ich den ersten Teil deuten? Und wozu steht dort „laterOpen“?

    local newsunriseHour, laterOpen

    • Diese Antwort wurde geändert vor 3 Monate, 2 Wochen von dirkg173 dirkg173.
    #106747

    jeep
    Teilnehmer

    Hallo @dirkg173,

    diese Zeile ruft die function calcTime() auf und dient der Berechnung eines neuen Wertes für den verzögerten Sonnenaufgang(function earlymorning) und noch einen Wert laterOpen für die function goodmorningSun().

    Der erste Teil bedeutet nur dass ich nach Ausführen von calcTime() 2 Rückgabewerte empfangen werde – newsunriseHour und lateropen. Eine Function kann ja mehrere Rückgabewerte enthalten.
    Siehe Zeile 121 von calcTime. Lass dich hier nicht vom Namen der Rückgabevariabeln verwirren. Ich benutze die gleiche Function zum berechnen von neuen Sonnenaufgang und neuen Sonnenuntergang, füttere sie aber mit unterschiedliche Werten. Siehe nächste Zeile.
    newsunsetHour, laterClose = calcTime(sunsetHour, tonumber(randminutes) + offSetE() )

    Die Verwendung von vielen Funktionen und Variablen macht das Script flexibler, leichter lesbar und wartungsfreundlicher. Änderungen können schneller implementiert werden, da immer nur kleinere Codeabschnitte angepasst werden müssen.
    Vielleicht sollte ich im Readme-PDF die Funktionen kurz erklären. Weiß aber nicht ob dass dann zu aufgebläht wirkt.


    Grüße, Jeep
    #106755
    dirkg173
    dirkg173
    Teilnehmer

    Hallo @jeep,

    vielen Dank für Deine Hilfe, aber ich verstehe es einfach nicht.
    Dass man durch
    local newsunriseHour, laterOpen = calcTime(sunriseHour, tonumber(randminutes) + offSetM() )
    Rückgabewerte erhält (newsunriseHour und laterOpen), leuchtet mir noch ein.
    Aber warum bekommt man zwei unterschiedliche Werte? Und wie errechnet sich „laterOpen“?

    Entschuldige bitte die ganzen (blöden) Fragen. Für mich als Lua-Anfänger ist es echt schwer da durchzublicken.

    Gruß, Dirk

Ansicht von 15 Beiträgen - 61 bis 75 (von insgesamt 105)

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