Startseite Foren Fibaro Forum (Z-Wave) Fibaro LUA Scripts für HC2 Lampen Kontrollieren und ausschalten

Dieses Thema enthält 1 Antwort und 2 Teilnehmer. Es wurde zuletzt aktualisiert von  Rene2 vor 6 Monate, 1 Woche.

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #101171

    Christoph
    Teilnehmer

    Hallo,
    ich möchte abends meine ganzen Lampen kontrollieren lassen und mir ein Nachricht schicken lassen, wenn noch eine an ist.
    Es Funktioniert auch alles ganz gut, ausser die Kontrollabfrage. Ich denke ich habe die klammern falsch gesetzt, find aber den Fehler nicht.
    Wenn ihr es noch zusätzlich schafft die ganzen Lampen in eine lokaleVariable zu verpacken und oben zu benennen, wäre das noch schöner.. :)
    Danke schonmal

    `–[[
    %% properties
    %% autostart
    %% events
    %% globals
    –]]

    local sourceTrigger = fibaro:getSourceTrigger();
    function varTime()

    ——————-Push Nachricht—————————————-
    local Handychristoph = tonumber(fibaro:getGlobalValue(„HandyIDChris“))
    local HandyNici = tonumber(fibaro:getGlobalValue(„HandyIDNici“))
    local IpadNici = tonumber(fibaro:getGlobalValue(„IpadNici“))

    local phoneID = {HandyNici, — Nici
    Handychristoph, — Christoph
    IpadNici } — Nici Ipad
    local title = ‚Abendkontrolle! ..Es ist noch Licht an!‘
    local message = ‚Sollen ALLE Lampen ausgeschaltet werden?‘
    local category = ‚YES_NO‘ — or ‚YES_NO‘ or RUN_CANCEL
    local sceneID = 32
    ————————————————————————-
    local night = {22,35}; — HH:MM für Lichter Aus in der Nacht
    local midnight = {4, 59}; — HH:MM für Lichter Aus in der Nacht
    local night = os.date(„%H:%M“, -3600+ night[1]*60*60 + night[2]*60);
    local midnight = os.date(„%H:%M“, -3600+ midnight[1]*60*60 + midnight[2]*60);
    local ostime = os.date(„%H:%M“, os.time());
    local heute = os.date(„%d.%m.%Y“)
    ————————————————————————-
    if fibaro:countScenes() > 1 then
    fibaro:debug(„stop scene“);
    fibaro:abort();
    end
    ————————————————————————-

    fibaro:debug(‚Starte Abendkontrolle‘)

    if ostime > night and ostime < midnight
    and tonumber(fibaro:getValue(175,“value“)) > 0
    or (tonumber(fibaro:getValue( 89,“value“)) > 0
    or tonumber(fibaro:getValue( 94,“value“)) > 0
    or tonumber(fibaro:getValue(102,“value“)) > 0
    or tonumber(fibaro:getValue(108,“value“)) > 0
    or tonumber(fibaro:getValue(175,“value“)) > 0
    or tonumber(fibaro:getValue(34,“value“)) > 0
    or tonumber(fibaro:getValue(95,“value“)) > 0)

    then
    for i=1, #phoneID do
    if phoneID[i] ~= nil then
    fibaro:debug(‚Versende Interactive Push an ID ‚ ..phoneID[i])
    api.post(‚/mobile/push‘, {[„mobileDevices“]={phoneID[i]}, [„message“]=message, [„title“]=title, [„category“]=category, [„data“]={[„sceneId“]=sceneID}});
    end
    end

    else
    fibaro:debug(„no Action“)
    end

    setTimeout(varTime, 30*60*1000)
    end

    if (sourceTrigger[„type“] == „autostart“)
    then varTime()

    end

    #101192

    Rene2
    Teilnehmer

    Hallo Christoph,

    das ist eine sehr unübersichtliche Szene.

    Schaue Dir mal die folgende Prüfung an und überlege Dir, wann diese zutreffen kann.

    Im Einzelnen:

    • Wenn aktuelle Zeit größer night und kleiner midnight UND Value von 175 > 0
    • ODER
    • Value von 89 oder 94 oder … usw größer 0

    Die Szene wird also entweder zwischen night und midnight ausgeführt, oder wenn eines der Geräte eingeschaltet ist.

    Einfacher wäre es, Dir eine Kontrollvariable zu erstellen die Du dann prüfst. In etwa so:

    testVar = tonumber(fibaro:getValue( 89,'value')) + tonumber(fibaro:getValue( 94,'value')) + tonumber(fibaro:getValue( 95,'value'))
    Ist eine dieser Lampen eingeschaltet, so ist testVar > 0.

    Und dann brauchst Du einr zweistufige If-Abfrage in der Du erst die Zeit prüfst und dann die Kontrollvariable:

    BG Rene

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)

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