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. Bitte um kleines Testscript

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    868

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Bitte um kleines Testscript

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
13 Beiträge 3 Kommentatoren 1.5k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • F Offline
    F Offline
    Fraenki23
    schrieb am zuletzt editiert von
    #4

    Hallo

    Danke für die Mühe die Ihr euch für mich macht. Erst verstehe ich das Programmieren nicht und dann drücke ich mich dann auch noch unverständlich aus.

    Wie schon geschrieben habe ich einen Stromzähler der alle 60 Sekunden mit einen esp8266 die Impulse an meinen Raspi Iobroker weitergibt. Diese möchte ich zählen und wenn 800 Impulse erreicht sind eine ander Variable um 1 KW erhöhen und den Wert zurück auf 0 setzen . Ich habe auch ein Script das aber in Blockly nicht angenommen wird.

    Ich ahbe schon bedenken dass bei der Installation etwas schief gelaufen ist.

    Ich bekomme vom Stromzähler die Datenpunkte.

    1. Count Aktuelle Impulse vom Stromzähler

    2. Time

    3. Total

    Danke für Eure Hilfe

    Fränki
    7642_1.jpg

    1 Antwort Letzte Antwort
    0
    • metaxaM Offline
      metaxaM Offline
      metaxa
      schrieb am zuletzt editiert von
      #5

      Wirkliche Hilfe kann ich noch nicht anbieten 8-)

      Ich verstehe das jetzt so:

      gesucht Blockly:

      trigger = datenpunkt "count"

      wenn Datenpunkt "count" > 800 (kann ja auch sein, dass nach 60 Sekunden der Stromzähler mehr als die offene Differenz auf 800 liefert, oder?)

      dann Datenpunkt "andere Variable" + 1

      Datenpunkt "count" = 0

      ende wenn

      Wenn das so gewünscht ist, sollt man in weiterer Folge sich überlegen, die Differenz zwischen 800 und dem realen Wert von "Count" in "Count" als Startpunkt zur nächsten Aufsummierung zu belassen. Damit wird es wohl genauer.

      Richtig?

      Wie sieht denn dein Blockly aus, dass nicht angenommen wird? Mach bitte einen Screen.

      LG, mxa

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #6

        Als erstes solltest Du die Maßeinheiten korrigieren:

        Zählerstand und alle Zähler: kWh

        Time: ms

        Deine Art, die Berechnung durchführen zu wollen, ist zu kompliziert. Vorschlag:

        const idCount = '...0.Stromzaehler.Count'; 
        const idTime = '...0.Stromzaehler.Time';
        const idStand = '...0.Stromzaehler.Zählerstand';
        
        var cnt = 800 * getState(idStand).val;
        
        on({id: idCount}, function(dp) { // triggert bei jeder Aktualisierung
           cnt = cnt + dp.state.val;
           setState(idStand, Math.round(cnt / 8) / 100, true); // 2 Nachkommastellen
        });
        
        on({id: idTime}, function(dp) {
           var power = Math.round(1.25 * 3600000 / dp.state.val); // 1 Impuls = 1,25 Wh
           log('Leistung: ' + power + ' W'); // Datenpunkt für aktuelle Leistung ist nicht vorgesehen
        });
        

        Der Anfangswert für "Zählerstand" muss vor Start des Skriptes per Hand eingegeben werden. Für die Ermittlung der Wochen-, Monats- und Jahreswerte gibt es Skripte im Forum.

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

        1 Antwort Letzte Antwort
        0
        • metaxaM Offline
          metaxaM Offline
          metaxa
          schrieb am zuletzt editiert von
          #7

          @paul53:

          Deine Art, die Berechnung durchführen zu wollen, ist zu kompliziert. Vorschlag: `
          Der Aussage habe ich nichs hinzufügen. 1) weil ich nix von Javascript in Reinkultur verstehe, 2) paul53 mit Sicherheit weiß was professionell zu tun ist und 3) magels eines Stromzählers.

          Ich habe mich da eher an die einfache Aufgabenstellung von dir gehalten :-), da tue ich mir leichter. Und weil ich es inzwischen schon getestet habe, 488_fraenki23_1.jpg möchte ich es dir auch nicht vorenthalten :|

          Du bist mit Sicherheit aber in Händen von paul53 besser aufgehoben!!

          LG, mxa

          1 Antwort Letzte Antwort
          0
          • F Offline
            F Offline
            Fraenki23
            schrieb am zuletzt editiert von
            #8

            Hallo alle

            Ich vesrtehe leider ads Script von Paul53 nicht. Muss ich etwas an dem Script verändern

            (const idCount = '…0.Stromzaehler.Count';

            const idTime = '...0.Stromzaehler.Time';

            const idStand = '...0.Stromzaehler.Zählerstand';)

            und dann als Script speichern.

            Wass passiert dann wenn ich es starte. Wird etwas verändert oder neu angelegt.

            Ich hoffe dass Ihr mir noch ne Hilfestellung gebt wenn Ihr auch das Gefühl habt daß Hopfen und Malz verloren ist.

            Gruß Fränki

            Ich habe mal 2 Scripte als Word eingestellt die sich nicht in Blockly starten lassen.
            7642_erstes_und_zweites_script_global.docx

            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #9

              @Fraenki23:

              Muss ich etwas an dem Script verändern `
              Im Screenshot mit den Datenpunkten ist leider die Instanz nicht zu sehen.

              const idCount = '...0.Stromzaehler.Count'; 
              const idTime = '...0.Stromzaehler.Time';
              const idStand = '...0.Stromzaehler.Zählerstand';
              
              

              Es müssen jeweils die ersten zwei Punkte durch den Adapternamen ersetzt werden.
              @Fraenki23:

              Wass passiert dann wenn ich es starte. Wird etwas verändert oder neu angelegt. `
              Neu angelegt wird nichts. Der Wert im Datenpunkt "Zählerstand" wird jede Minute verändert, da neu berechnet. Bitte vorher den Anfangswert (vom Zähler ablesen) per Hand im Reiter "Objekte" eingeben !

              Es wird jede Minute ein Log-Eintrag mit der aktuellen Leistung in W erzeugt.

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

              1 Antwort Letzte Antwort
              0
              • F Offline
                F Offline
                Fraenki23
                schrieb am zuletzt editiert von
                #10

                Hallo Paul53

                Kannst Du mal die Bilder ansehen. Hab bistimmt was falsch gemacht.

                Danke Fränki
                7642_1.jpg
                7642_2.jpg
                7642_3.jpg
                7642_4.jpg

                1 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #11

                  Die IDs sind Zeichenketten (Hochkomma) !

                  Eigene Datenpunkte (Zaehlerstand) sollten nicht in irgendeiner Instanz ("mqtt.0") erstellt werden, sondern unter "javascript.0", da die Adapter ihre eigenen Datenpunkte verwalten, also unter Umständen auch löschen.

                  const idCount = 'mqtt.0.StromzaehlerYouTuber.Stromzaehler_2.Count'; 
                  const idTime = 'mqtt.0.StromzaehlerYouTuber.Stromzaehler_2.Time';
                  const idStand = 'javascript.0.Stromzaehler_2.Zaehlerstand';
                  const idPower = 'javascript.0.Stromzaehler_2.Leistung';
                  

                  Die Datenpunkte vom Typ "Zahl" kannst Du im Reiter "Objekte" erstellen, indem Du javascript.0 selektierst und darunter z.B. den Datenpunkt mit dem Namen Stromzaehler_2.Zaehlerstand erstellst (Einheit: kWh).

                  Außerdem: Umlaute in IDs vermeiden.

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

                  1 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #12

                    Alternativ können die eigenen Datenpunkte auch im Skript erzeugt werden.

                    const idCount = 'mqtt.0.StromzaehlerYouTuber.Stromzaehler_2.Count'; 
                    const idTime = 'mqtt.0.StromzaehlerYouTuber.Stromzaehler_2.Time';
                    const idStand = 'Stromzaehler_2.Zaehlerstand';
                    const idPower = 'Stromzaehler_2.Leistung';
                    
                    const startwert = 1234.5; // Anfangszählerstand (abgelesen)
                    
                    var cnt;
                    
                    // Erzeugung eigener Datenpunkte
                    createState(idStand, startwert, {type: 'number', unit: 'kWh'}, function() {
                       cnt = 800 * getState(idStand).val;
                    });
                    createState(idPower, 0, {type: 'number', unit: 'W'});
                    
                    on({id: idCount}, function(dp) { // triggert bei jeder Aktualisierung
                       cnt = cnt + dp.state.val;
                       setState(idStand, Math.round(cnt / 8) / 100, true); // 2 Nachkommastellen
                    });
                    
                    on({id: idTime}, function(dp) {
                       var power = Math.round(1.25 * 3600000 / dp.state.val); // 1 Impuls = 1,25 Wh
                       setState(idPower, power, 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

                    1 Antwort Letzte Antwort
                    0
                    • F Offline
                      F Offline
                      Fraenki23
                      schrieb am zuletzt editiert von
                      #13

                      Hallo Paul53

                      Vielen Dank für deine Geduld und vor allem danke für das Skript.

                      Habe es einfach nicht verstanden. Jetzt wo es funktioniert kann ich versuchen es zu verstehen

                      was es macht.

                      Gruß aus Keltern Fränki

                      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

                      684

                      Online

                      32.6k

                      Benutzer

                      82.0k

                      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