Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. (gelöst) Javascript mit Button starten und beenden

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

(gelöst) Javascript mit Button starten und beenden

Geplant Angeheftet Gesperrt Verschoben Visualisierung
30 Beiträge 6 Kommentatoren 2.8k Aufrufe 4 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.
  • HALH HAL

    @homoran weil keine Reaktion kam. Ich wollte ja auch nur wissen, ob es in VIS eine Möglichkeit gibt Javascript zu starten und zu beenden. Dann hätte ich mir einfach mit zwei unterschiedlichen Scripten beholfen.

    DJMarc75D Online
    DJMarc75D Online
    DJMarc75
    schrieb am zuletzt editiert von DJMarc75
    #10

    @hal sagte in Javascript mit Button starten und beenden:

    in VIS eine Möglichkeit gibt Javascript zu starten und zu beenden

    so z.B.
    Screenshot 2022-11-12 185600.png

    Edit: den TriggerButton in VIS natürlich als Widget einfügen...

    Lehrling seit 1975 !!!
    Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
    https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

    HALH 1 Antwort Letzte Antwort
    0
    • DJMarc75D DJMarc75

      @hal sagte in Javascript mit Button starten und beenden:

      in VIS eine Möglichkeit gibt Javascript zu starten und zu beenden

      so z.B.
      Screenshot 2022-11-12 185600.png

      Edit: den TriggerButton in VIS natürlich als Widget einfügen...

      HALH Offline
      HALH Offline
      HAL
      schrieb am zuletzt editiert von HAL
      #11

      @djmarc75 sieht gut aus und werde ich gleich mal probieren 👍
      Und Blockly kenn ich 🙂

      Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
      (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

      DJMarc75D HomoranH 2 Antworten Letzte Antwort
      0
      • HALH HAL

        @djmarc75 sieht gut aus und werde ich gleich mal probieren 👍
        Und Blockly kenn ich 🙂

        DJMarc75D Online
        DJMarc75D Online
        DJMarc75
        schrieb am zuletzt editiert von
        #12

        @hal Und so noch flexibler:

        Screenshot 2022-11-12 190416.png

        oben Dein Trigger und unten jeweils das Skript...

        Aber trotzdem macht es wenig Sinn Skripte mit u.U. laufenden Funktionen einfach so zu deaktivieren.

        Lehrling seit 1975 !!!
        Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
        https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

        HALH 1 Antwort Letzte Antwort
        0
        • DJMarc75D DJMarc75

          @hal Und so noch flexibler:

          Screenshot 2022-11-12 190416.png

          oben Dein Trigger und unten jeweils das Skript...

          Aber trotzdem macht es wenig Sinn Skripte mit u.U. laufenden Funktionen einfach so zu deaktivieren.

          HALH Offline
          HALH Offline
          HAL
          schrieb am zuletzt editiert von
          #13

          @djmarc75 sagte in Javascript mit Button starten und beenden:

          Aber trotzdem macht es wenig Sinn Skripte mit u.U. laufenden Funktionen einfach so zu deaktivieren.

          Ich gebe Dir recht, aber am Javascript selber etwas zu verändern , dazu fehlt mir die Erfahrung.

          Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
          (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

          DJMarc75D 1 Antwort Letzte Antwort
          0
          • HALH HAL

            @djmarc75 sagte in Javascript mit Button starten und beenden:

            Aber trotzdem macht es wenig Sinn Skripte mit u.U. laufenden Funktionen einfach so zu deaktivieren.

            Ich gebe Dir recht, aber am Javascript selber etwas zu verändern , dazu fehlt mir die Erfahrung.

            DJMarc75D Online
            DJMarc75D Online
            DJMarc75
            schrieb am zuletzt editiert von
            #14

            @hal sagte in Javascript mit Button starten und beenden:

            am Javascript selber etwas zu verändern

            na es wurde ja schon erwähnt dass Du dieses Skript ja mal "zeigen" könntest (bitte in Codetags)
            ... evtl wird Dir dann besser geholfen !

            Lehrling seit 1975 !!!
            Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
            https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

            HALH 1 Antwort Letzte Antwort
            0
            • DJMarc75D DJMarc75

              @hal sagte in Javascript mit Button starten und beenden:

              am Javascript selber etwas zu verändern

              na es wurde ja schon erwähnt dass Du dieses Skript ja mal "zeigen" könntest (bitte in Codetags)
              ... evtl wird Dir dann besser geholfen !

              HALH Offline
              HALH Offline
              HAL
              schrieb am zuletzt editiert von HAL
              #15

              @djmarc75 das script ist hier:
              https://github.com/thps1990/TeslaChargejs/

              //=============================Tesla Ueberschussladen - TeslaChargejs==========================================
              //V 1.8.1-Beta
              //Stand:24.03.22
              
              //=============================Einstellungen/Konfiguration=====================================================
              //Wo soll das Skript die neuen Objekte anlegen (Mit PV-Überschuss geladene Energy.... )
              
              const ID_SKRIPT_OBJEKT_VERZEICHNIS = "0_userdata.0.TeslaChargejs";
              
              //Entprell Zeit, damit nicht mit jeder Wolke die Ladung unterbrochen wird
              const ENTPRELL_ZEIT                 = 0.2; //Minuten
              
              // Welche Leistung muss mindestens eingespeist werden, bevor das Skript das Laden (wieder) startet
              const MINDEST_EINSPEISE_LEISTUNG    = 1000; //Watt
              
              // Wieiviel darf aus dem Netz bezogen werden, bevor die Ladung abgebrochen wird.
              const MAXIMAL_NETZBEZUG             = 300; //Watt 
              
              //Mit welcher Stromstärke soll das Laden begonnen werden
              const START_STROMSTAERKE            = 5; // A
              
              //Mit welcher Stromstärke soll maximal geladen werden (Wird auch zum entladen des Hausakkus verwendet)
              const MAX_STROMSTAERKE              = 16; //A
              
              //Soll Netzbezug im Rahmen der Stromstärkenregulierung vermieden werden?
              //Wenn diese Option aktiviert ist wird die Stromstärke reduziert, sobald ein Strom aus dem Netz/AKku bezogen wird
              const NETZBEZUG_VERMEIDEN           = false; //true oder false 
              
               //IOBroker Objekt ID der Einspeiseleistung PV 
              const ID_EINSPEISE_LEISTUNG         = "OBJEKT.PV.EINSPEISUNG_LEISTUNG"; //Watt  
              
               //IObroker Objekt ID der Netzbezugsleistung PV
              const ID_NETZBEZUG_LEISTUNG         = "OBJEKT.PV.NETZBEZUG_LEISTUNG" ; //Watt
              
              //IOBroker Objekt ID zum Tesla, generiert vom Tesla-Adatper (Root)
              const ID_TSL                        = "tesla-motors.0.123456789"; 
              
              //Breitengrad Koordinaten der Heimatadresse, somit greift das Skript nur Zuhause
              const ZUHAUSE_LATITUDE              = 52.392755120782226;
              
              //Längengard Koordinaten der Heimatadresse
              const ZUHAUSE_LONGITUDE             = 13.79022433645216; //Längengrad Koordinaten
              
              //Maximale Entfernung des Autos von Zuhause; Umkreis in dem das Skript greift
              const ZUHAUSE_MAX_ENTFERNUNG        = 0.5 ; //KM
              
              //Loglevel des Scripts
              const LOGLEVEL                      = "INFO" ; //INFO oder DEBUG
              
              //Notifizierung per Telegramm aktivieren/deaktivieren <= Eine Telegram-Instanz muss in ioBroker eingerichtet sein
              //Benachrichtigung über Start/Stopp der Ladung und Beendigung -> Wie viel Energy wurde per Überschuss geladen
              const TELEGRAMM_NOTIFIZIERUNG       = false; // true oder false
              
              //Telegramm Notifizierung nur an einen einzelnen Nutzer (Leer lassen alle mit dem Bot verbundene Nutzer)
              const TELEGRAMM_NUTZER              = "Elon"; // Nutzernamen oder ""
              
              //Ist ein PV-Akku vorhanden? Wenn nein, sind alle folgenden Angaben obsolet
              const PV_AKKU_VORHANDEN             = false; //true oder false
              
              //IOBroker ObjektID des Akkustands 
              const ID_PV_AKKU_SOC                = "OBJEKT.PV.AKKUSTAND";
              
              // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
              const PV_AKKU_START_SOC             = 30; //%
              
              // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
              const PV_AKKU_STOP_SOC             = 15; //%
              
              //Gibt es 2 getrennte Objekte für Akku laden und entladen? Wenn ja, diesen Wert auf false setzen und die Objekte
              //für Laden und Entladen des Akkus als ID_EINSPEISE_LEISTUNG (Laden) und ID_NETZBEZUG_LEISTUNG(Entladen) setzen
              
              const PV_AKKU_LEISTUNG_EINSTATUS = true; // true oder false
              
              // Alles folgende ist nur notwendig, falls PV_AKKU_LEISTUNG_EINSTATUS = true
              //IOBroker ObjektID PV-Akku Status
              const ID_PV_AKKU_STAT = "OBJEKT.PV.AKKU_STATUS";
              
              //Welchen Wert hat das Objekt ID_PV_AKKU_STATUS wenn der Akku entladen wird?
              const PV_AKKU_STAT_ENTLADEN = "Entladen";
              
              //=============================Skript-Start=======================================
              //=============================Konstanten=========================================
              const ID_UEBERSCHUSSLADUNG_AKTIV =ID_SKRIPT_OBJEKT_VERZEICHNIS+".Ueberschussladung_aktiv";
              const ID_HAUSAKKU_ENTLADEN = ID_SKRIPT_OBJEKT_VERZEICHNIS +".Hausakku_entladen";
              const ID_ENERGY_ADDED_DAILY = ID_SKRIPT_OBJEKT_VERZEICHNIS+".energy_added_daily";
              const ID_ENERGY_ADDED_MONTHLY = ID_SKRIPT_OBJEKT_VERZEICHNIS+".energy_added_monthly";
              const ID_ENERGY_ADDED_YEARLY = ID_SKRIPT_OBJEKT_VERZEICHNIS+".energy_added_yearly";
              const ID_CHARGING_PHASES = ID_SKRIPT_OBJEKT_VERZEICHNIS+".charging_phases";
              const ID_CAR_STATE = ID_SKRIPT_OBJEKT_VERZEICHNIS+".car_state";
              const ID_TSL_STATE = ID_TSL + ".state";
              const ID_TSL_LATITUDE = ID_TSL + ".drive_state.latitude";
              const ID_TSL_LONGITUDE = ID_TSL + ".drive_state.longitude";
              const ID_TSL_CHARGING_STATE= ID_TSL + ".charge_state.charging_state";
              const ID_TSL_CMD_WAKEUP = ID_TSL + ".remote.wake_up";
              const ID_TSL_CMD_SET_AMPS = ID_TSL + ".remote.set_charging_amps-charging_amps";
              const ID_TSL_GET_AMPS = ID_TSL + ".charge_state.charge_amps";
              const ID_TSL_CMD_CHARGE_START = ID_TSL + ".remote.charge_start";
              const ID_TSL_CMD_CHARGE_STOP = ID_TSL + ".remote.charge_stop";
              const ID_TSL_CHARGING_PHASES = ID_TSL + ".charge_state.charger_phases"; 
              const ID_TSL_ADDED_ENERGY   = ID_TSL + ".charge_state.charge_energy_added";
              
              //==============================Variablen=========================================
              var timeout_running = false;
              var Einspeiseleistung = 0;
              var Netzbezug = 0;
              var trigger = [ID_EINSPEISE_LEISTUNG,ID_NETZBEZUG_LEISTUNG];
              var chargedsofar=0;
              
              var added_energy_without_excess = 0;
              //==============================Initialisierung===================================
              //Erstellen von Status, sofern nicht vorhanden
              //Mit Überschuss geladene Energy -> täglich, monatlich, jährlich
              createState(ID_ENERGY_ADDED_DAILY,0, {unit: "kWh" , read: true, write: true});
              createState(ID_ENERGY_ADDED_MONTHLY,0, {unit: "kWh" , read: true, write: true});
              createState(ID_ENERGY_ADDED_YEARLY,0, {unit: "kWh" , read: true, write: true});
              
              //Phasen-Korrektur
              createState(ID_CHARGING_PHASES,0, {read: true, write: true});
              
              //Fahrzeug Status
              createState(ID_CAR_STATE, {read: true, write: true});
              
              
              //Ein/Ausschalten der Ueberschussladung 
              createState(ID_UEBERSCHUSSLADUNG_AKTIV,true, {read: true, write: true});
              
              
              //Ein/Ausschalten der Hausakku-Entladen Funktion.  
              createState(ID_HAUSAKKU_ENTLADEN,false, {read: true, write: true});
              
              
              
              
              //====================Events=======================================
              
              //Implementierung/Regelkreis
              on({id: trigger,change: 'ne'}, function(obj){ //Wenn sich die Einspeiseleistung oder Netzbezug ändert....
                  var charging_state= getState(ID_TSL_CHARGING_STATE).val;
                  refresh_data();
                  log("Zuhause=" +at_home() + " timeout_runinng=" + timeout_running + " Überschussladungaktiv = " +getState(ID_UEBERSCHUSSLADUNG_AKTIV).val +" chargingstate=" +charging_state,true); 
              
                  if(charging_state != "Disconnected" && !timeout_running && !(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==0) &&  at_home())
                  {// Nur etwas tun, wenn das Auto mit Kabel verbunden, Ueberschussladen aktiv, Auto zuhause steht und gerade nicht auf eine Aktion gewartet wird
                      var ampborder = 700 ;//Watt <-- Geht immer von 3 phasigen laden aus
                     
                      if(getState(ID_TSL_CHARGING_PHASES).val == 1)
                      {//Wenn nur eine Phase, dann reduzieren
                          ampborder = 250;//Watt
                      }
              
                      if(charging_state == "Stopped")
                      { //Auto ist angeschlossen, lädt aber nicht
                           if(Einspeiseleistung > MINDEST_EINSPEISE_LEISTUNG && is_startsoc_reached())
                          {//Mindesteinspeiseleistung erreich ; Laden starten
                              timeout_running = true;
                              setTimeout(function(){
                                  timeout_running = false;
                                  refresh_data();
                                  if(Einspeiseleistung > MINDEST_EINSPEISE_LEISTUNG && is_startsoc_reached())
                                  { //prüfen ob Einspeiseleistung noch ausreichend
                                      //Laden tatsächlich starten
               
                                      if(getState(ID_TSL_STATE).val =="asleep")
                                      { // Wenn das Auto schläft, dann vorher aufwecken und nach 30 Sekunden Ladung starten
                                          setState(ID_TSL_CMD_WAKEUP,true);
                                          setStateDelayed(ID_TSL_CMD_CHARGE_START,true,30000);
                                          setStateDelayed(ID_TSL_CMD_SET_AMPS,START_STROMSTAERKE,30000); 
                                          log("Laden gestartet (verzögert)");
                                      }else
                                      {
                                          setState(ID_TSL_CMD_CHARGE_START,true);
                                          setStateDelayed(ID_TSL_CMD_SET_AMPS,START_STROMSTAERKE,2000);
                                          log("Laden gestartet",false,true);
                                      }
                                  }
                              },ENTPRELL_ZEIT * 60000);
                          }
               
                      }else if (charging_state == "Charging")
                      {//Auto ist angeschlossen und lädt
                         log("IsCharging",true);
                         log("Einspeisung="+Einspeiseleistung + " Netzbezug="+Netzbezug,true);
                          if(is_stopsoc_reached())
                          {// Wenn PV-Akku ist unter Mindestschwelle
                              setState(ID_TSL_CMD_CHARGE_STOP,true);
                              log("Laden gestoppt, Akkustand PV zu niedrig",false,true);
                          }else if(Einspeiseleistung > ampborder)
                          { // Mehr als 250/700 Watt werden eingespeist
                              if(getState(ID_TSL_GET_AMPS).val < MAX_STROMSTAERKE)
                              {
                                  timeout_running = true;
                                  setTimeout(function(){
                                      timeout_running = false;
                                      refresh_data();
                                      if(Einspeiseleistung > ampborder)
                                      {// Stromstärke erhöhen
                                          log("Stromstärke wird von " + getState(ID_TSL_GET_AMPS).val + " A auf " + (getState(ID_TSL_GET_AMPS).val + 1) +" A erhöht.");
                                          setState(ID_TSL_CMD_SET_AMPS, getState(ID_TSL_GET_AMPS).val + 1);
                                      }
                                  },ENTPRELL_ZEIT * 60000);   
                              }
                          }
                          else if(!(getState(ID_HAUSAKKU_ENTLADEN).val==true || getState(ID_HAUSAKKU_ENTLADEN).val==1))
                          {// Die Funktion Hausakku_entladen ist nicht aktiv
                              if(getState(ID_TSL_GET_AMPS).val > START_STROMSTAERKE)
                              { //Stromstärke kann noch verringert werden
                                  if(Netzbezug > ampborder  || (NETZBEZUG_VERMEIDEN && Netzbezug > 0))
                                  { //Mehr als 250/700 Watt werden aus dem Netz bezogen oder Netzbezug vermeiden ist aktiviert und Netzbezug > 0
                                      timeout_running = true;
                                      setTimeout(function(){
                                          timeout_running = false;
                                          refresh_data();
                                          if(Netzbezug > ampborder  || (NETZBEZUG_VERMEIDEN && Netzbezug > 0))
                                          {// Stromstärke verringern
                                              log("Stromstärke wird von " + getState(ID_TSL_GET_AMPS).val + " A auf " + (getState(ID_TSL_GET_AMPS).val - 1) +" A verringert.");
                                              setState(ID_TSL_CMD_SET_AMPS, getState(ID_TSL_GET_AMPS).val - 1);
                                          }
                                      },ENTPRELL_ZEIT * 60000);   
                                  }
                              }else
                              { //Laden muss evtl gestoppt werden
                                  if(Netzbezug > MAXIMAL_NETZBEZUG)
                                  { // Zu VielNetzbezug --> Laden abbrechen
                                      timeout_running = true;
                                      setTimeout(function(){
                                          timeout_running = false;
                                          refresh_data();
                                          if(Netzbezug > MAXIMAL_NETZBEZUG && getState(ID_TSL_GET_AMPS).val < 6)
                                          {// Laden Stoppen 
                                              setState(ID_TSL_CMD_CHARGE_STOP,true);
                                              log("Laden gestoppt, zu wenig PV-Leistung vorhanden",false,true);
                                          }
                                      },ENTPRELL_ZEIT * 60000);
                                  }
                              }
                          }
                          else if ((getState(ID_HAUSAKKU_ENTLADEN).val==true || getState(ID_HAUSAKKU_ENTLADEN).val==1))
                          {// Hausakku entladen ist aktiv
                              if(getState(ID_PV_AKKU_SOC).val < PV_AKKU_STOP_SOC + 3)
                              {// 3 % vor Stop SoC wird Hausakku entladen wieder deaktiviert, damit die Ladung nicht gänzlich stoppt
                                  setState(ID_HAUSAKKU_ENTLADEN,false);
                                  log("Der Mindest SoC des Hausakku ist gleich erreicht. Hausakku-Entladen wird deaktiviert");
                              }
              
                          }
                      }
                  }
              });
               
              
              // Wenn überschussladung deaktiviert wird, dann Stromstärke wieder auf 16A setzen
              on({id: ID_UEBERSCHUSSLADUNG_AKTIV, change: 'ne'}, function(obj){
                  if(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == 0 )
                  {
                      setState( ID_TSL_CMD_SET_AMPS,MAX_STROMSTAERKE); 
                  }
              });
              
              
              //Ladung beendet
              on({id: ID_TSL_CHARGING_STATE, change: 'ne'}, function(obj){
                  if((getState(ID_TSL_CHARGING_STATE).val=="Disconnected") &&  at_home())
                  {// Wenn Laden gestoppt wurde, oder Kabel Disconnected --> Ladung addieren
                      if(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==0)
                      {// Wenn gerade keine Überschussladung aktiv --> Evtl vorher geladene Energy sichern
                          added_energy_without_excess = getState(ID_TSL_ADDED_ENERGY).val;
                          log("added_energy_without_excess save="+added_energy_without_excess,true);
                      }
                          log("CALC",true);
                          calc_added_energy();
                      // Hausakku entladen, deaktivieren
                      setState(ID_HAUSAKKU_ENTLADEN,false);
                  }
              });
              
              //Ladung startet
              on({id: ID_TSL_CHARGING_STATE, oldVal: 'Disconnected'}, function(obj){ // Kabel wurde gerade erst verbunden
                  if(getState(ID_TSL_CHARGING_STATE).val != "Disconnected" && !timeout_running && !(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==0) &&  at_home())
                  {// Kabel wurde gerade angeschlossen und Überschussladung wird getriggert
                      setStateDelayed(ID_TSL_CMD_SET_AMPS,START_STROMSTAERKE,30000); //Start Stromstärke einstellen
                  }
              });
              
              on({id: ID_UEBERSCHUSSLADUNG_AKTIV, change: 'ne'}, function(obj){
                  if((getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == 1 || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val ==true) && at_home() )
                  {// Überschussladen wurde gerade aktiviert...
                      if(getState(ID_TSL_CHARGING_STATE).val!="Disconnected" )
                      {//Und das Auto schon lädt
                      //geladene kWh ohne Überschussladung sichern
                          added_energy_without_excess = getState(ID_TSL_ADDED_ENERGY).val-chargedsofar;
                          log("added_energy_without_excess="+added_energy_without_excess,true);
                      }
                  }else if(at_home() && getState(ID_TSL_CHARGING_STATE).val!="Disconnected")
                  {// Wurde gerade deaktiviert 
                      chargedsofar = getState(ID_TSL_ADDED_ENERGY).val - added_energy_without_excess;
                      log("chargedsofar="+chargedsofar,true);
                  }
              });
              
              
              // Phasen korrigieren (API bringt nur 1 oder 2)
              on({id: ID_TSL_CHARGING_PHASES, change: 'ne'}, function(obj){
                  if(getState(ID_TSL_CHARGING_PHASES).val == 1)
                  {
                      setState(ID_CHARGING_PHASES,1);
                  }else if(getState(ID_TSL_CHARGING_PHASES).val == 2)
                  {
                      setState(ID_CHARGING_PHASES,3);
                  }else
                  {
                      setState(ID_CHARGING_PHASES,0);    
                  }
              });
              
              
              //Auto-Status bestimmen
              on({id: [ID_TSL_STATE,ID_TSL_CHARGING_STATE], change: 'ne'}, function(obj){
                  if(getState(ID_TSL_CHARGING_STATE).val == "Charging")
                  {
                      setState(ID_CAR_STATE,"Lädt");
                  }else if(getState(ID_TSL_STATE).val == "online")
                  {
                      setState(ID_CAR_STATE,"Online");
                  }else if(getState(ID_TSL_STATE).val == "asleep")
                  {
                      setState(ID_CAR_STATE,"Schläft");
                  }else
                  {
                      setState(ID_CAR_STATE,"Unbekannt");    
                  }
              });
              
              
              // Hausakku Entladen wird eingschalten
              on({id: ID_HAUSAKKU_ENTLADEN, change: 'ne'}, function(obj){
                  if(getState(ID_HAUSAKKU_ENTLADEN).val==true || getState(ID_HAUSAKKU_ENTLADEN).val==1)
                  {//wurde eingeschalten; Maximale Stromstärke setzen und evtl Ladung starten
                      if(getState(ID_TSL_CHARGING_STATE).val == "Stopped")
                      {
                          setState(ID_TSL_CMD_CHARGE_START,true);
              
                      }
                      setStateDelayed(ID_TSL_CMD_SET_AMPS,MAX_STROMSTAERKE,2000);   
                  }
              });
              
              
              
              //Zeitpläne zum Berechnen der geladenen Energy, Rücksetzen der Werte
              schedule("1 0 * * *", function () 
              {//PV-Überschuss Tageswert zurücksetzen jeden Tag um 00:01
                  setState(ID_ENERGY_ADDED_DAILY,0);
              });
              
              schedule('1 0 1 * *', function () 
              {//PV-Überschuss Monatswert zurücksetzen , Immer am 1. des Monats um 00:01
                  setState(ID_ENERGY_ADDED_MONTHLY,0);
              });
              
              schedule('1 0 1 1 *', function () 
              {//PV Jahreswert zurücksetzen Immer am 1.1. um 00:01    
                  setState(ID_ENERGY_ADDED_YEARLY,0);
              });
               
              
              //=====================Hilfsfunktionen============================== 
              function Deg2Rad( deg ) 
              {//Umrechnung Grad in Radiat
                  return deg * Math.PI / 180;
              }
               
              function is_startsoc_reached()
              {
                  if(PV_AKKU_VORHANDEN)
                  {
                      if(getState(ID_PV_AKKU_SOC).val >= PV_AKKU_START_SOC)
                      {
                          return true;
                      }
                      else
                      {
                          return false;
                      }
              
                  }else
                  {
                      return true; //Wenn kein Akku vorhanden, immer true zurückliefern
                  }
              }
              
              function is_stopsoc_reached()
              {
                  if(PV_AKKU_VORHANDEN)
                  {
                      if(getState(ID_PV_AKKU_SOC).val <= PV_AKKU_STOP_SOC)
                      {
                          return true;
                      }
                      else
                      {
                          return false;
                      }
              
                  }else
                  {
                      return false; //Wenn kein Akku vorhanden, immer false zurückliefern
                  }
              
              }
              
              function at_home() 
              {//Entfernung des Autos vom Heimstandort ermitteln
                  var lat1 = Deg2Rad(ZUHAUSE_LATITUDE);
                  var lat2 = Deg2Rad(getState(ID_TSL_LATITUDE).val);
                  var lon1 = Deg2Rad(ZUHAUSE_LONGITUDE);
                  var lon2 = Deg2Rad(getState(ID_TSL_LONGITUDE).val);
                  var R = 6371; // km
                  var x = (lon2-lon1) * Math.cos((lat1+lat2)/2);
                  var y = (lat2-lat1);
                  var d = Math.sqrt(x*x + y*y) * R;
              
                  if(d <= ZUHAUSE_MAX_ENTFERNUNG)
                  {
                      return true;
                  }else
                  {
                      return false;
                  }
              }
              
              function calc_added_energy()
              {
                  var energyadd=0;
                  
                  if(!(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == 1 || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val ==true))
                  {//Überschussladung gerade nicht aktiv
                      energyadd = parseFloat(getState(ID_TSL_ADDED_ENERGY).val) - added_energy_without_excess + chargedsofar;
                  }else
                  {
                      energyadd = parseFloat(getState(ID_TSL_ADDED_ENERGY).val) - added_energy_without_excess;    
                  }
                  log("Chargedsofar="+chargedsofar+ " ; added_energy_without excess="+ added_energy_without_excess, true);
                  log("Energyadd="+energyadd,true); 
                  log("New Daily="+(parseFloat(getState(ID_ENERGY_ADDED_DAILY).val) + energyadd).toFixed(2),true);
                  log("New Monthly="+(parseFloat(getState(ID_ENERGY_ADDED_MONTHLY).val) + energyadd).toFixed(2),true);
                  log("New Yearly="+(parseFloat(getState(ID_ENERGY_ADDED_YEARLY).val) + energyadd).toFixed(2),true);
                  if(energyadd > 0)
                  {
                      log("Ladung beendet, es wurden " + energyadd + " kWh mit Überschuss geladen",false,true);
                  }
                  
                  setState(ID_ENERGY_ADDED_DAILY,(parseFloat(getState(ID_ENERGY_ADDED_DAILY).val) + energyadd).toFixed(2));
                  setStateDelayed(ID_ENERGY_ADDED_MONTHLY,(parseFloat(getState(ID_ENERGY_ADDED_MONTHLY).val) + energyadd).toFixed(2) ,500);
                  setStateDelayed(ID_ENERGY_ADDED_YEARLY,(parseFloat(getState(ID_ENERGY_ADDED_YEARLY).val) + energyadd).toFixed(2), 1000);
                  added_energy_without_excess = 0;
                  chargedsofar = 0;
              }
              
              function refresh_data()
              {
              
                  if(PV_AKKU_VORHANDEN && PV_AKKU_LEISTUNG_EINSTATUS)
                  { // Wenn es nur ein Objekt für Laden + Entladen gibt
                      if(getState(ID_PV_AKKU_STAT).val !=PV_AKKU_STAT_ENTLADEN)
                      {
                          Einspeiseleistung = getState(ID_EINSPEISE_LEISTUNG).val;
                          Netzbezug=0;
                      }
                      else
                      {
                          Netzbezug= getState(ID_EINSPEISE_LEISTUNG).val;
                          Einspeiseleistung=0;
                      }
                  }
                  else
                  {// kein Akku vorhanden, Einspeiseleistung normal setzen
                      Einspeiseleistung = getState(ID_EINSPEISE_LEISTUNG).val;
                      Netzbezug = getState(ID_NETZBEZUG_LEISTUNG).val;   
                  }
                
              }
              
              
              
              function log(logtext,debug=false,Telegramm=false)
              {
                  if(!debug || (debug && LOGLEVEL=="DEBUG"))
                  {
                      console.log(logtext);    
                      if(Telegramm && TELEGRAMM_NOTIFIZIERUNG)
                      {
                          if(TELEGRAMM_NUTZER != "")
                          {// Wenn Nutzer angegeben, nur an diesen Nutzer senden
                              sendTo('telegram',"@" + TELEGRAMM_NUTZER + " TeslaChargejs: " +logtext);
                          }else
                          {//Sonst an alle
                              sendTo('telegram',"TeslaChargejs: " + logtext);
                          }
              
                      }
                  }
              }
              

              in Zeile 64 und 67 sind die Werte die ich gerne per VIS Button anpassen möchte

              Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
              (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

              paul53P 1 Antwort Letzte Antwort
              0
              • HALH HAL

                @djmarc75 sieht gut aus und werde ich gleich mal probieren 👍
                Und Blockly kenn ich 🙂

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

                @hal sagte in Javascript mit Button starten und beenden:

                werde ich gleich mal probieren

                dir wurde aber bereits gesagt, dass so etwas nicht im Sinne von js ist!?
                Javascript arbeitet eventbasiert und wird nicht einfach so gestoppt und gestartet.

                Abgesehen davon muss bei jedem Skriptstart das gesamte Skript neu kompiliert werden.

                Warum du das machen willst ist eh nicht klar

                @liv-in-sky sagte in Javascript mit Button starten und beenden:

                das problem - ein script zu stoppen ändert ja nichts am ladevorgang - sondern nur, dass keine reaktionen mehr folgen und damit keine datenpunkte geschalten werden

                was also bringt dir der Aufwand?

                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 -

                HALH 1 Antwort Letzte Antwort
                0
                • HomoranH Homoran

                  @hal sagte in Javascript mit Button starten und beenden:

                  werde ich gleich mal probieren

                  dir wurde aber bereits gesagt, dass so etwas nicht im Sinne von js ist!?
                  Javascript arbeitet eventbasiert und wird nicht einfach so gestoppt und gestartet.

                  Abgesehen davon muss bei jedem Skriptstart das gesamte Skript neu kompiliert werden.

                  Warum du das machen willst ist eh nicht klar

                  @liv-in-sky sagte in Javascript mit Button starten und beenden:

                  das problem - ein script zu stoppen ändert ja nichts am ladevorgang - sondern nur, dass keine reaktionen mehr folgen und damit keine datenpunkte geschalten werden

                  was also bringt dir der Aufwand?

                  HALH Offline
                  HALH Offline
                  HAL
                  schrieb am zuletzt editiert von
                  #17

                  @homoran ich möchte mich ja nur ungern wiederholen. Aber mir geht es darum beim Überschussladen entscheiden zu können, ob der Hausakku oder der Tesla Vorrang beim Laden hat. Wenn ich gegen Mittag mit dem Tesla fahren will, ist es sinnvoll erst den Tesla zu laden und wenn ich unterwegs bin den Hausakku zu laden. Momentan mache ich da mit zwei unterschiedlichen Scripten und ja besser wäre es direkt im Script die Werte wärend der Laufzeit zu ändern.

                  Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
                  (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

                  DJMarc75D HomoranH 2 Antworten Letzte Antwort
                  0
                  • HALH HAL

                    @homoran ich möchte mich ja nur ungern wiederholen. Aber mir geht es darum beim Überschussladen entscheiden zu können, ob der Hausakku oder der Tesla Vorrang beim Laden hat. Wenn ich gegen Mittag mit dem Tesla fahren will, ist es sinnvoll erst den Tesla zu laden und wenn ich unterwegs bin den Hausakku zu laden. Momentan mache ich da mit zwei unterschiedlichen Scripten und ja besser wäre es direkt im Script die Werte wärend der Laufzeit zu ändern.

                    DJMarc75D Online
                    DJMarc75D Online
                    DJMarc75
                    schrieb am zuletzt editiert von
                    #18

                    @hal warum sowas dann in einer Sprache in welcher Du fremd bist umsetzen ?
                    Blockly geht bei Dir ? Dann Blockly !

                    Lehrling seit 1975 !!!
                    Beitrag geholfen ? dann gerne ein upvote rechts unten im Beitrag klicken ;)
                    https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge

                    HALH 1 Antwort Letzte Antwort
                    0
                    • DJMarc75D DJMarc75

                      @hal warum sowas dann in einer Sprache in welcher Du fremd bist umsetzen ?
                      Blockly geht bei Dir ? Dann Blockly !

                      HALH Offline
                      HALH Offline
                      HAL
                      schrieb am zuletzt editiert von
                      #19

                      @djmarc75 nun das Javascript funktioniert soweit perfekt. Besonders die Regelungen für schwankenden PV Output und Regelung der Ladestromstärke. Da steckt schon m.E. eine Menge Gehirnschmalz drin. Das in Blockly nachzubauen...

                      Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
                      (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

                      1 Antwort Letzte Antwort
                      0
                      • HALH HAL

                        @homoran ich möchte mich ja nur ungern wiederholen. Aber mir geht es darum beim Überschussladen entscheiden zu können, ob der Hausakku oder der Tesla Vorrang beim Laden hat. Wenn ich gegen Mittag mit dem Tesla fahren will, ist es sinnvoll erst den Tesla zu laden und wenn ich unterwegs bin den Hausakku zu laden. Momentan mache ich da mit zwei unterschiedlichen Scripten und ja besser wäre es direkt im Script die Werte wärend der Laufzeit zu ändern.

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

                        @hal sagte in Javascript mit Button starten und beenden:

                        ich möchte mich ja nur ungern wiederholen

                        sollst du auch nicht! Aber die gesamte umgebung in der bei dir etwas läuft ist uns nicht bekannt.

                        wenn du möchtest dass

                        @hal sagte in Javascript mit Button starten und beenden:

                        jemand Lust sich der Sache anzunehmen

                        hat, sollte er "die Sache" doch auch vollständig kennen.

                        wenn du

                        @hal sagte in Javascript mit Button starten und beenden:

                        da mit zwei unterschiedlichen Scripten

                        unterwegs bist, die sich beissen, ist da systematisch etwas falsch!

                        und derjenige mit der Lust sich das anzusehen hat immer noch keine blasse Ahnung von dem zweiten Skript

                        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 -

                        HALH 1 Antwort Letzte Antwort
                        0
                        • HomoranH Homoran

                          @hal sagte in Javascript mit Button starten und beenden:

                          ich möchte mich ja nur ungern wiederholen

                          sollst du auch nicht! Aber die gesamte umgebung in der bei dir etwas läuft ist uns nicht bekannt.

                          wenn du möchtest dass

                          @hal sagte in Javascript mit Button starten und beenden:

                          jemand Lust sich der Sache anzunehmen

                          hat, sollte er "die Sache" doch auch vollständig kennen.

                          wenn du

                          @hal sagte in Javascript mit Button starten und beenden:

                          da mit zwei unterschiedlichen Scripten

                          unterwegs bist, die sich beissen, ist da systematisch etwas falsch!

                          und derjenige mit der Lust sich das anzusehen hat immer noch keine blasse Ahnung von dem zweiten Skript

                          HALH Offline
                          HALH Offline
                          HAL
                          schrieb am zuletzt editiert von
                          #21

                          @homoran Ich habe in den unterschiedlichen Javascripten jeweils nur die Werte in Zeile 64 und 67 verändert.
                          Vorgang Tesla:

                          // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                          const PV_AKKU_START_SOC             = 30; //%
                          
                          // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                          const PV_AKKU_STOP_SOC             = 15; //%
                          

                          Vorang Hausakku:

                          // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                          const PV_AKKU_START_SOC             = 95; //%
                          
                          // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                          const PV_AKKU_STOP_SOC             = 85; //%
                          

                          Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
                          (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

                          HomoranH 1 Antwort Letzte Antwort
                          0
                          • HALH HAL

                            @djmarc75 das script ist hier:
                            https://github.com/thps1990/TeslaChargejs/

                            //=============================Tesla Ueberschussladen - TeslaChargejs==========================================
                            //V 1.8.1-Beta
                            //Stand:24.03.22
                            
                            //=============================Einstellungen/Konfiguration=====================================================
                            //Wo soll das Skript die neuen Objekte anlegen (Mit PV-Überschuss geladene Energy.... )
                            
                            const ID_SKRIPT_OBJEKT_VERZEICHNIS = "0_userdata.0.TeslaChargejs";
                            
                            //Entprell Zeit, damit nicht mit jeder Wolke die Ladung unterbrochen wird
                            const ENTPRELL_ZEIT                 = 0.2; //Minuten
                            
                            // Welche Leistung muss mindestens eingespeist werden, bevor das Skript das Laden (wieder) startet
                            const MINDEST_EINSPEISE_LEISTUNG    = 1000; //Watt
                            
                            // Wieiviel darf aus dem Netz bezogen werden, bevor die Ladung abgebrochen wird.
                            const MAXIMAL_NETZBEZUG             = 300; //Watt 
                            
                            //Mit welcher Stromstärke soll das Laden begonnen werden
                            const START_STROMSTAERKE            = 5; // A
                            
                            //Mit welcher Stromstärke soll maximal geladen werden (Wird auch zum entladen des Hausakkus verwendet)
                            const MAX_STROMSTAERKE              = 16; //A
                            
                            //Soll Netzbezug im Rahmen der Stromstärkenregulierung vermieden werden?
                            //Wenn diese Option aktiviert ist wird die Stromstärke reduziert, sobald ein Strom aus dem Netz/AKku bezogen wird
                            const NETZBEZUG_VERMEIDEN           = false; //true oder false 
                            
                             //IOBroker Objekt ID der Einspeiseleistung PV 
                            const ID_EINSPEISE_LEISTUNG         = "OBJEKT.PV.EINSPEISUNG_LEISTUNG"; //Watt  
                            
                             //IObroker Objekt ID der Netzbezugsleistung PV
                            const ID_NETZBEZUG_LEISTUNG         = "OBJEKT.PV.NETZBEZUG_LEISTUNG" ; //Watt
                            
                            //IOBroker Objekt ID zum Tesla, generiert vom Tesla-Adatper (Root)
                            const ID_TSL                        = "tesla-motors.0.123456789"; 
                            
                            //Breitengrad Koordinaten der Heimatadresse, somit greift das Skript nur Zuhause
                            const ZUHAUSE_LATITUDE              = 52.392755120782226;
                            
                            //Längengard Koordinaten der Heimatadresse
                            const ZUHAUSE_LONGITUDE             = 13.79022433645216; //Längengrad Koordinaten
                            
                            //Maximale Entfernung des Autos von Zuhause; Umkreis in dem das Skript greift
                            const ZUHAUSE_MAX_ENTFERNUNG        = 0.5 ; //KM
                            
                            //Loglevel des Scripts
                            const LOGLEVEL                      = "INFO" ; //INFO oder DEBUG
                            
                            //Notifizierung per Telegramm aktivieren/deaktivieren <= Eine Telegram-Instanz muss in ioBroker eingerichtet sein
                            //Benachrichtigung über Start/Stopp der Ladung und Beendigung -> Wie viel Energy wurde per Überschuss geladen
                            const TELEGRAMM_NOTIFIZIERUNG       = false; // true oder false
                            
                            //Telegramm Notifizierung nur an einen einzelnen Nutzer (Leer lassen alle mit dem Bot verbundene Nutzer)
                            const TELEGRAMM_NUTZER              = "Elon"; // Nutzernamen oder ""
                            
                            //Ist ein PV-Akku vorhanden? Wenn nein, sind alle folgenden Angaben obsolet
                            const PV_AKKU_VORHANDEN             = false; //true oder false
                            
                            //IOBroker ObjektID des Akkustands 
                            const ID_PV_AKKU_SOC                = "OBJEKT.PV.AKKUSTAND";
                            
                            // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                            const PV_AKKU_START_SOC             = 30; //%
                            
                            // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                            const PV_AKKU_STOP_SOC             = 15; //%
                            
                            //Gibt es 2 getrennte Objekte für Akku laden und entladen? Wenn ja, diesen Wert auf false setzen und die Objekte
                            //für Laden und Entladen des Akkus als ID_EINSPEISE_LEISTUNG (Laden) und ID_NETZBEZUG_LEISTUNG(Entladen) setzen
                            
                            const PV_AKKU_LEISTUNG_EINSTATUS = true; // true oder false
                            
                            // Alles folgende ist nur notwendig, falls PV_AKKU_LEISTUNG_EINSTATUS = true
                            //IOBroker ObjektID PV-Akku Status
                            const ID_PV_AKKU_STAT = "OBJEKT.PV.AKKU_STATUS";
                            
                            //Welchen Wert hat das Objekt ID_PV_AKKU_STATUS wenn der Akku entladen wird?
                            const PV_AKKU_STAT_ENTLADEN = "Entladen";
                            
                            //=============================Skript-Start=======================================
                            //=============================Konstanten=========================================
                            const ID_UEBERSCHUSSLADUNG_AKTIV =ID_SKRIPT_OBJEKT_VERZEICHNIS+".Ueberschussladung_aktiv";
                            const ID_HAUSAKKU_ENTLADEN = ID_SKRIPT_OBJEKT_VERZEICHNIS +".Hausakku_entladen";
                            const ID_ENERGY_ADDED_DAILY = ID_SKRIPT_OBJEKT_VERZEICHNIS+".energy_added_daily";
                            const ID_ENERGY_ADDED_MONTHLY = ID_SKRIPT_OBJEKT_VERZEICHNIS+".energy_added_monthly";
                            const ID_ENERGY_ADDED_YEARLY = ID_SKRIPT_OBJEKT_VERZEICHNIS+".energy_added_yearly";
                            const ID_CHARGING_PHASES = ID_SKRIPT_OBJEKT_VERZEICHNIS+".charging_phases";
                            const ID_CAR_STATE = ID_SKRIPT_OBJEKT_VERZEICHNIS+".car_state";
                            const ID_TSL_STATE = ID_TSL + ".state";
                            const ID_TSL_LATITUDE = ID_TSL + ".drive_state.latitude";
                            const ID_TSL_LONGITUDE = ID_TSL + ".drive_state.longitude";
                            const ID_TSL_CHARGING_STATE= ID_TSL + ".charge_state.charging_state";
                            const ID_TSL_CMD_WAKEUP = ID_TSL + ".remote.wake_up";
                            const ID_TSL_CMD_SET_AMPS = ID_TSL + ".remote.set_charging_amps-charging_amps";
                            const ID_TSL_GET_AMPS = ID_TSL + ".charge_state.charge_amps";
                            const ID_TSL_CMD_CHARGE_START = ID_TSL + ".remote.charge_start";
                            const ID_TSL_CMD_CHARGE_STOP = ID_TSL + ".remote.charge_stop";
                            const ID_TSL_CHARGING_PHASES = ID_TSL + ".charge_state.charger_phases"; 
                            const ID_TSL_ADDED_ENERGY   = ID_TSL + ".charge_state.charge_energy_added";
                            
                            //==============================Variablen=========================================
                            var timeout_running = false;
                            var Einspeiseleistung = 0;
                            var Netzbezug = 0;
                            var trigger = [ID_EINSPEISE_LEISTUNG,ID_NETZBEZUG_LEISTUNG];
                            var chargedsofar=0;
                            
                            var added_energy_without_excess = 0;
                            //==============================Initialisierung===================================
                            //Erstellen von Status, sofern nicht vorhanden
                            //Mit Überschuss geladene Energy -> täglich, monatlich, jährlich
                            createState(ID_ENERGY_ADDED_DAILY,0, {unit: "kWh" , read: true, write: true});
                            createState(ID_ENERGY_ADDED_MONTHLY,0, {unit: "kWh" , read: true, write: true});
                            createState(ID_ENERGY_ADDED_YEARLY,0, {unit: "kWh" , read: true, write: true});
                            
                            //Phasen-Korrektur
                            createState(ID_CHARGING_PHASES,0, {read: true, write: true});
                            
                            //Fahrzeug Status
                            createState(ID_CAR_STATE, {read: true, write: true});
                            
                            
                            //Ein/Ausschalten der Ueberschussladung 
                            createState(ID_UEBERSCHUSSLADUNG_AKTIV,true, {read: true, write: true});
                            
                            
                            //Ein/Ausschalten der Hausakku-Entladen Funktion.  
                            createState(ID_HAUSAKKU_ENTLADEN,false, {read: true, write: true});
                            
                            
                            
                            
                            //====================Events=======================================
                            
                            //Implementierung/Regelkreis
                            on({id: trigger,change: 'ne'}, function(obj){ //Wenn sich die Einspeiseleistung oder Netzbezug ändert....
                                var charging_state= getState(ID_TSL_CHARGING_STATE).val;
                                refresh_data();
                                log("Zuhause=" +at_home() + " timeout_runinng=" + timeout_running + " Überschussladungaktiv = " +getState(ID_UEBERSCHUSSLADUNG_AKTIV).val +" chargingstate=" +charging_state,true); 
                            
                                if(charging_state != "Disconnected" && !timeout_running && !(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==0) &&  at_home())
                                {// Nur etwas tun, wenn das Auto mit Kabel verbunden, Ueberschussladen aktiv, Auto zuhause steht und gerade nicht auf eine Aktion gewartet wird
                                    var ampborder = 700 ;//Watt <-- Geht immer von 3 phasigen laden aus
                                   
                                    if(getState(ID_TSL_CHARGING_PHASES).val == 1)
                                    {//Wenn nur eine Phase, dann reduzieren
                                        ampborder = 250;//Watt
                                    }
                            
                                    if(charging_state == "Stopped")
                                    { //Auto ist angeschlossen, lädt aber nicht
                                         if(Einspeiseleistung > MINDEST_EINSPEISE_LEISTUNG && is_startsoc_reached())
                                        {//Mindesteinspeiseleistung erreich ; Laden starten
                                            timeout_running = true;
                                            setTimeout(function(){
                                                timeout_running = false;
                                                refresh_data();
                                                if(Einspeiseleistung > MINDEST_EINSPEISE_LEISTUNG && is_startsoc_reached())
                                                { //prüfen ob Einspeiseleistung noch ausreichend
                                                    //Laden tatsächlich starten
                             
                                                    if(getState(ID_TSL_STATE).val =="asleep")
                                                    { // Wenn das Auto schläft, dann vorher aufwecken und nach 30 Sekunden Ladung starten
                                                        setState(ID_TSL_CMD_WAKEUP,true);
                                                        setStateDelayed(ID_TSL_CMD_CHARGE_START,true,30000);
                                                        setStateDelayed(ID_TSL_CMD_SET_AMPS,START_STROMSTAERKE,30000); 
                                                        log("Laden gestartet (verzögert)");
                                                    }else
                                                    {
                                                        setState(ID_TSL_CMD_CHARGE_START,true);
                                                        setStateDelayed(ID_TSL_CMD_SET_AMPS,START_STROMSTAERKE,2000);
                                                        log("Laden gestartet",false,true);
                                                    }
                                                }
                                            },ENTPRELL_ZEIT * 60000);
                                        }
                             
                                    }else if (charging_state == "Charging")
                                    {//Auto ist angeschlossen und lädt
                                       log("IsCharging",true);
                                       log("Einspeisung="+Einspeiseleistung + " Netzbezug="+Netzbezug,true);
                                        if(is_stopsoc_reached())
                                        {// Wenn PV-Akku ist unter Mindestschwelle
                                            setState(ID_TSL_CMD_CHARGE_STOP,true);
                                            log("Laden gestoppt, Akkustand PV zu niedrig",false,true);
                                        }else if(Einspeiseleistung > ampborder)
                                        { // Mehr als 250/700 Watt werden eingespeist
                                            if(getState(ID_TSL_GET_AMPS).val < MAX_STROMSTAERKE)
                                            {
                                                timeout_running = true;
                                                setTimeout(function(){
                                                    timeout_running = false;
                                                    refresh_data();
                                                    if(Einspeiseleistung > ampborder)
                                                    {// Stromstärke erhöhen
                                                        log("Stromstärke wird von " + getState(ID_TSL_GET_AMPS).val + " A auf " + (getState(ID_TSL_GET_AMPS).val + 1) +" A erhöht.");
                                                        setState(ID_TSL_CMD_SET_AMPS, getState(ID_TSL_GET_AMPS).val + 1);
                                                    }
                                                },ENTPRELL_ZEIT * 60000);   
                                            }
                                        }
                                        else if(!(getState(ID_HAUSAKKU_ENTLADEN).val==true || getState(ID_HAUSAKKU_ENTLADEN).val==1))
                                        {// Die Funktion Hausakku_entladen ist nicht aktiv
                                            if(getState(ID_TSL_GET_AMPS).val > START_STROMSTAERKE)
                                            { //Stromstärke kann noch verringert werden
                                                if(Netzbezug > ampborder  || (NETZBEZUG_VERMEIDEN && Netzbezug > 0))
                                                { //Mehr als 250/700 Watt werden aus dem Netz bezogen oder Netzbezug vermeiden ist aktiviert und Netzbezug > 0
                                                    timeout_running = true;
                                                    setTimeout(function(){
                                                        timeout_running = false;
                                                        refresh_data();
                                                        if(Netzbezug > ampborder  || (NETZBEZUG_VERMEIDEN && Netzbezug > 0))
                                                        {// Stromstärke verringern
                                                            log("Stromstärke wird von " + getState(ID_TSL_GET_AMPS).val + " A auf " + (getState(ID_TSL_GET_AMPS).val - 1) +" A verringert.");
                                                            setState(ID_TSL_CMD_SET_AMPS, getState(ID_TSL_GET_AMPS).val - 1);
                                                        }
                                                    },ENTPRELL_ZEIT * 60000);   
                                                }
                                            }else
                                            { //Laden muss evtl gestoppt werden
                                                if(Netzbezug > MAXIMAL_NETZBEZUG)
                                                { // Zu VielNetzbezug --> Laden abbrechen
                                                    timeout_running = true;
                                                    setTimeout(function(){
                                                        timeout_running = false;
                                                        refresh_data();
                                                        if(Netzbezug > MAXIMAL_NETZBEZUG && getState(ID_TSL_GET_AMPS).val < 6)
                                                        {// Laden Stoppen 
                                                            setState(ID_TSL_CMD_CHARGE_STOP,true);
                                                            log("Laden gestoppt, zu wenig PV-Leistung vorhanden",false,true);
                                                        }
                                                    },ENTPRELL_ZEIT * 60000);
                                                }
                                            }
                                        }
                                        else if ((getState(ID_HAUSAKKU_ENTLADEN).val==true || getState(ID_HAUSAKKU_ENTLADEN).val==1))
                                        {// Hausakku entladen ist aktiv
                                            if(getState(ID_PV_AKKU_SOC).val < PV_AKKU_STOP_SOC + 3)
                                            {// 3 % vor Stop SoC wird Hausakku entladen wieder deaktiviert, damit die Ladung nicht gänzlich stoppt
                                                setState(ID_HAUSAKKU_ENTLADEN,false);
                                                log("Der Mindest SoC des Hausakku ist gleich erreicht. Hausakku-Entladen wird deaktiviert");
                                            }
                            
                                        }
                                    }
                                }
                            });
                             
                            
                            // Wenn überschussladung deaktiviert wird, dann Stromstärke wieder auf 16A setzen
                            on({id: ID_UEBERSCHUSSLADUNG_AKTIV, change: 'ne'}, function(obj){
                                if(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == 0 )
                                {
                                    setState( ID_TSL_CMD_SET_AMPS,MAX_STROMSTAERKE); 
                                }
                            });
                            
                            
                            //Ladung beendet
                            on({id: ID_TSL_CHARGING_STATE, change: 'ne'}, function(obj){
                                if((getState(ID_TSL_CHARGING_STATE).val=="Disconnected") &&  at_home())
                                {// Wenn Laden gestoppt wurde, oder Kabel Disconnected --> Ladung addieren
                                    if(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==0)
                                    {// Wenn gerade keine Überschussladung aktiv --> Evtl vorher geladene Energy sichern
                                        added_energy_without_excess = getState(ID_TSL_ADDED_ENERGY).val;
                                        log("added_energy_without_excess save="+added_energy_without_excess,true);
                                    }
                                        log("CALC",true);
                                        calc_added_energy();
                                    // Hausakku entladen, deaktivieren
                                    setState(ID_HAUSAKKU_ENTLADEN,false);
                                }
                            });
                            
                            //Ladung startet
                            on({id: ID_TSL_CHARGING_STATE, oldVal: 'Disconnected'}, function(obj){ // Kabel wurde gerade erst verbunden
                                if(getState(ID_TSL_CHARGING_STATE).val != "Disconnected" && !timeout_running && !(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==false || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val==0) &&  at_home())
                                {// Kabel wurde gerade angeschlossen und Überschussladung wird getriggert
                                    setStateDelayed(ID_TSL_CMD_SET_AMPS,START_STROMSTAERKE,30000); //Start Stromstärke einstellen
                                }
                            });
                            
                            on({id: ID_UEBERSCHUSSLADUNG_AKTIV, change: 'ne'}, function(obj){
                                if((getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == 1 || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val ==true) && at_home() )
                                {// Überschussladen wurde gerade aktiviert...
                                    if(getState(ID_TSL_CHARGING_STATE).val!="Disconnected" )
                                    {//Und das Auto schon lädt
                                    //geladene kWh ohne Überschussladung sichern
                                        added_energy_without_excess = getState(ID_TSL_ADDED_ENERGY).val-chargedsofar;
                                        log("added_energy_without_excess="+added_energy_without_excess,true);
                                    }
                                }else if(at_home() && getState(ID_TSL_CHARGING_STATE).val!="Disconnected")
                                {// Wurde gerade deaktiviert 
                                    chargedsofar = getState(ID_TSL_ADDED_ENERGY).val - added_energy_without_excess;
                                    log("chargedsofar="+chargedsofar,true);
                                }
                            });
                            
                            
                            // Phasen korrigieren (API bringt nur 1 oder 2)
                            on({id: ID_TSL_CHARGING_PHASES, change: 'ne'}, function(obj){
                                if(getState(ID_TSL_CHARGING_PHASES).val == 1)
                                {
                                    setState(ID_CHARGING_PHASES,1);
                                }else if(getState(ID_TSL_CHARGING_PHASES).val == 2)
                                {
                                    setState(ID_CHARGING_PHASES,3);
                                }else
                                {
                                    setState(ID_CHARGING_PHASES,0);    
                                }
                            });
                            
                            
                            //Auto-Status bestimmen
                            on({id: [ID_TSL_STATE,ID_TSL_CHARGING_STATE], change: 'ne'}, function(obj){
                                if(getState(ID_TSL_CHARGING_STATE).val == "Charging")
                                {
                                    setState(ID_CAR_STATE,"Lädt");
                                }else if(getState(ID_TSL_STATE).val == "online")
                                {
                                    setState(ID_CAR_STATE,"Online");
                                }else if(getState(ID_TSL_STATE).val == "asleep")
                                {
                                    setState(ID_CAR_STATE,"Schläft");
                                }else
                                {
                                    setState(ID_CAR_STATE,"Unbekannt");    
                                }
                            });
                            
                            
                            // Hausakku Entladen wird eingschalten
                            on({id: ID_HAUSAKKU_ENTLADEN, change: 'ne'}, function(obj){
                                if(getState(ID_HAUSAKKU_ENTLADEN).val==true || getState(ID_HAUSAKKU_ENTLADEN).val==1)
                                {//wurde eingeschalten; Maximale Stromstärke setzen und evtl Ladung starten
                                    if(getState(ID_TSL_CHARGING_STATE).val == "Stopped")
                                    {
                                        setState(ID_TSL_CMD_CHARGE_START,true);
                            
                                    }
                                    setStateDelayed(ID_TSL_CMD_SET_AMPS,MAX_STROMSTAERKE,2000);   
                                }
                            });
                            
                            
                            
                            //Zeitpläne zum Berechnen der geladenen Energy, Rücksetzen der Werte
                            schedule("1 0 * * *", function () 
                            {//PV-Überschuss Tageswert zurücksetzen jeden Tag um 00:01
                                setState(ID_ENERGY_ADDED_DAILY,0);
                            });
                            
                            schedule('1 0 1 * *', function () 
                            {//PV-Überschuss Monatswert zurücksetzen , Immer am 1. des Monats um 00:01
                                setState(ID_ENERGY_ADDED_MONTHLY,0);
                            });
                            
                            schedule('1 0 1 1 *', function () 
                            {//PV Jahreswert zurücksetzen Immer am 1.1. um 00:01    
                                setState(ID_ENERGY_ADDED_YEARLY,0);
                            });
                             
                            
                            //=====================Hilfsfunktionen============================== 
                            function Deg2Rad( deg ) 
                            {//Umrechnung Grad in Radiat
                                return deg * Math.PI / 180;
                            }
                             
                            function is_startsoc_reached()
                            {
                                if(PV_AKKU_VORHANDEN)
                                {
                                    if(getState(ID_PV_AKKU_SOC).val >= PV_AKKU_START_SOC)
                                    {
                                        return true;
                                    }
                                    else
                                    {
                                        return false;
                                    }
                            
                                }else
                                {
                                    return true; //Wenn kein Akku vorhanden, immer true zurückliefern
                                }
                            }
                            
                            function is_stopsoc_reached()
                            {
                                if(PV_AKKU_VORHANDEN)
                                {
                                    if(getState(ID_PV_AKKU_SOC).val <= PV_AKKU_STOP_SOC)
                                    {
                                        return true;
                                    }
                                    else
                                    {
                                        return false;
                                    }
                            
                                }else
                                {
                                    return false; //Wenn kein Akku vorhanden, immer false zurückliefern
                                }
                            
                            }
                            
                            function at_home() 
                            {//Entfernung des Autos vom Heimstandort ermitteln
                                var lat1 = Deg2Rad(ZUHAUSE_LATITUDE);
                                var lat2 = Deg2Rad(getState(ID_TSL_LATITUDE).val);
                                var lon1 = Deg2Rad(ZUHAUSE_LONGITUDE);
                                var lon2 = Deg2Rad(getState(ID_TSL_LONGITUDE).val);
                                var R = 6371; // km
                                var x = (lon2-lon1) * Math.cos((lat1+lat2)/2);
                                var y = (lat2-lat1);
                                var d = Math.sqrt(x*x + y*y) * R;
                            
                                if(d <= ZUHAUSE_MAX_ENTFERNUNG)
                                {
                                    return true;
                                }else
                                {
                                    return false;
                                }
                            }
                            
                            function calc_added_energy()
                            {
                                var energyadd=0;
                                
                                if(!(getState(ID_UEBERSCHUSSLADUNG_AKTIV).val == 1 || getState(ID_UEBERSCHUSSLADUNG_AKTIV).val ==true))
                                {//Überschussladung gerade nicht aktiv
                                    energyadd = parseFloat(getState(ID_TSL_ADDED_ENERGY).val) - added_energy_without_excess + chargedsofar;
                                }else
                                {
                                    energyadd = parseFloat(getState(ID_TSL_ADDED_ENERGY).val) - added_energy_without_excess;    
                                }
                                log("Chargedsofar="+chargedsofar+ " ; added_energy_without excess="+ added_energy_without_excess, true);
                                log("Energyadd="+energyadd,true); 
                                log("New Daily="+(parseFloat(getState(ID_ENERGY_ADDED_DAILY).val) + energyadd).toFixed(2),true);
                                log("New Monthly="+(parseFloat(getState(ID_ENERGY_ADDED_MONTHLY).val) + energyadd).toFixed(2),true);
                                log("New Yearly="+(parseFloat(getState(ID_ENERGY_ADDED_YEARLY).val) + energyadd).toFixed(2),true);
                                if(energyadd > 0)
                                {
                                    log("Ladung beendet, es wurden " + energyadd + " kWh mit Überschuss geladen",false,true);
                                }
                                
                                setState(ID_ENERGY_ADDED_DAILY,(parseFloat(getState(ID_ENERGY_ADDED_DAILY).val) + energyadd).toFixed(2));
                                setStateDelayed(ID_ENERGY_ADDED_MONTHLY,(parseFloat(getState(ID_ENERGY_ADDED_MONTHLY).val) + energyadd).toFixed(2) ,500);
                                setStateDelayed(ID_ENERGY_ADDED_YEARLY,(parseFloat(getState(ID_ENERGY_ADDED_YEARLY).val) + energyadd).toFixed(2), 1000);
                                added_energy_without_excess = 0;
                                chargedsofar = 0;
                            }
                            
                            function refresh_data()
                            {
                            
                                if(PV_AKKU_VORHANDEN && PV_AKKU_LEISTUNG_EINSTATUS)
                                { // Wenn es nur ein Objekt für Laden + Entladen gibt
                                    if(getState(ID_PV_AKKU_STAT).val !=PV_AKKU_STAT_ENTLADEN)
                                    {
                                        Einspeiseleistung = getState(ID_EINSPEISE_LEISTUNG).val;
                                        Netzbezug=0;
                                    }
                                    else
                                    {
                                        Netzbezug= getState(ID_EINSPEISE_LEISTUNG).val;
                                        Einspeiseleistung=0;
                                    }
                                }
                                else
                                {// kein Akku vorhanden, Einspeiseleistung normal setzen
                                    Einspeiseleistung = getState(ID_EINSPEISE_LEISTUNG).val;
                                    Netzbezug = getState(ID_NETZBEZUG_LEISTUNG).val;   
                                }
                              
                            }
                            
                            
                            
                            function log(logtext,debug=false,Telegramm=false)
                            {
                                if(!debug || (debug && LOGLEVEL=="DEBUG"))
                                {
                                    console.log(logtext);    
                                    if(Telegramm && TELEGRAMM_NOTIFIZIERUNG)
                                    {
                                        if(TELEGRAMM_NUTZER != "")
                                        {// Wenn Nutzer angegeben, nur an diesen Nutzer senden
                                            sendTo('telegram',"@" + TELEGRAMM_NUTZER + " TeslaChargejs: " +logtext);
                                        }else
                                        {//Sonst an alle
                                            sendTo('telegram',"TeslaChargejs: " + logtext);
                                        }
                            
                                    }
                                }
                            }
                            

                            in Zeile 64 und 67 sind die Werte die ich gerne per VIS Button anpassen möchte

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

                            @hal sagte in Javascript mit Button starten und beenden:

                            in Zeile 64 und 67 sind die Werte die ich gerne per VIS Button anpassen möchte

                            Dann deklariere sie als Variablen und ändere die Werte abhängig vom Vis-Schalter.

                            const idVisSchalter = '0_userdata.0.xyz'; // anpassen!
                            // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                            var PV_AKKU_START_SOC             = 30; //%
                             
                            // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                            var PV_AKKU_STOP_SOC             = 15; //%
                            if(getState(idVisSchalter).val) { // Skriptstart
                                PV_AKKU_START_SOC             = 95;
                                PV_AKKU_STOP_SOC             = 85;
                            }
                            
                            on(idVisSchalter, function(dp) {
                                if(dp.state.val) {
                                    PV_AKKU_START_SOC             = 95;
                                    PV_AKKU_STOP_SOC             = 85;
                                } else {
                                    PV_AKKU_START_SOC             = 30;
                                    PV_AKKU_STOP_SOC             = 15;
                                }
                            });
                            

                            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

                            HALH 2 Antworten Letzte Antwort
                            1
                            • HALH HAL

                              @homoran Ich habe in den unterschiedlichen Javascripten jeweils nur die Werte in Zeile 64 und 67 verändert.
                              Vorgang Tesla:

                              // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                              const PV_AKKU_START_SOC             = 30; //%
                              
                              // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                              const PV_AKKU_STOP_SOC             = 15; //%
                              

                              Vorang Hausakku:

                              // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                              const PV_AKKU_START_SOC             = 95; //%
                              
                              // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                              const PV_AKKU_STOP_SOC             = 85; //%
                              
                              HomoranH Nicht stören
                              HomoranH Nicht stören
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von
                              #23

                              @hal und aus diesen Fetzen soll jetzt "jemand mit Lust" dir ein neues Komplettskript bauen, das Batterie und Autoladung steuert? und zusätzlich noch auf einen Button in der vis Reagiert, welcher Ladevorgang Vorrang haben soll?

                              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 -

                              HALH 1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @hal sagte in Javascript mit Button starten und beenden:

                                in Zeile 64 und 67 sind die Werte die ich gerne per VIS Button anpassen möchte

                                Dann deklariere sie als Variablen und ändere die Werte abhängig vom Vis-Schalter.

                                const idVisSchalter = '0_userdata.0.xyz'; // anpassen!
                                // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                                var PV_AKKU_START_SOC             = 30; //%
                                 
                                // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                                var PV_AKKU_STOP_SOC             = 15; //%
                                if(getState(idVisSchalter).val) { // Skriptstart
                                    PV_AKKU_START_SOC             = 95;
                                    PV_AKKU_STOP_SOC             = 85;
                                }
                                
                                on(idVisSchalter, function(dp) {
                                    if(dp.state.val) {
                                        PV_AKKU_START_SOC             = 95;
                                        PV_AKKU_STOP_SOC             = 85;
                                    } else {
                                        PV_AKKU_START_SOC             = 30;
                                        PV_AKKU_STOP_SOC             = 15;
                                    }
                                });
                                
                                HALH Offline
                                HALH Offline
                                HAL
                                schrieb am zuletzt editiert von
                                #24

                                @paul53 DANKE ! Das ist genau das, was ich gewünscht habe !!

                                Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
                                (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

                                1 Antwort Letzte Antwort
                                0
                                • HomoranH Homoran

                                  @hal und aus diesen Fetzen soll jetzt "jemand mit Lust" dir ein neues Komplettskript bauen, das Batterie und Autoladung steuert? und zusätzlich noch auf einen Button in der vis Reagiert, welcher Ladevorgang Vorrang haben soll?

                                  HALH Offline
                                  HALH Offline
                                  HAL
                                  schrieb am zuletzt editiert von
                                  #25

                                  @homoran sagte in Javascript mit Button starten und beenden:

                                  @hal und aus diesen Fetzen soll jetzt "jemand mit Lust" dir ein neues Komplettskript bauen, das Batterie und Autoladung steuert? und zusätzlich noch auf einen Button in der vis Reagiert, welcher Ladevorgang Vorrang haben soll?

                                  schon erledigt. Keine weiteren Mühen mehr erforderlich.

                                  Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
                                  (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

                                  HomoranH 1 Antwort Letzte Antwort
                                  1
                                  • paul53P paul53

                                    @hal sagte in Javascript mit Button starten und beenden:

                                    in Zeile 64 und 67 sind die Werte die ich gerne per VIS Button anpassen möchte

                                    Dann deklariere sie als Variablen und ändere die Werte abhängig vom Vis-Schalter.

                                    const idVisSchalter = '0_userdata.0.xyz'; // anpassen!
                                    // Ab welchem Akkustand des PV Akkus soll der Ladevorgang starten?
                                    var PV_AKKU_START_SOC             = 30; //%
                                     
                                    // Ab welchem Akkustand des PV Akkus soll der Ladevorgang Stoppen?
                                    var PV_AKKU_STOP_SOC             = 15; //%
                                    if(getState(idVisSchalter).val) { // Skriptstart
                                        PV_AKKU_START_SOC             = 95;
                                        PV_AKKU_STOP_SOC             = 85;
                                    }
                                    
                                    on(idVisSchalter, function(dp) {
                                        if(dp.state.val) {
                                            PV_AKKU_START_SOC             = 95;
                                            PV_AKKU_STOP_SOC             = 85;
                                        } else {
                                            PV_AKKU_START_SOC             = 30;
                                            PV_AKKU_STOP_SOC             = 15;
                                        }
                                    });
                                    
                                    HALH Offline
                                    HALH Offline
                                    HAL
                                    schrieb am zuletzt editiert von
                                    #26

                                    @paul53 0_userdata.0.Vorrangladung Type bolean ( true / false ) ? Habe ich schon im VIS-View eingebaut

                                    Alle Raspberry ( 5 ) gegen NUC (N100, 16GB Ram und 500GB M2 SSD, extern 2TB SSD ) mit Proxmox 8.3.3 gewechselt. Läuft absolut super !
                                    (Iobroker, Grafana, Teslalogger, Nextcloud, go2rtc, PiHole, IOB-VIS2, Teslamate, homeassistant nur als test)

                                    1 Antwort Letzte Antwort
                                    0
                                    • HALH HAL

                                      @homoran sagte in Javascript mit Button starten und beenden:

                                      @hal und aus diesen Fetzen soll jetzt "jemand mit Lust" dir ein neues Komplettskript bauen, das Batterie und Autoladung steuert? und zusätzlich noch auf einen Button in der vis Reagiert, welcher Ladevorgang Vorrang haben soll?

                                      schon erledigt. Keine weiteren Mühen mehr erforderlich.

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

                                      @hal sagte in Javascript mit Button starten und beenden:

                                      Keine weiteren Mühen mehr erforderlich.

                                      ja, da hat sich einer mit Lust gefunden.

                                      ich hatte nur bis dahin nicht verstanden dass du das selbe Skript zweimal mit 2 verschiedenen Einstellungen gefahren hattest.

                                      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 -

                                      paul53P 1 Antwort Letzte Antwort
                                      0
                                      • HomoranH Homoran

                                        @hal sagte in Javascript mit Button starten und beenden:

                                        Keine weiteren Mühen mehr erforderlich.

                                        ja, da hat sich einer mit Lust gefunden.

                                        ich hatte nur bis dahin nicht verstanden dass du das selbe Skript zweimal mit 2 verschiedenen Einstellungen gefahren hattest.

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

                                        @homoran sagte: das selbe Skript zweimal

                                        Das gleiche Skript - es waren zwei Skripte.

                                        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

                                        HomoranH HALH 2 Antworten Letzte Antwort
                                        0
                                        • paul53P paul53

                                          @homoran sagte: das selbe Skript zweimal

                                          Das gleiche Skript - es waren zwei Skripte.

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

                                          @paul53 Natürlich!
                                          meine liederliche Genauigkeit mal wieder 😢

                                          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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          725

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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