Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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

  • Der neue Monatsrückblick für Mai und Juni 2026 ist online!
    BluefoxB
    Bluefox
    8
    1
    1.1k

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    3.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    6.2k

Einschaltdauer

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 4 Kommentatoren 2.0k 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: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

      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

              Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

              Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

              Mit deinem Input könnte dieser Beitrag noch besser werden 💗

              Registrieren Anmelden
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              310

              Online

              33.0k

              Benutzer

              83.6k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2026
              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