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. Einsteigerfragen
  4. Automatisierung
  5. Steckdose über vis Steuerelemente automatisieren

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

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

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

Steckdose über vis Steuerelemente automatisieren

Geplant Angeheftet Gesperrt Verschoben Automatisierung
25 Beiträge 3 Kommentatoren 2.6k Aufrufe 1 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.
  • ChendaC Offline
    ChendaC Offline
    Chenda
    schrieb am zuletzt editiert von
    #1

    Hi zusammen,
    ich habe mit meinem iobroker nochmal komplett neu angefangen. Die Geräte habe ich nun alle integriert.
    Und den Energieflussadapter konfiguriert.
    Nun möchte ich eine Visualisierung für einen Heubedampfer erstellen.
    Meine idee ist die Folgende:
    Grundzustand: Heubedampfer ist leer --> Steckdose ist aus
    Bereit: Heubedampfer ist gefüllt und bereit (Auswahl durch entsprechenden Button in der VIS-2) --> Steckdose aus
    Arbeitet: Heubedampfer ist gefüllt und aktiv --> Steckdose an
    Fertig: heubedampfer ist gefüllt, aber fertig --> Steckdose aus

    Sobald der Heubedampfer im Status bereit ist soll er automatisch arbeiten (Steckdose ein), sobald genug Stromüberschuss vorhanden ist. Und dann nach genau 60 Minuten Steckdose wieder aus. --> Zustand fertig.

    Den aktuellen Überschuss berechne ich in einem javascript und lege ihn im alias alias.0.Erzeugung.Ueberschuss ab.
    Die Steckdose kann ich über das Element hs100.0.192_168_178_29.state schalten und den Status auslesen.

    Mein Verständnisproblem ist, wie ich die Steuerung über die grafische Oberfläche (VIS2) angehen kann.

    HomoranH paul53P 2 Antworten Letzte Antwort
    0
    • ChendaC Chenda

      Hi zusammen,
      ich habe mit meinem iobroker nochmal komplett neu angefangen. Die Geräte habe ich nun alle integriert.
      Und den Energieflussadapter konfiguriert.
      Nun möchte ich eine Visualisierung für einen Heubedampfer erstellen.
      Meine idee ist die Folgende:
      Grundzustand: Heubedampfer ist leer --> Steckdose ist aus
      Bereit: Heubedampfer ist gefüllt und bereit (Auswahl durch entsprechenden Button in der VIS-2) --> Steckdose aus
      Arbeitet: Heubedampfer ist gefüllt und aktiv --> Steckdose an
      Fertig: heubedampfer ist gefüllt, aber fertig --> Steckdose aus

      Sobald der Heubedampfer im Status bereit ist soll er automatisch arbeiten (Steckdose ein), sobald genug Stromüberschuss vorhanden ist. Und dann nach genau 60 Minuten Steckdose wieder aus. --> Zustand fertig.

      Den aktuellen Überschuss berechne ich in einem javascript und lege ihn im alias alias.0.Erzeugung.Ueberschuss ab.
      Die Steckdose kann ich über das Element hs100.0.192_168_178_29.state schalten und den Status auslesen.

      Mein Verständnisproblem ist, wie ich die Steuerung über die grafische Oberfläche (VIS2) angehen kann.

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

      Mein Verständnisproblem ist, wie ich die Steuerung über die grafische Oberfläche (VIS2) angehen kann.

      eigentlich gar nicht!
      Dafür benötigst du einen Logikadapter deiner Wahl.

      Über die Visualisierung kann man dann bestimmte Datenpunkte setzen (wahr/falsch) die in der Logik berücksichtigt werden sollen.

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      ChendaC 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

        Mein Verständnisproblem ist, wie ich die Steuerung über die grafische Oberfläche (VIS2) angehen kann.

        eigentlich gar nicht!
        Dafür benötigst du einen Logikadapter deiner Wahl.

        Über die Visualisierung kann man dann bestimmte Datenpunkte setzen (wahr/falsch) die in der Logik berücksichtigt werden sollen.

        ChendaC Offline
        ChendaC Offline
        Chenda
        schrieb am zuletzt editiert von
        #3

        @homoran ich bin nicht ganz sicher, was du mit Logikadapter meinst. Ich würde die Logik gerne in js abbilden.
        Ich stehe aber was deine Aussage bezüglich der Logik und der vis Datenpunkte angeht noch immer auf dem Schlauch.

        HomoranH paul53P 2 Antworten Letzte Antwort
        0
        • ChendaC Chenda

          @homoran ich bin nicht ganz sicher, was du mit Logikadapter meinst. Ich würde die Logik gerne in js abbilden.
          Ich stehe aber was deine Aussage bezüglich der Logik und der vis Datenpunkte angeht noch immer auf dem Schlauch.

          HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von Homoran
          #4

          @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

          Ich würde die Logik gerne in js abbilden.

          Dann wäre der javascript Adapter dein Freund.

          Wenn du javascript kennst, weisst du ja dass es ereignisorientiert arbeitet.

          Dann könnte die Umschaltung eines Datenpunkts von false auf true über ein vis-Widget der Trigger sein.
          Ebenso könntest du einen Datenpunkt "manual_override" über die vis von false auf true ändern.
          Diesen Wert könntest du im Script abfragen um bestimmte Varianten in deinem Script zu ermöglichen.

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          ChendaC 1 Antwort Letzte Antwort
          0
          • HomoranH Homoran

            @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

            Ich würde die Logik gerne in js abbilden.

            Dann wäre der javascript Adapter dein Freund.

            Wenn du javascript kennst, weisst du ja dass es ereignisorientiert arbeitet.

            Dann könnte die Umschaltung eines Datenpunkts von false auf true über ein vis-Widget der Trigger sein.
            Ebenso könntest du einen Datenpunkt "manual_override" über die vis von false auf true ändern.
            Diesen Wert könntest du im Script abfragen um bestimmte Varianten in deinem Script zu ermöglichen.

            ChendaC Offline
            ChendaC Offline
            Chenda
            schrieb am zuletzt editiert von
            #5

            @homoran ich habe mir schon ein js Script geschrieben, dass die Funktion erfüllen sollte, die ich will.

            on({id: "javascript.0.Heubedampfer.Status", change: "ne"}, function (obj) {
                let berschuss = getState("alias.0.Erzeugung.Ueberschuss")?.val || 0;
                let status = obj.state.val;
            
                if (status === "Bereit" && berschuss >= 2000) { // Mindestens 2000W Überschuss erforderlich
                    log("Genug Überschuss vorhanden! Heubedampfer startet.");
                    setState("hs100.0.192_168_178_29.state", true); // Steckdose einschalten
                    setState("javascript.0.Heubedampfer.Status", "Arbeitet");
                    let verbrauch = 2000; // Wenn an -> 2000W, wenn aus -> 0W
                    setState("alias.0.Verbrauch.Bedampfer", verbrauch);
                    // Countdown für 60 Minuten (3600 Sekunden)
                    setTimeout(function () {
                        log("60 Minuten sind um. Heubedampfer wird gestoppt.");
                        setState("hs100.0.192_168_178_29.state", false); // Steckdose ausschalten
                        setState("javascript.0.Heubedampfer.Status", "Fertig");
                        let verbrauch = 0; // Wenn an -> 2000W, wenn aus -> 0W
                        setState("alias.0.Verbrauch.Bedampfer", verbrauch);
                    }, 3600000);
                }
            });
            

            Nun brauche ich noch die gewünschte User-Interaktionsmöglichkeit über die vis2.
            Wie füge ich eine Grafik ein?
            Wie verändere ich die Grafik durch antippen?
            Wie löse ich durch antippen eine Statusänderung aus?

            HomoranH 1 Antwort Letzte Antwort
            0
            • ChendaC Chenda

              @homoran ich habe mir schon ein js Script geschrieben, dass die Funktion erfüllen sollte, die ich will.

              on({id: "javascript.0.Heubedampfer.Status", change: "ne"}, function (obj) {
                  let berschuss = getState("alias.0.Erzeugung.Ueberschuss")?.val || 0;
                  let status = obj.state.val;
              
                  if (status === "Bereit" && berschuss >= 2000) { // Mindestens 2000W Überschuss erforderlich
                      log("Genug Überschuss vorhanden! Heubedampfer startet.");
                      setState("hs100.0.192_168_178_29.state", true); // Steckdose einschalten
                      setState("javascript.0.Heubedampfer.Status", "Arbeitet");
                      let verbrauch = 2000; // Wenn an -> 2000W, wenn aus -> 0W
                      setState("alias.0.Verbrauch.Bedampfer", verbrauch);
                      // Countdown für 60 Minuten (3600 Sekunden)
                      setTimeout(function () {
                          log("60 Minuten sind um. Heubedampfer wird gestoppt.");
                          setState("hs100.0.192_168_178_29.state", false); // Steckdose ausschalten
                          setState("javascript.0.Heubedampfer.Status", "Fertig");
                          let verbrauch = 0; // Wenn an -> 2000W, wenn aus -> 0W
                          setState("alias.0.Verbrauch.Bedampfer", verbrauch);
                      }, 3600000);
                  }
              });
              

              Nun brauche ich noch die gewünschte User-Interaktionsmöglichkeit über die vis2.
              Wie füge ich eine Grafik ein?
              Wie verändere ich die Grafik durch antippen?
              Wie löse ich durch antippen eine Statusänderung aus?

              HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #6

              @chenda Du vermischt da gerade zwei Aufgaben!

              • Aufbau einer Visualisierung
              • Triggern/Beeinflussen einer Automatik.

              übrigens

              @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

              Den aktuellen Überschuss berechne ich in einem javascript und lege ihn im alias alias.0.Erzeugung.Ueberschuss ab.

              wieso da?
              und nicht unter 0_userdata.0?

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              ChendaC 1 Antwort Letzte Antwort
              0
              • ChendaC Chenda

                @homoran ich bin nicht ganz sicher, was du mit Logikadapter meinst. Ich würde die Logik gerne in js abbilden.
                Ich stehe aber was deine Aussage bezüglich der Logik und der vis Datenpunkte angeht noch immer auf dem Schlauch.

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #7

                @chenda sagte: Logik gerne in js

                Versuche es mal so:

                const idUeber = 'alias.0.Erzeugung.Ueberschuss';
                const idPlug  = 'hs100.0.192_168_178_29.state';
                const idVis   = '0_userdata.0.Heubedampfer.Bereit'; // boolean
                var delayOn = null;
                
                on(idUeber, function(dp) {
                    if(dp.state.val < 2000) { // Grenzwert anpassen!
                        clearTimeout(delayOn);
                        delayOn = null;
                    } else if(!delayOn && getState(idVis).val) {
                        delayOn = setTimeout(function() {
                            setState(idPlug, true);
                            setState(idVis, false, true);
                            setTimeout(function() {
                                setState(idPlug, false);
                                delayOn = null;
                            }, 3600000); // 60 Minuten
                        }, 300000); // 5 Minuten
                    }
                });
                

                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

                ChendaC 1 Antwort Letzte Antwort
                0
                • HomoranH Homoran

                  @chenda Du vermischt da gerade zwei Aufgaben!

                  • Aufbau einer Visualisierung
                  • Triggern/Beeinflussen einer Automatik.

                  übrigens

                  @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

                  Den aktuellen Überschuss berechne ich in einem javascript und lege ihn im alias alias.0.Erzeugung.Ueberschuss ab.

                  wieso da?
                  und nicht unter 0_userdata.0?

                  ChendaC Offline
                  ChendaC Offline
                  Chenda
                  schrieb am zuletzt editiert von
                  #8

                  @homoran sagte in Steckdose über vis Steuerelemente automatisieren:

                  @chenda Du vermischt da gerade zwei Aufgaben!

                  • Aufbau einer Visualisierung
                  • Triggern/Beeinflussen einer Automatik.

                  Kann schon sein, dass ich da was vermische, aber ich brauche es ja auch gemischt. Ich brauche ja die vis zur Steuerung. Die Logik lediglich zur Automatisierung.

                  @homoran sagte in Steckdose über vis Steuerelemente automatisieren:

                  @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

                  Den aktuellen Überschuss berechne ich in einem javascript und lege ihn im alias alias.0.Erzeugung.Ueberschuss ab.

                  wieso da?
                  und nicht unter 0_userdata.0?

                  der alias verweist auf javascript.0.Erzeugung.Ueberschuss -- das könnte ich auch unter 0_userdata anlegen; da hast du recht und habe ich nicht drüber nachgedacht.

                  HomoranH 1 Antwort Letzte Antwort
                  0
                  • ChendaC Chenda

                    @homoran sagte in Steckdose über vis Steuerelemente automatisieren:

                    @chenda Du vermischt da gerade zwei Aufgaben!

                    • Aufbau einer Visualisierung
                    • Triggern/Beeinflussen einer Automatik.

                    Kann schon sein, dass ich da was vermische, aber ich brauche es ja auch gemischt. Ich brauche ja die vis zur Steuerung. Die Logik lediglich zur Automatisierung.

                    @homoran sagte in Steckdose über vis Steuerelemente automatisieren:

                    @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

                    Den aktuellen Überschuss berechne ich in einem javascript und lege ihn im alias alias.0.Erzeugung.Ueberschuss ab.

                    wieso da?
                    und nicht unter 0_userdata.0?

                    der alias verweist auf javascript.0.Erzeugung.Ueberschuss -- das könnte ich auch unter 0_userdata anlegen; da hast du recht und habe ich nicht drüber nachgedacht.

                    HomoranH Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von
                    #9

                    @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

                    der alias verweist auf javascript.0.Erzeugung.Ueberschuss

                    ok, das ist der Sinn eines alias. Passt daher.

                    ich habe weder vis-2 noch kann ich javascript. aber du hast ja einen Trigger DP.
                    dann nimm doch in der vis einen Button der diesen DP ändert.

                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    1 Antwort Letzte Antwort
                    0
                    • ChendaC Chenda

                      Hi zusammen,
                      ich habe mit meinem iobroker nochmal komplett neu angefangen. Die Geräte habe ich nun alle integriert.
                      Und den Energieflussadapter konfiguriert.
                      Nun möchte ich eine Visualisierung für einen Heubedampfer erstellen.
                      Meine idee ist die Folgende:
                      Grundzustand: Heubedampfer ist leer --> Steckdose ist aus
                      Bereit: Heubedampfer ist gefüllt und bereit (Auswahl durch entsprechenden Button in der VIS-2) --> Steckdose aus
                      Arbeitet: Heubedampfer ist gefüllt und aktiv --> Steckdose an
                      Fertig: heubedampfer ist gefüllt, aber fertig --> Steckdose aus

                      Sobald der Heubedampfer im Status bereit ist soll er automatisch arbeiten (Steckdose ein), sobald genug Stromüberschuss vorhanden ist. Und dann nach genau 60 Minuten Steckdose wieder aus. --> Zustand fertig.

                      Den aktuellen Überschuss berechne ich in einem javascript und lege ihn im alias alias.0.Erzeugung.Ueberschuss ab.
                      Die Steckdose kann ich über das Element hs100.0.192_168_178_29.state schalten und den Status auslesen.

                      Mein Verständnisproblem ist, wie ich die Steuerung über die grafische Oberfläche (VIS2) angehen kann.

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      @chenda sagte: Status bereit ist soll er automatisch arbeiten (Steckdose ein), sobald genug Stromüberschuss vorhanden ist.

                      Dann muss auf den Überschuss getriggert werden und im Trigger die Bereitschaft geprüft werden.

                      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

                      ChendaC 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @chenda sagte: Status bereit ist soll er automatisch arbeiten (Steckdose ein), sobald genug Stromüberschuss vorhanden ist.

                        Dann muss auf den Überschuss getriggert werden und im Trigger die Bereitschaft geprüft werden.

                        ChendaC Offline
                        ChendaC Offline
                        Chenda
                        schrieb am zuletzt editiert von
                        #11

                        @paul53 ich dachte von der Logik her ist es wahrscheinlich, dass der Stromüberschuss reicht, wenn der Bedampfer gefüllt wird. Daher trigger so rum. Macht das denn einen Unterschied? geht doch beides, oder irre ich mich?

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • ChendaC Chenda

                          @paul53 ich dachte von der Logik her ist es wahrscheinlich, dass der Stromüberschuss reicht, wenn der Bedampfer gefüllt wird. Daher trigger so rum. Macht das denn einen Unterschied? geht doch beides, oder irre ich mich?

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #12

                          @chenda sagte: Macht das denn einen Unterschied?

                          Wenn zum Zeitpunkt des Wechsels in Bereitschaft der Überschuss nicht ausreicht, bleibt die Steckdose aus, wenn nicht auf den Überschuss getriggert wird.

                          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
                          1
                          • paul53P paul53

                            @chenda sagte: Logik gerne in js

                            Versuche es mal so:

                            const idUeber = 'alias.0.Erzeugung.Ueberschuss';
                            const idPlug  = 'hs100.0.192_168_178_29.state';
                            const idVis   = '0_userdata.0.Heubedampfer.Bereit'; // boolean
                            var delayOn = null;
                            
                            on(idUeber, function(dp) {
                                if(dp.state.val < 2000) { // Grenzwert anpassen!
                                    clearTimeout(delayOn);
                                    delayOn = null;
                                } else if(!delayOn && getState(idVis).val) {
                                    delayOn = setTimeout(function() {
                                        setState(idPlug, true);
                                        setState(idVis, false, true);
                                        setTimeout(function() {
                                            setState(idPlug, false);
                                            delayOn = null;
                                        }, 3600000); // 60 Minuten
                                    }, 300000); // 5 Minuten
                                }
                            });
                            
                            ChendaC Offline
                            ChendaC Offline
                            Chenda
                            schrieb am zuletzt editiert von
                            #13

                            @paul53 Danke dir.
                            Ich habe das etwas angepasst. Was hälst du davon?

                            const idUeber = "alias.0.Erzeugung.Ueberschuss"; // Stromüberschuss
                            const idPlug  = "hs100.0.192_168_178_29.state"; // Steckdose
                            const idStatus = "javascript.0.Heubedampfer.Status"; // Heubedampfer-Zustand
                            const idVerbrauch = "alias.0.Verbrauch.Bedampfer"; // Verbrauchswert
                            var delayOn = null;
                            
                            // Überprüfung bei jeder Änderung des Stromüberschusses
                            on({id: idUeber, change: "ne"}, function(dp) {
                                let überschuss = dp.state.val;
                                let status = getState(idStatus)?.val || "Leer";
                            
                                if (status === "Bereit" && überschuss >= 2000 && !delayOn) {
                                    log("Genug Überschuss vorhanden! Startet in 5 Minuten...");
                                    
                                    // Verzögerung von 5 Minuten, um sicherzustellen, dass der Überschuss stabil bleibt
                                    delayOn = setTimeout(function() {
                                        log("Starte Heubedampfer für 60 Minuten!");
                                        setState(idPlug, true);
                                        setState(idStatus, "Arbeitet", true);
                                        setState(idVerbrauch, 2000); // Verbrauch direkt setzen
                            
                                        // Nach exakt 60 Minuten abschalten
                                        setTimeout(function() {
                                            log("60 Minuten sind um. Heubedampfer stoppt.");
                                            setState(idPlug, false);
                                            setState(idStatus, "Fertig", true);
                                            setState(idVerbrauch, 0); // Verbrauch wieder auf 0 setzen
                                            delayOn = null;
                                        }, 3600000); // 60 Minuten
                                    }, 300000); // 5 Minuten Verzögerung
                                }
                            });
                            
                            // Aktualisierung des Verbrauchswerts, wenn sich der Steckdosenstatus ändert
                            on({id: idPlug, change: "ne"}, function (obj) {
                                let status = obj.state.val; // Zustand der Steckdose
                                let verbrauch = status ? 2000 : 0; // Wenn an -> 2000W, wenn aus -> 0W
                                setState(idVerbrauch, verbrauch);
                            });
                            
                            
                            ChendaC 1 Antwort Letzte Antwort
                            0
                            • ChendaC Chenda

                              @paul53 Danke dir.
                              Ich habe das etwas angepasst. Was hälst du davon?

                              const idUeber = "alias.0.Erzeugung.Ueberschuss"; // Stromüberschuss
                              const idPlug  = "hs100.0.192_168_178_29.state"; // Steckdose
                              const idStatus = "javascript.0.Heubedampfer.Status"; // Heubedampfer-Zustand
                              const idVerbrauch = "alias.0.Verbrauch.Bedampfer"; // Verbrauchswert
                              var delayOn = null;
                              
                              // Überprüfung bei jeder Änderung des Stromüberschusses
                              on({id: idUeber, change: "ne"}, function(dp) {
                                  let überschuss = dp.state.val;
                                  let status = getState(idStatus)?.val || "Leer";
                              
                                  if (status === "Bereit" && überschuss >= 2000 && !delayOn) {
                                      log("Genug Überschuss vorhanden! Startet in 5 Minuten...");
                                      
                                      // Verzögerung von 5 Minuten, um sicherzustellen, dass der Überschuss stabil bleibt
                                      delayOn = setTimeout(function() {
                                          log("Starte Heubedampfer für 60 Minuten!");
                                          setState(idPlug, true);
                                          setState(idStatus, "Arbeitet", true);
                                          setState(idVerbrauch, 2000); // Verbrauch direkt setzen
                              
                                          // Nach exakt 60 Minuten abschalten
                                          setTimeout(function() {
                                              log("60 Minuten sind um. Heubedampfer stoppt.");
                                              setState(idPlug, false);
                                              setState(idStatus, "Fertig", true);
                                              setState(idVerbrauch, 0); // Verbrauch wieder auf 0 setzen
                                              delayOn = null;
                                          }, 3600000); // 60 Minuten
                                      }, 300000); // 5 Minuten Verzögerung
                                  }
                              });
                              
                              // Aktualisierung des Verbrauchswerts, wenn sich der Steckdosenstatus ändert
                              on({id: idPlug, change: "ne"}, function (obj) {
                                  let status = obj.state.val; // Zustand der Steckdose
                                  let verbrauch = status ? 2000 : 0; // Wenn an -> 2000W, wenn aus -> 0W
                                  setState(idVerbrauch, verbrauch);
                              });
                              
                              
                              ChendaC Offline
                              ChendaC Offline
                              Chenda
                              schrieb am zuletzt editiert von
                              #14

                              Das Script funktioniert erstmal und tat, was es soll.
                              Nun wollte ich mir noch die Restzeiten anzeigen lassen. Dafür habe ich mir in VIS-2 ein html widget eingebunden,
                              84a314a7-0b0a-477e-8a57-538edffe31bd-image.png

                              im Feld Allgemein "html" habe ich folgenden Code eingebaut:

                              <div id="countdown" style="font-size: 28px; font-weight: bold; text-align: center;"></div>
                              
                              <script>
                                  const countdownElement = document.getElementById("countdown");
                                  const wartezeitDP = "javascript.0.Logik.Heubedampfer.Wartezeit";
                                  const arbeitszeitDP = "javascript.0.Logik.Heubedampfer.Restzeit";
                              
                                  function updateCountdown() {
                                      let wartezeit = getState(wartezeitDP)?.val || 0;
                                      let arbeitszeit = getState(arbeitszeitDP)?.val || 0;
                              
                                      if (wartezeit > 0) {
                                          let minutes = Math.floor(wartezeit / 60);
                                          let seconds = wartezeit % 60;
                                          countdownElement.innerHTML = `Wartezeit: ${minutes}:${seconds.toString().padStart(2, '0')} min`;
                                          countdownElement.style.color = "#FFA500"; // Orange für Wartezeit
                                      } else if (arbeitszeit > 0) {
                                          let minutes = Math.floor(arbeitszeit / 60);
                                          let seconds = arbeitszeit % 60;
                                          countdownElement.innerHTML = `Heubedampfer läuft: ${minutes}:${seconds.toString().padStart(2, '0')} min`;
                                          countdownElement.style.color = "#00FF00"; // Grün für aktive Betriebszeit
                                      } else {
                                          countdownElement.innerHTML = "Kein aktiver Timer";
                                          countdownElement.style.color = "#FF0000"; // Rot für keine Aktivität
                                      }
                                  }
                              
                                  // Aktualisierung alle 1 Sekunde
                                  setInterval(updateCountdown, 1000);
                                  updateCountdown();
                              </script>
                              

                              In den Variablen javascript.0.Logik.Heubedampfer.Wartezeit und javascript.0.Logik.Heubedampfer.Restzeit wird durch mein JS skript regelmäßig die Restzeit (in s) aktualisiert. Dennoch wird in der VIS-2 nichts angezeigt.
                              Was habe ich falsch gemacht?

                              HomoranH 1 Antwort Letzte Antwort
                              0
                              • ChendaC Chenda

                                Das Script funktioniert erstmal und tat, was es soll.
                                Nun wollte ich mir noch die Restzeiten anzeigen lassen. Dafür habe ich mir in VIS-2 ein html widget eingebunden,
                                84a314a7-0b0a-477e-8a57-538edffe31bd-image.png

                                im Feld Allgemein "html" habe ich folgenden Code eingebaut:

                                <div id="countdown" style="font-size: 28px; font-weight: bold; text-align: center;"></div>
                                
                                <script>
                                    const countdownElement = document.getElementById("countdown");
                                    const wartezeitDP = "javascript.0.Logik.Heubedampfer.Wartezeit";
                                    const arbeitszeitDP = "javascript.0.Logik.Heubedampfer.Restzeit";
                                
                                    function updateCountdown() {
                                        let wartezeit = getState(wartezeitDP)?.val || 0;
                                        let arbeitszeit = getState(arbeitszeitDP)?.val || 0;
                                
                                        if (wartezeit > 0) {
                                            let minutes = Math.floor(wartezeit / 60);
                                            let seconds = wartezeit % 60;
                                            countdownElement.innerHTML = `Wartezeit: ${minutes}:${seconds.toString().padStart(2, '0')} min`;
                                            countdownElement.style.color = "#FFA500"; // Orange für Wartezeit
                                        } else if (arbeitszeit > 0) {
                                            let minutes = Math.floor(arbeitszeit / 60);
                                            let seconds = arbeitszeit % 60;
                                            countdownElement.innerHTML = `Heubedampfer läuft: ${minutes}:${seconds.toString().padStart(2, '0')} min`;
                                            countdownElement.style.color = "#00FF00"; // Grün für aktive Betriebszeit
                                        } else {
                                            countdownElement.innerHTML = "Kein aktiver Timer";
                                            countdownElement.style.color = "#FF0000"; // Rot für keine Aktivität
                                        }
                                    }
                                
                                    // Aktualisierung alle 1 Sekunde
                                    setInterval(updateCountdown, 1000);
                                    updateCountdown();
                                </script>
                                

                                In den Variablen javascript.0.Logik.Heubedampfer.Wartezeit und javascript.0.Logik.Heubedampfer.Restzeit wird durch mein JS skript regelmäßig die Restzeit (in s) aktualisiert. Dennoch wird in der VIS-2 nichts angezeigt.
                                Was habe ich falsch gemacht?

                                HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von Homoran
                                #15

                                @chenda warum um alles in der Welt lässt du das in der vis laufen?
                                Das läuft dann im (wahrscheinlich deutlich leistungsschwächeren) Frontend ab und nich auf dem Server.

                                Lass es ganz normal im js-Adapter laufen und lass dir nur denn Wert der Datenpunkte in der Vis anzeigen.
                                Das Tablet oder was auch immer hat schon genug mit der grafischen Aufarbeitung zu tun.

                                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                ChendaC 1 Antwort Letzte Antwort
                                0
                                • HomoranH Homoran

                                  @chenda warum um alles in der Welt lässt du das in der vis laufen?
                                  Das läuft dann im (wahrscheinlich deutlich leistungsschwächeren) Frontend ab und nich auf dem Server.

                                  Lass es ganz normal im js-Adapter laufen und lass dir nur denn Wert der Datenpunkte in der Vis anzeigen.
                                  Das Tablet oder was auch immer hat schon genug mit der grafischen Aufarbeitung zu tun.

                                  ChendaC Offline
                                  ChendaC Offline
                                  Chenda
                                  schrieb am zuletzt editiert von
                                  #16

                                  @homoran okay, ich kann das javascript natürlich verschieben. Aber ich bekomme dennoch keinerlei Werte in der VIS angezeigt.

                                  HomoranH 1 Antwort Letzte Antwort
                                  0
                                  • ChendaC Chenda

                                    @homoran okay, ich kann das javascript natürlich verschieben. Aber ich bekomme dennoch keinerlei Werte in der VIS angezeigt.

                                    HomoranH Nicht stören
                                    HomoranH Nicht stören
                                    Homoran
                                    Global Moderator Administrators
                                    schrieb am zuletzt editiert von
                                    #17

                                    @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

                                    Aber ich bekomme dennoch keinerlei Werte in der VIS angezeigt.

                                    dann reicht ja ein Number-Widget das die Werte des Countdown Datenpunkts anzeigt.
                                    mache ich schon lange so (mit vis! nicht mit vis-2! aber das sollte nicht der Grund sein)

                                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                    ChendaC 1 Antwort Letzte Antwort
                                    0
                                    • HomoranH Homoran

                                      @chenda sagte in Steckdose über vis Steuerelemente automatisieren:

                                      Aber ich bekomme dennoch keinerlei Werte in der VIS angezeigt.

                                      dann reicht ja ein Number-Widget das die Werte des Countdown Datenpunkts anzeigt.
                                      mache ich schon lange so (mit vis! nicht mit vis-2! aber das sollte nicht der Grund sein)

                                      ChendaC Offline
                                      ChendaC Offline
                                      Chenda
                                      schrieb am zuletzt editiert von
                                      #18

                                      @homoran ja da hast du eigentlich recht, aber mir wird dennoch nix angezeigt:
                                      6e8cbe53-4d50-42ef-ba1f-18224f5028fb-image.png
                                      7be3902e-68e5-4435-931a-302a73d8ed91-image.png
                                      6d4b94cf-2b91-4c4c-8952-1ebd76b00239-image.png
                                      19080b75-8a12-4d17-ac4a-215ef6d23171-image.png

                                      HomoranH 1 Antwort Letzte Antwort
                                      0
                                      • ChendaC Chenda

                                        @homoran ja da hast du eigentlich recht, aber mir wird dennoch nix angezeigt:
                                        6e8cbe53-4d50-42ef-ba1f-18224f5028fb-image.png
                                        7be3902e-68e5-4435-931a-302a73d8ed91-image.png
                                        6d4b94cf-2b91-4c4c-8952-1ebd76b00239-image.png
                                        19080b75-8a12-4d17-ac4a-215ef6d23171-image.png

                                        HomoranH Nicht stören
                                        HomoranH Nicht stören
                                        Homoran
                                        Global Moderator Administrators
                                        schrieb am zuletzt editiert von Homoran
                                        #19

                                        @chenda wie gesagt kenne ich vis-2 nicht

                                        aber NaN heisst Not a Number.
                                        du hast da Text in dem Feld

                                        der müsste nach meinem Verständnis darunter in "voranstellen..."

                                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                        ChendaC 1 Antwort Letzte Antwort
                                        0
                                        • HomoranH Homoran

                                          @chenda wie gesagt kenne ich vis-2 nicht

                                          aber NaN heisst Not a Number.
                                          du hast da Text in dem Feld

                                          der müsste nach meinem Verständnis darunter in "voranstellen..."

                                          ChendaC Offline
                                          ChendaC Offline
                                          Chenda
                                          schrieb am zuletzt editiert von Chenda
                                          #20

                                          @homoran ja stimmt, aber das ändert nix, wenn ich das weglasse:
                                          fa6b0503-dd28-496e-9a3b-dcc474d6aa70-image.png
                                          oder ein String Widget benutze:
                                          7498c130-e108-44a6-8ad9-091e23f23a1f-image.png
                                          ich verstehe einfach nicht was da nicht stimmt :-/

                                          In "voranstellen" braucht das glaub nicht, denn im Objekt Auswahldialog steht und es heißt ja auch voranstellen html
                                          04ee6d13-6359-4db9-b0c7-74bf7388ca8d-image.png

                                          HomoranH 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

                                          751

                                          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