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. Einschaltdauer

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.3k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Einschaltdauer

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 4 Kommentatoren 1.7k Aufrufe
  • Ä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.
  • H Offline
    H Offline
    HKF8770
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • H Offline
        H Offline
        HKF8770
        schrieb am zuletzt editiert von
        #3

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

        Freddy

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          Phantomio
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            pix
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              Phantomio
              schrieb am zuletzt editiert von
              #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 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

              780

              Online

              32.5k

              Benutzer

              81.7k

              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