Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript Schleife mit Wildcard [gelöst]

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

JavaScript Schleife mit Wildcard [gelöst]

Scheduled Pinned Locked Moved Skripten / Logik
6 Posts 2 Posters 610 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Martin1324M Offline
    Martin1324M Offline
    Martin1324
    wrote on last edited by Martin1324
    #1

    Hallo Zusammen,

    ich habe folgendes Skript im Einsatz, um den Stromverbrauch von ver. Geräte zu protokollieren.
    Das Skript speicher die Daten wie folgt ab:
    Verbrauch
    Verbrauch.png

    Kosten
    Kosten.jpg

    Für die Berechnung der Kosten ist ein statischer Strompreis hinterlegt.
    Leider ändern sich die Strompreise bei uns zurzeit extrem. Die Preisänderung bekomme ich leider erst immer nachträglich mit.

    Nun möchte ich ein Skript erstellen, welches mir im Nachhinein den Strompreis richtigstellt. Hierfür habe ich den Strompreis in folgenden Format als Datenpunkt abgelegt (Beispiel für Monat):
    Strompreis.jpg

    Ich bastle bereits an einem Skript, welches mir den richtigen Strompreis errechnet. Als Vorlage habe ich ein Skript genommen, welches mir @paul53 in einen anderen Post zur Verfügung gestellt hat. Vielen Dank nochmals dafür Paul!!

    Leider hänge ich zurzeit an einer Schleife, welche mir alle Datenpunkte durchgeht, damit das Skript nicht eine Zeile pro Datenpunkt hat.
    Hat hier vielleicht jemand eine Idee, wie ich es am Besten umsetzen kann?

       const idsSrc = $('0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.*');
       idsSrc.each(function(id) {
           let idDst = id.replace('Verbrauch', 'Kosten');
           setState(idDst, (parseFloat(getState("0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.Aquarium.Verbrauch._Monat.Monat_1").val) * getState("0_userdata.0.Stromverbrauch.Strompreis._Monat.Monat_1").val)));
       });
    

    Bin leider im Skripten nicht so fit.

    Vielen Dank euch im Voraus

    lg

    Martin

    paul53P 1 Reply Last reply
    0
    • Martin1324M Martin1324

      Hallo Zusammen,

      ich habe folgendes Skript im Einsatz, um den Stromverbrauch von ver. Geräte zu protokollieren.
      Das Skript speicher die Daten wie folgt ab:
      Verbrauch
      Verbrauch.png

      Kosten
      Kosten.jpg

      Für die Berechnung der Kosten ist ein statischer Strompreis hinterlegt.
      Leider ändern sich die Strompreise bei uns zurzeit extrem. Die Preisänderung bekomme ich leider erst immer nachträglich mit.

      Nun möchte ich ein Skript erstellen, welches mir im Nachhinein den Strompreis richtigstellt. Hierfür habe ich den Strompreis in folgenden Format als Datenpunkt abgelegt (Beispiel für Monat):
      Strompreis.jpg

      Ich bastle bereits an einem Skript, welches mir den richtigen Strompreis errechnet. Als Vorlage habe ich ein Skript genommen, welches mir @paul53 in einen anderen Post zur Verfügung gestellt hat. Vielen Dank nochmals dafür Paul!!

      Leider hänge ich zurzeit an einer Schleife, welche mir alle Datenpunkte durchgeht, damit das Skript nicht eine Zeile pro Datenpunkt hat.
      Hat hier vielleicht jemand eine Idee, wie ich es am Besten umsetzen kann?

         const idsSrc = $('0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.*');
         idsSrc.each(function(id) {
             let idDst = id.replace('Verbrauch', 'Kosten');
             setState(idDst, (parseFloat(getState("0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.Aquarium.Verbrauch._Monat.Monat_1").val) * getState("0_userdata.0.Stromverbrauch.Strompreis._Monat.Monat_1").val)));
         });
      

      Bin leider im Skripten nicht so fit.

      Vielen Dank euch im Voraus

      lg

      Martin

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by paul53
      #2

      @marting
      Der Selektor muss stärker eingeschränkt werden:

         const idsSrc = $('0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.Aquarium.Verbrauch._Monat.Monat_*');
         idsSrc.each(function(id) {
             let idDst = id.replace('Verbrauch', 'Kosten');
             let pos = id.indexOf('Monat_') + 6;
             let monat = id.substring(pos);
             setState(idDst, getState(id).val * getState("0_userdata.0.Stromverbrauch.Strompreis._Monat.Monat_" + monat).val, true);
         });
      

      Damit werden alle Monate behandelt. Es sollten allerdings auch gültige Werte enthalten sein.

      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

      Martin1324M 1 Reply Last reply
      1
      • paul53P paul53

        @marting
        Der Selektor muss stärker eingeschränkt werden:

           const idsSrc = $('0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.Aquarium.Verbrauch._Monat.Monat_*');
           idsSrc.each(function(id) {
               let idDst = id.replace('Verbrauch', 'Kosten');
               let pos = id.indexOf('Monat_') + 6;
               let monat = id.substring(pos);
               setState(idDst, getState(id).val * getState("0_userdata.0.Stromverbrauch.Strompreis._Monat.Monat_" + monat).val, true);
           });
        

        Damit werden alle Monate behandelt. Es sollten allerdings auch gültige Werte enthalten sein.

        Martin1324M Offline
        Martin1324M Offline
        Martin1324
        wrote on last edited by
        #3

        @paul53
        Vielen vielen Dank! Das Skript funktioniert.
        Musste lediglich das replace leicht anpassen, da das Wort Verbrauch mehrfach vorkommt. Habe es durch Verbrauch. und Kosten. ersetzt.

        Hätte noch eine kurze Verständnisfrage. Wieso steht in Zeile 4 "+6"? Für was steht die 6? Dachte anfangs, dass ich hier 11 eingeben muss, da ich ja 12 Monate haben möchte.

        Neben dem Aquarium habe ich noch weitere Geräte. Wäre es evtl. möglich eine Schleife zu generieren, dass alle Geräte auf einmal abgearbeitet werden?
        Ansonsten kann ich aber auch dieses Skript für jedes meiner Geräte kopieren.

        Vielen Dank im Voraus

        lg

        Martin

        paul53P 2 Replies Last reply
        0
        • Martin1324M Martin1324

          @paul53
          Vielen vielen Dank! Das Skript funktioniert.
          Musste lediglich das replace leicht anpassen, da das Wort Verbrauch mehrfach vorkommt. Habe es durch Verbrauch. und Kosten. ersetzt.

          Hätte noch eine kurze Verständnisfrage. Wieso steht in Zeile 4 "+6"? Für was steht die 6? Dachte anfangs, dass ich hier 11 eingeben muss, da ich ja 12 Monate haben möchte.

          Neben dem Aquarium habe ich noch weitere Geräte. Wäre es evtl. möglich eine Schleife zu generieren, dass alle Geräte auf einmal abgearbeitet werden?
          Ansonsten kann ich aber auch dieses Skript für jedes meiner Geräte kopieren.

          Vielen Dank im Voraus

          lg

          Martin

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #4

          @marting sagte: Wieso steht in Zeile 4 "+6"?

          Es wird in der ID die Position des Anfangs vom Wort "Monat_" ermittelt. Die Monatsnummer befindet sich dahinter, also 6 Zeichen weiter rechts.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Reply Last reply
          1
          • Martin1324M Martin1324

            @paul53
            Vielen vielen Dank! Das Skript funktioniert.
            Musste lediglich das replace leicht anpassen, da das Wort Verbrauch mehrfach vorkommt. Habe es durch Verbrauch. und Kosten. ersetzt.

            Hätte noch eine kurze Verständnisfrage. Wieso steht in Zeile 4 "+6"? Für was steht die 6? Dachte anfangs, dass ich hier 11 eingeben muss, da ich ja 12 Monate haben möchte.

            Neben dem Aquarium habe ich noch weitere Geräte. Wäre es evtl. möglich eine Schleife zu generieren, dass alle Geräte auf einmal abgearbeitet werden?
            Ansonsten kann ich aber auch dieses Skript für jedes meiner Geräte kopieren.

            Vielen Dank im Voraus

            lg

            Martin

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #5

            @marting sagte: Neben dem Aquarium habe ich noch weitere Geräte. Wäre es evtl. möglich eine Schleife zu generieren, dass alle Geräte auf einmal abgearbeitet werden?

            Wenn die ID-Struktur ansonsten identisch ist:

               const idsSrc = $('0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.*.Verbrauch._Monat.Monat_*');
            

            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

            Martin1324M 1 Reply Last reply
            1
            • paul53P paul53

              @marting sagte: Neben dem Aquarium habe ich noch weitere Geräte. Wäre es evtl. möglich eine Schleife zu generieren, dass alle Geräte auf einmal abgearbeitet werden?

              Wenn die ID-Struktur ansonsten identisch ist:

                 const idsSrc = $('0_userdata.0.Verbrauchszaehler.Verbrauchszaehler_GM.Total.*.Verbrauch._Monat.Monat_*');
              
              Martin1324M Offline
              Martin1324M Offline
              Martin1324
              wrote on last edited by
              #6

              @paul53
              Vielen Dank!! Das Skript läuft perfekt!

              lg

              Martin

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              850

              Online

              32.7k

              Users

              82.4k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe