Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Javaskript nur positive Ergebnisse anzeigen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Javaskript nur positive Ergebnisse anzeigen

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 3 Kommentatoren 344 Aufrufe 2 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.
  • T Offline
    T Offline
    txixmxo
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich möchte bei diesem Skript nur positive Ergebnisse anzeigen lassen. Alles was minus als Vorzeichen hat soll 0 sein.
    Könnt Ihr mir einen Lösungsansatz geben? Ich denke das ist für geübte nur eine Kleinigkeit ;)

    Vielen Dank schonmal!!!

    Timo

    const idSolar = 'javascript.0.Solar.Wechselrichter.PVLeistungAktuell';
    const idSolarBatt = 'modbus.0.holdingRegisters.57716_Battery_Instantaneous_Power';
    const idSumme = 'javascript.0.Solar.PVDach'; 
     
    var solar = getState(idSolar).val;
    var solarBatt = getState(idSolarBatt).val;
     
    if(!existsState(idSumme)) createState(idSumme, solar + solarBatt, {type: 'number', unit: 'W'}); 
     
    function summe() {
        setState(idSumme, solar + solarBatt, true);
    }
     
    on(idSolar, function(dp) {
       solar = dp.state.val;
       summe();
    });
    on(idSolarBatt, function(dp) {
     solarBatt = dp.state.val;
       summe();
    });
    
    bahnuhrB 1 Antwort Letzte Antwort
    0
    • T txixmxo

      Hallo zusammen,

      ich möchte bei diesem Skript nur positive Ergebnisse anzeigen lassen. Alles was minus als Vorzeichen hat soll 0 sein.
      Könnt Ihr mir einen Lösungsansatz geben? Ich denke das ist für geübte nur eine Kleinigkeit ;)

      Vielen Dank schonmal!!!

      Timo

      const idSolar = 'javascript.0.Solar.Wechselrichter.PVLeistungAktuell';
      const idSolarBatt = 'modbus.0.holdingRegisters.57716_Battery_Instantaneous_Power';
      const idSumme = 'javascript.0.Solar.PVDach'; 
       
      var solar = getState(idSolar).val;
      var solarBatt = getState(idSolarBatt).val;
       
      if(!existsState(idSumme)) createState(idSumme, solar + solarBatt, {type: 'number', unit: 'W'}); 
       
      function summe() {
          setState(idSumme, solar + solarBatt, true);
      }
       
      on(idSolar, function(dp) {
         solar = dp.state.val;
         summe();
      });
      on(idSolarBatt, function(dp) {
       solarBatt = dp.state.val;
         summe();
      });
      
      bahnuhrB Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #2

      @txixmxo
      So klappt das nicht.

      • Variablen nicht übergeben zur function
      • außerhalb der function Variablen sind nicht aktuell
      • etc.

      Probier es so:

      var solar, solarBatt, summe = 'javascript.0.Solar.PVDach'; 
      
      on('javascript.0.Solar.Wechselrichter.PVLeistungAktuell', function(dp) {
          solar = dp.state.val;
      	if (solar < 0) { solar = 0; } 
          solarBatt = getState('modbus.0.holdingRegisters.57716_Battery_Instantaneous_Power').val;
      	if (solarBatt < 0) { solarBatt = 0; };
          setState(summe, solar + solarBatt);
      });
      
      on('modbus.0.holdingRegisters.57716_Battery_Instantaneous_Power', function(dp) {
          solarBatt = dp.state.val;
      	if (solarBatt < 0) { solarBatt = 0; } 
          solar = getState('javascript.0.Solar.Wechselrichter.PVLeistungAktuell').val;
      	if (solar < 0) { solar = 0; };
          setState(summe, solar + solarBatt);
      });
      
      

      Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
      Danke.
      gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
      ScreenToGif :https://www.screentogif.com/downloads.html

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        txixmxo
        schrieb am zuletzt editiert von
        #3

        Die SolarBatt ist gerade ein negativer Wert da entladen wird. Mit der Addition mit der PV Leistung Aktuell soll die aktuelle Solarleistung angezeigt werden.

        Wenn ich dein Skript starte Habe ich fpr PVDach gerade einen Wert von 400 Watt. Das enspricht der Entladung der Batterie.

        Möchte halt gerne nur die Ausgabe nach der Berechnung auf dem Minimalwert 0 bringen. Die Berechnung an sich soll nicht beeinflusst werden.

        bahnuhrB paul53P 2 Antworten Letzte Antwort
        0
        • T txixmxo

          Die SolarBatt ist gerade ein negativer Wert da entladen wird. Mit der Addition mit der PV Leistung Aktuell soll die aktuelle Solarleistung angezeigt werden.

          Wenn ich dein Skript starte Habe ich fpr PVDach gerade einen Wert von 400 Watt. Das enspricht der Entladung der Batterie.

          Möchte halt gerne nur die Ausgabe nach der Berechnung auf dem Minimalwert 0 bringen. Die Berechnung an sich soll nicht beeinflusst werden.

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #4

          @txixmxo sagte in Javaskript nur positive Ergebnisse anzeigen:

          Die SolarBatt ist gerade ein negativer Wert da entladen wird. Mit der Addition mit der PV Leistung Aktuell soll die aktuelle Solarleistung angezeigt werden.

          Wenn ich dein Skript starte Habe ich fpr PVDach gerade einen Wert von 400 Watt. Das enspricht der Entladung der Batterie.

          Möchte halt gerne nur die Ausgabe nach der Berechnung auf dem Minimalwert 0 bringen. Die Berechnung an sich soll nicht beeinflusst werden.

          Das versteh ich nicht.
          Du hast oben geschrieben:

          @txixmxo sagte in Javaskript nur positive Ergebnisse anzeigen:

          Alles was minus als Vorzeichen hat soll 0 sein.

          und dies macht das Script.

          Aber wenn es nicht so ist, wie du es möchtest dann pass es doch an.
          Hast doch jetzt eine Vorlage.


          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          0
          • T txixmxo

            Die SolarBatt ist gerade ein negativer Wert da entladen wird. Mit der Addition mit der PV Leistung Aktuell soll die aktuelle Solarleistung angezeigt werden.

            Wenn ich dein Skript starte Habe ich fpr PVDach gerade einen Wert von 400 Watt. Das enspricht der Entladung der Batterie.

            Möchte halt gerne nur die Ausgabe nach der Berechnung auf dem Minimalwert 0 bringen. Die Berechnung an sich soll nicht beeinflusst werden.

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

            @txixmxo sagte: nach der Berechnung auf dem Minimalwert 0 bringen.

            function summe() {
                setState(idSumme, Math.max(solar + solarBatt, 0), true);
            }
            

            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

            T 1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              txixmxo
              schrieb am zuletzt editiert von
              #6

              @bahnuhr said in Javaskript nur positive Ergebnisse anzeigen:

              @txixmxo sagte in Javaskript nur positive Ergebnisse anzeigen:

              Alles was minus als Vorzeichen hat soll 0 sein.

              Genau. Meine aber das Ergebnis was in PVDach steht. Wenn Skript -40 ausrechnet dann sollte 0 in PVDach angezeigt werden. Wenn im Skript 400 ausgerechnet wird soll auch 400 in PVDach ausgegeben werden.

              So verständlicher? Sorry für die umständliche Beschreibung.

              Meine erste Idee war bei diesem hier:

              if(!existsState(idSumme)) createState(idSumme, solar + solarBatt, {type: 'number', unit: 'W'});

              einfach ein =>0 einzufügen, aber das hat leider nicht geklappt ...

              Vielen Dank auf jeden Fall schonmal für deine Hilfe!!

              1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @txixmxo sagte: nach der Berechnung auf dem Minimalwert 0 bringen.

                function summe() {
                    setState(idSumme, Math.max(solar + solarBatt, 0), true);
                }
                
                T Offline
                T Offline
                txixmxo
                schrieb am zuletzt editiert von
                #7

                @paul53 said in Javaskript nur positive Ergebnisse anzeigen:

                                                                                                                                            function summe() {                                                                                                                                                                                setState(idSumme, Math.max(solar + solarBatt, 0), true);                                                                                                                                                                            }                                            
                

                Ich glaube das war es .... danke allen!! Mal sehen was passiert, wenn morgen die Sonne scheint ;)

                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.6k

                Benutzer

                82.2k

                Themen

                1.3m

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

                • Du hast noch kein Konto? Registrieren

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