Anwesenheitssimulator

Bastian

Moin, ich heiße Bastian und bin Autor dieser kleinen bescheidenen Seite. Zwanghaft, ja fast schon neurotisch beschäftige ich mich seit Jahren mit jedem erdenklichen technischen Schnick-Schnack. Nichts, was einen Stecker hat ist vor mir sicher. So war es klar, dass ich eines Tages das Haus auf den Kopf stellen und alles vernetzen würde.

Da ich bei meinem Vorhaben sehr viel Hilfe und Unterstützung in diversen Foren, Blogs und Boards erfahren habe, möchte ich diesen Blog zum sammeln meiner Smarthome- und Technikerrungenschaften nutzen um der Community zumindest ein klein wenig was zurückgeben zu können.

Das könnte Dich auch interessieren...

16 Antworten

  1. Sascha sagt:

    Genau den Nagel auf den Kopf getroffen. Umsetzung am Wochenende.

  2. waffel87 sagt:

    Moin Bastian! Cool wäre noch eine Endzeit. Sonst ist ja quasi bis morgens die ganze Nacht das Licht an (wenn man nicht daheim ist) Schön wäre wenn man fest sagen kann um 23:00 schalte aus, auch wenn Status Away.

    • Bastian sagt:

      Moin Waffel,

      diese Funktion ist indirekt schon vorhanden und lässt sich über die TimeOfDay Variable steuern 😉
      Die Variable gVarTimeOfDayValues beinhaltet bei mir nur den Wert „Evening“. „Night“ beginnt bei mir um 23 Uhr. Dies führt dazu, dass die Szene nur zwischen Sonnenuntergang (siehe Artikel zur Tageszeitvariable) und 23 Uhr die Anwesenheit simuliert.

      Gruß
      Bastian

  3. Mr.Coffee sagt:

    Starke Szene, die soeben eingespielt wurde.
    Danke:-)

  4. secundani sagt:

    Moin Bastian,
    ich hab mal ne Frage zu deinem Script. Kann ich die „PresentState“ auch über ein VD füllen und wenn ja wie müsste denn der Lua Code aussehen. Ich weiß wie ich ein VD anlegen muss, hab aber keine Ahnung wie ich das Befüllen machen muss.
    Wie realisierst Du denn, dass das Script weiß ob Du im Urlaub bist?
    Da ich Fibaro nicht als Alarmanlage einsetzte fehlt mir da die Vorstellung wie ich es realisieren kann.
    Es wäre schön, wenn Du mir da helfen könntest.
    Gruß secundani

  5. secundani sagt:

    Super und Dank für die Hilfe,
    hatte bei der Variable „PresentState“ die Anführungszeichen nicht gesetzt.
    Jetzt ist alles schön
    Danke und einen schönen Tag
    Gruß secundani

  6. secundani sagt:

    Hallo Bastian,
    kann ich dich nochmal nerven?
    Ich habe deine Scene übernommen und nur 2 Wallplugs eingetragen. Die Variablen sind ordnungsgemäß gefüllt. Des Weiteren habe ich gVarTimeOfDayValues = {‚Morning‘,’Day‘,’Evening‘,’Night‘} gelassen um zu testen ob die WallPlugs arbeiten.
    Verstehe ich es richtig, dass wenn ich über mein VD auf Holiday schalte, die Scene getriggert werden müsste? So das ein Wallplug angeschaltet wird.
    Bei mir tut sich leider gar nichts.
    Hast Du eine Idee?
    Danke und Gruß
    secundani

    • Bastian sagt:

      Moin,

      ich helfe gern, alles gut.
      Da ich den Status „Holiday“ nicht benutze, hat sich in der Szene ein kleiner Fehler eingeschlichen.
      Du musst folgende Zeilen austauschen:

      Suche: if fibaro:getGlobal(gVarPresentState) ~= 'Away' then
      Ersetze mit: if fibaro:getGlobal(gVarPresentState) ~= 'Away' and fibaro:getGlobal(gVarPresentState) ~= 'Holiday' then

      sowie

      Suche: while fibaro:getGlobal(gVarPresentState) == 'Away' do
      Ersetze mit: while fibaro:getGlobal(gVarPresentState) == 'Away' or fibaro:getGlobal(gVarPresentState) == 'Holiday' do

      So sollte es auch im Urlaubsmodus funktionieren. Wenn nicht, lass es mich wissen.

      Grüße
      Bastian

  7. secundani sagt:

    Hallo Bastian, Danke
    wie es immer so ist der Fehler sitzt vorm Monitor. Ich hatte Run Scene auf Manuell und nicht auf Automatik. Ich las in der Scene das mit dem Autostart – aber das bezog sich ja auf den Trigger.
    Nochmal ne Frage, es gibt doch keinen Unterschied zwischen Away und Holiday? dann kann ich ja die Änderung rückgängig machen und nutze nur Away mit meinem VD. Weil weg ist weg, oder ?
    Jedenfalls ist das eine super Scene die Du da gebaut hast, Hut ab !!!

    Danke
    Gruß secundani

  8. secundani sagt:

    Achso eins hätte ich noch, da ich keine HUE Lampen verwende, wie könnte ich mehrere WallPlugs einschreiben? Da ja Position 3 und 4 für Button der HUE voreingestellt sind.

    • Bastian sagt:

      Die Positionen sind nicht fest vergeben und/oder auf virtuelle Devices beschränkt. Du kannst dort soviele Geräte eintragen wie Du möchtest. Das Muster der Einträge entscheidet, was es für Einträge sind.
      Schaue Dir dazu nochmal die Abschnitte „Physikalische Geräte“, „Virtuelle Devices mit Slider“ und „Virtuelle Devices mit Buttons“ an. Dort ist es erklärt.

  9. secundani sagt:

    Moin Bastian,
    ich hab mir die Abschnitte durchgelesen und verstehe auch wie es sich mit den VD’s verhält. Leider verstehe ich diesen Teil der function nicht, da ich noch nicht richtig fit bin in Lua
    if type(deviceID) == ‚table‘ then
    if #deviceID == 3 then
    debug(‚green‘,’Virtuelles Device: ‚..fibaro:getName(deviceID[1])..‘ in ‚..fibaro:getRoomNameByDeviceID(deviceID[1])..‘. Drücke Button für ‚..randomTime..‘ Sekunden.‘)
    fibaro:call(deviceID[1], „pressButton“, deviceID[2])
    waitFunction(randomTime, ‚bis ‚..fibaro:getName(deviceID[1])..‘ ausgeschaltet wird‘)
    fibaro:call(deviceID[1], „pressButton“, deviceID[3])

    Könntest Du mir das bitte mal erklären?
    Gruß secundani

    • Bastian sagt:

      Hi,

      kein Problem. Dafür bin ich ja da 😉

      Die Variable in der die zu steuernden Geräte definiert werden ist vom Typ Lua Table (siehe Artikel Lua Grundlagen). Das Beispiel aus dem Artikel: {106, 112, {14,2,50,10}, {22,5,10}, 91}
      In dieser Table (nennen wir sie Table_1) sind 5 Variablen gespeichert und mittels Kommata getrennt. Darunter befinden sich zwei unterschiedliche Typen von Variablen: Nummern (106, 112 und 91) und wiederum weitere Tables ( {14,2,50,10} und {22,5,10}).
      Zur Laufzeit der Szene wird nun per Zufall einer der Werte aus Table_1 ausgewählt und der Typ der Variable (Nummer oder Table) bestimmt. Dies geschieht mit der Funktion type(deviceID). Handelt es sich bei der zufällig ausgewählten Variable aus Table_1 um eine Table (nennen wir sie Table_2), so wird mit if #deviceID == 3 geprüft, ob Table_2 genau 3 Elemente beinhaltet. Ist dies der Fall, handelt es sich um ein virtuelles Device welches per Tastendruck ein- und ausgeschaltet wird. Sind in der Variable aus Table_2 keine 3 Elemente (also 4), so ist es ein virtuelles Devices welches per Slider gesteuert wird.
      Und wenn type(deviceID) ergibt, dass es sich um eine Zahl handelt, ist es ein physikalisches Gerät, welches sich mittels On/Off schalten lässt.

      Ich hoffe es ist einigermaßen zu verstehen. Wenn nicht, komme gern nochmal auf mich zu.

      Grüße
      Bastian

      • secundani sagt:

        Hi Bastian ganz großen DANK!
        Die Erklärung ist so super geschrieben, dass ich es auf Anhieb verstanden habe. Da sollten sich alle mal ein Beispiel nehmen, wie man etwas erklären kann.
        Ich wünsche Dir ein schönes Pfingsten und bis bald zur nächsten Frage 😉
        Gruß secundani

Kommentar verfassen