Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Einschaltdauer

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Einschaltdauer

Scheduled Pinned Locked Moved Skripten / Logik
6 Posts 4 Posters 1.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    HKF8770
    wrote on last edited by
    #1

    Bei jedem Schalter gibt es ja on-time, welche ich über ein Skript auf 600 setze, also 600 Sekunden.

    Nach 600 Sekunden schaltet das Licht auch wieder aus, soweit so gut.

    Ich möchte aber nun wissen wie lange dass Licht schon an ist,bzw. wie lange das Licht noch leuchtet von den 600 Sekunden.

    Ist dass auch gespeichert und kann ich das Abrufen? Oder müsste ich dies errechnen?

    Sprich beim Skript automatisch einen Zähler setzten, welcher dann von 600 im Sekundentakt runterzählt.
    212_schalter_1.jpg

    Freddy

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      @HKF8770:

      Oder müsste ich dies errechnen? `
      Ja.

      Die ON_TIME wird innerhalb des Aktors ausgewertet.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Reply Last reply
      0
      • H Offline
        H Offline
        HKF8770
        wrote on last edited by
        #3

        Danke Paul…dachte es mir schon aber fragen koststet ja nichts

        Freddy

        1 Reply Last reply
        0
        • P Offline
          P Offline
          Phantomio
          wrote on last edited by
          #4

          Hallo,

          falls es für Dich oder jemand anderen noch Interessant ist.

          So habe ich es gelöst:

          ! ````
          createState('BadFensterLinksZaehler.Tag', 0, {read: true, write: true, type: 'number', name: "Bad Fenster Links"});
          createState('BadFensterLinksOffen.Tag', 0, {read: true, write: true, type: 'number', name: "Bad Fenster Links Offen"});
          createState('HaustuerZaehler.Tag', 0, {read: true, write: true, type: 'number', name: "Haustuer"});
          createState('HaustuerOffen.Tag', 0, {read: true, write: true, type: 'number', name: "Haustuer Offen"});

          var BadFensterLinks = "hm-rpc.0.DeineID.1.STATE"; // Bad Drehgriff Fenster links:1.STAT
          var BadFensterLinksOffen = "javascript.0.BadFensterLinksOffen.Tag"; // Bad Fenster LinksOffen
          var Haustuer = "hm-rpc.0.DeineID.1.STATE"; // Haustuer:1.STATE
          var HaustuerOffen = "javascript.0.HaustuerOffen.Tag"; // Haustuer Offen

          ! on ({id: BadFensterLinks, val: 1}, fBadFensterLinksAuf);
          on ({id: BadFensterLinks, val: 2}, fBadFensterLinksAuf);
          on ({id: Haustuer, change: "gt"}, fHaustuer);
          on ({id: HaustuerOffen, change: "any"}, fHaustuerOffen);
          ! function fBadFensterLinksAuf (){
          setState("javascript.0.BadFensterLinksZaehler.Tag", ++getState("javascript.0.BadFensterLinksZaehler.Tag").val);
          newvalue = Number(getState("javascript.0.BadFensterLinksOffen.Tag").val);
          newvalue = newvalue + 0.01;
          newvalue = newvalue.toFixed(2);
          setState("javascript.0.BadFensterLinksOffen.Tag", newvalue);
          }
          ! function fBadFensterLinksOffen (){
          if (getState(BadFensterLinks).val !== 0){
          newvalue = Number(getState("javascript.0.BadFensterLinksOffen.Tag").val);
          newvalue = newvalue + 0.10;
          newvalue = newvalue.toFixed(2); // subtraktion beider Werte
          setStateDelayed ("javascript.0.BadFensterLinksOffen.Tag", newvalue, 6000);
          }
          }
          ! function fHaustuer (){
          setState("javascript.0.HaustuerZaehler.Tag", ++getState("javascript.0.HaustuerZaehler.Tag").val);
          newvalue = Number(getState("javascript.0.HaustuerOffen.Tag").val);
          newvalue = newvalue + 0.01;
          newvalue = newvalue.toFixed(2);
          setState("javascript.0.HaustuerOffen.Tag", newvalue);
          }
          ! function fHaustuerOffen(){
          if (getState(Haustuer).val === true){
          newvalue = Number(getState("javascript.0.HaustuerOffen.Tag").val);
          newvalue = newvalue + 0.10;
          newvalue = newvalue.toFixed(2);
          setStateDelayed ("javascript.0.HaustuerOffen.Tag", newvalue, 6000);
          }
          }
          ! ````
          So in der Art habe ich es auch schon direkt auf der CCU2 gelöst.

          Bad ist eine Drehriffkontakt von Homematic (Zustand 0, 1 , 3 je nach dem ob zu offen oder gekippt)

          Haustür ein Funk Fenster Kontakt Magnetkontakt von Homematic (true, false Zustand)

          Die eine Variable zählt die Anzahl der Öffnungen.

          Die andere ca. die Zeit (Nicht hundertprozentig, aber ich denke für die meisten Anwendungen sollte es reichen.

          Löst ein Kontakt aus, greift durch das hochzählen der Variable die zweite Funktion z.B. fHaustuerOffen

          Ach ja nicht vergessen den Zähler nachts wieder zu reseten :shock:

          ! schedule("0 0 * * *", function () { log('Schedule Aktion Tuer Fenster Kontakte Zaehler reset 00:00 Uhr'); setState("javascript.0.BadFensterLinksZaehler.Tag", 0); setState("javascript.0.BadFensterLinksOffen.Tag", 0); setState("javascript.0.HaustuerZaehler.Tag", 0); setState("javascript.0.HaustuerOffen.Tag", 0); }); !
          Das ganze kann bestimmt durch globale Funktionen noch weiter zusammengefasst werden, da ich aber Blutiger Anfänger / Hobbyprogrammierer bin,

          löse ich es oftmals nach dem KIS (KEEP IT SIMPLE) Prinzip :lol: :lol: :lol:

          Gruß

          Phantomio

          Geräte: CCU2, RaspberryPi2,

          Adapter: email, feiertage, flot, fritzbox, history, hm-rpc.0, hm-rpc.1 (Für Homematic IP), ical, javascript, sayit, scenes, socketio, sonos, tankerkoenig, telegram, text2command, vis, web, yr

          1 Reply Last reply
          0
          • P Offline
            P Offline
            pix
            wrote on last edited by
            #5

            Hallo Phantomio,

            interessanter Ansatz, die Zeit zu messen: Beim Öffnen der Tür wird nach 6s ein Dezimalzähler um 0.1 erhöht. Die Erhöhung startet die Subscription neu und nach 6s wird wieder erhöht, usw. So kommst du auf 10s genaue Werte und die Last hält sich in Grenzen.

            Benutze im Skript mehr idVariablen. Du hast sie ja oben schon angelegt, dann solltest du sie unten auch verwenden

            var BadFensterLinks              = "hm-rpc.0.DeineID.1.STATE";                   // Bad Drehgriff Fenster links:1.STAT
            var BadFensterLinksOffen         = "javascript.0.BadFensterLinksOffen.Tag";         // Bad Fenster LinksOffen
            var BadFensterLinksZaehler = "javascript.0.BadFensterLinksZaehler.Tag" // Bad Fenster Links Zähler (Tag)
            var Haustuer                     = "hm-rpc.0.DeineID.1.STATE";                   // Haustuer:1.STATE
            var HaustuerOffen                = "javascript.0.HaustuerOffen.Tag";                // Haustuer Offen 
            

            und unten dann

            function fBadFensterLinksAuf (){
                setState(BadFensterLinksZaehler, ++getState(BadFensterLinksZaehler).val); 
                newvalue = Number(getState(BadFensterLinksOffen).val);
                newvalue = newvalue + 0.01; 
                newvalue = newvalue.toFixed(2);
                setState(BadFensterLinksOffen", newvalue); 
            }
            ...
            
            ````So kannst du später leichter neue Objekte einbauen oder die Struktur deiner Objekte ändern ohne groß am Skript zu basteln.
            
            Gruß
            
            Pix
            
            PS:
            

            on ({id: BadFensterLinks, val: 1}, fBadFensterLinksAuf);
            on ({id: BadFensterLinks, val: 2}, fBadFensterLinksAuf);

            on ({id: BadFensterLinks, valGe: 1}, fBadFensterLinksAuf); // größer oder gleich 1

            ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

            1 Reply Last reply
            0
            • P Offline
              P Offline
              Phantomio
              wrote on last edited by
              #6

              Hey Pix,

              danke für die Tipps :D

              Ich bin für jeden Tipp dankbar.

              Gerade wenn diese einem das Leben langfristig erleichtern.

              Werde meine Scripte demnächst mal umbauen.

              Gruß

              Phantomio

              Geräte: CCU2, RaspberryPi2,

              Adapter: email, feiertage, flot, fritzbox, history, hm-rpc.0, hm-rpc.1 (Für Homematic IP), ical, javascript, sayit, scenes, socketio, sonos, tankerkoenig, telegram, text2command, vis, web, yr

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              693

              Online

              32.7k

              Users

              82.4k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe