Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Arbeitszeiten einhalten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    823

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Arbeitszeiten einhalten

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 3 Kommentatoren 333 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ldittmarL Online
    ldittmarL Online
    ldittmar
    Developer
    schrieb am zuletzt editiert von
    #1

    Hallo Leute. Bin schon ewig im Homeoffice und vergesse immer wieder meine Zeiten zu "stechen". Ich habe jetzt eine Zigbee RGB Lampe die rot leuchtet wenn ich nicht arbeite und grün, wenn ich gestochen habe. Ich würde jetzt gerne haben, dass die Arbeitszeit gezählt wird und nach 8 Stunden die Lampe von grün auf blau und nach 9:45 Stunden auf gelb springt. Die Pausen müssen natürlich abgezogen werden. Wie mache ich das am besten? Hat jemand eine Idee? Ich dachte vielleicht die Zeiten in einem Array zu packen und jede Minute zu schauen ob die Zeiten erreicht worden sind. Hat jemand eine andere Idee?

    G OliverIOO 2 Antworten Letzte Antwort
    0
    • ldittmarL ldittmar

      Hallo Leute. Bin schon ewig im Homeoffice und vergesse immer wieder meine Zeiten zu "stechen". Ich habe jetzt eine Zigbee RGB Lampe die rot leuchtet wenn ich nicht arbeite und grün, wenn ich gestochen habe. Ich würde jetzt gerne haben, dass die Arbeitszeit gezählt wird und nach 8 Stunden die Lampe von grün auf blau und nach 9:45 Stunden auf gelb springt. Die Pausen müssen natürlich abgezogen werden. Wie mache ich das am besten? Hat jemand eine Idee? Ich dachte vielleicht die Zeiten in einem Array zu packen und jede Minute zu schauen ob die Zeiten erreicht worden sind. Hat jemand eine andere Idee?

      G Online
      G Online
      guergen
      schrieb am zuletzt editiert von guergen
      #2

      @ldittmar Mal so ins "blaue" gebastelt...:
      7f69935a-3a5d-4419-8bad-4bf108d09e89-grafik.png
      Die Pausen sind natürlich noch nicht berücksichtigt, aber das ist ja nicht ganz so schwer, entweder die Zeiten anpassen, oder ausstempeln....

      1 Antwort Letzte Antwort
      0
      • ldittmarL ldittmar

        Hallo Leute. Bin schon ewig im Homeoffice und vergesse immer wieder meine Zeiten zu "stechen". Ich habe jetzt eine Zigbee RGB Lampe die rot leuchtet wenn ich nicht arbeite und grün, wenn ich gestochen habe. Ich würde jetzt gerne haben, dass die Arbeitszeit gezählt wird und nach 8 Stunden die Lampe von grün auf blau und nach 9:45 Stunden auf gelb springt. Die Pausen müssen natürlich abgezogen werden. Wie mache ich das am besten? Hat jemand eine Idee? Ich dachte vielleicht die Zeiten in einem Array zu packen und jede Minute zu schauen ob die Zeiten erreicht worden sind. Hat jemand eine andere Idee?

        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von
        #3

        @ldittmar

        ich würde da eher den ereignisgesteuerten weg fahren.
        du hast leider nicht erzählt wie du "stichst"

        Also bei Arbeitsbeginn (einstechen) zeichnest du die beginnzeit auf und rechnest dir die Zeit bis zum nächsten Ereignis aus, stellst einen javascript timer für diese Zeit, Beim erreichen der Zeit wird dann die entsprechende Aktion ausgeführt, gelb rot grün blau. wenn du die Arbeitszeit unterbrichst (also ausstechen) unterbrichst du den Timer und berechnest ihn bein nächsten einstechen wieder neu.
        Da der Timer nur im Speicher existiert und bei Neustart des Skripts verloren ist, musst du dir die Zeiten merken, so das du bei Neustart wieder neu berechnen kannst.

        beim ein und ausstechen musst du dir regeln überlegen, wie das skript arbeitsbegin, pause anfang, pause ende und arbeitsende unterscheiden kannst.

        wenn du nur einen taster hast wird es etwas aufwändiger wie wenn du mehrere hast.
        bei den unterschiedlichen ereignissen musst du verschiedene dinge tun.
        arbeitsende: aufgezeichnete zeiten des tages vergessen
        arbeitsbegin: zeit aufzeichnen
        pausen anfang: zeit für arbeitsende untertägig eintragen
        pause ende: zeit für arbeitsbeginn untertägig eintragen

        dein datenpunkt könnte folgende Struktur haben (Am Ende des Tages)
        [
        {beginn:"09:00",ende:"10:11"},
        {beginn:"10:35",ende:"12:42"},
        {beginn:"13:50",ende:"17:15"}
        ]

        Untertägig kann das Skript an der Befüllung erkennen, wo man gerade ist.
        Fehlt zb im letzten Element des Arrays die ende Eigenschaft, dann war man bei Neustart gerade bei der Arbeit und kann den Timer für das geplante Arbeitsende neu berechnen.

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        ldittmarL 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @ldittmar

          ich würde da eher den ereignisgesteuerten weg fahren.
          du hast leider nicht erzählt wie du "stichst"

          Also bei Arbeitsbeginn (einstechen) zeichnest du die beginnzeit auf und rechnest dir die Zeit bis zum nächsten Ereignis aus, stellst einen javascript timer für diese Zeit, Beim erreichen der Zeit wird dann die entsprechende Aktion ausgeführt, gelb rot grün blau. wenn du die Arbeitszeit unterbrichst (also ausstechen) unterbrichst du den Timer und berechnest ihn bein nächsten einstechen wieder neu.
          Da der Timer nur im Speicher existiert und bei Neustart des Skripts verloren ist, musst du dir die Zeiten merken, so das du bei Neustart wieder neu berechnen kannst.

          beim ein und ausstechen musst du dir regeln überlegen, wie das skript arbeitsbegin, pause anfang, pause ende und arbeitsende unterscheiden kannst.

          wenn du nur einen taster hast wird es etwas aufwändiger wie wenn du mehrere hast.
          bei den unterschiedlichen ereignissen musst du verschiedene dinge tun.
          arbeitsende: aufgezeichnete zeiten des tages vergessen
          arbeitsbegin: zeit aufzeichnen
          pausen anfang: zeit für arbeitsende untertägig eintragen
          pause ende: zeit für arbeitsbeginn untertägig eintragen

          dein datenpunkt könnte folgende Struktur haben (Am Ende des Tages)
          [
          {beginn:"09:00",ende:"10:11"},
          {beginn:"10:35",ende:"12:42"},
          {beginn:"13:50",ende:"17:15"}
          ]

          Untertägig kann das Skript an der Befüllung erkennen, wo man gerade ist.
          Fehlt zb im letzten Element des Arrays die ende Eigenschaft, dann war man bei Neustart gerade bei der Arbeit und kann den Timer für das geplante Arbeitsende neu berechnen.

          ldittmarL Online
          ldittmarL Online
          ldittmar
          Developer
          schrieb am zuletzt editiert von
          #4

          @oliverio Das Stechen wird durch Tastendruck getriggert und das Feierabend durch Doppelklick. (Arbeitstechnisch müssen wir und online an- und abmelden)

          Also: Nehmen wir an, ich beginne um 9:00. Also setze ich mein Trigger auf 17 Uhr, zur Umstellung auf blau und noch ein Trigger auf 18:45 zur Umstellung auf gelb. Wenn ich in die Pause gehe, klicke ich nochmal auf die Taste, dann wird das Licht rot, ich merke mir die Zeit 12:00 und beende beide Trigger. Wenn ich dann zurück bin z.B. 13:00 berechne ich beide Trigger neu 18:00 und 19:45.

          Habe ich es richtig verstanden? Klingt Ressourcensparender als jede Minute zu schauen.

          OliverIOO 1 Antwort Letzte Antwort
          0
          • ldittmarL ldittmar

            @oliverio Das Stechen wird durch Tastendruck getriggert und das Feierabend durch Doppelklick. (Arbeitstechnisch müssen wir und online an- und abmelden)

            Also: Nehmen wir an, ich beginne um 9:00. Also setze ich mein Trigger auf 17 Uhr, zur Umstellung auf blau und noch ein Trigger auf 18:45 zur Umstellung auf gelb. Wenn ich in die Pause gehe, klicke ich nochmal auf die Taste, dann wird das Licht rot, ich merke mir die Zeit 12:00 und beende beide Trigger. Wenn ich dann zurück bin z.B. 13:00 berechne ich beide Trigger neu 18:00 und 19:45.

            Habe ich es richtig verstanden? Klingt Ressourcensparender als jede Minute zu schauen.

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #5

            @ldittmar
            ja genau.
            wobei du den 2.trigger ja erst starten musst, wenn der erste erreicht ist.
            dann läuft immer nur ein trigger

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            736

            Online

            32.6k

            Benutzer

            82.1k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe