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. Rechnen mit 2 Objekten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Rechnen mit 2 Objekten

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 4 Kommentatoren 1.4k 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.
  • P Offline
    P Offline
    PrinzEisenherz1
    schrieb am zuletzt editiert von
    #1

    Hi zusammen!

    Wie kann ich mit 2 Objekten rechnen?

    Und zwar möchte ich mir z.B. Beim RPI Adapter bei Sdcard noch den freien Speicher anzeigen lassen und dafür möchte ich rpi.0.sdcard.sdcard_root_total - rpi.0.sdcard.sdcard_root_used rechnen und das Ergebnis in ein neues Objekt setzen!

    Aber wie mach ich das?

    Kann mir da jemand bei dem Script bitte behilflich sein?

    Gruß Johnny

    Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

    1 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #2

      Probier mal:

      createState("sdcard_root_free",0);
      var sdcard_root_free = getState(rpi.0.sdcard.sdcard_root_total).val - getState( rpi.0.sdcard.sdcard_root_used ).val;
      log("sdcard_root_free: " + sdcard_root_free);
      setState("sdcard_root_free",sdcard_root_free);
      
      

      Beim ersten Start dürfte noch ein Fehler kommen, da der Datenpunkt noch nicht angelegt ist.

      Beim zweiten Start sollte es durchlaufen.

      Wenn es funktioniert kannst Du das noch abfangen.

      Wobei Du das dann in dem Script nicht mehr merken wirst ;-)

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        PrinzEisenherz1
        schrieb am zuletzt editiert von
        #3

        Hi ruhr70!

        Danke für Deine Unterstützung aber leider klappt das nicht!

        Im log steht folgendes:

        javascript-0	2016-03-08 17:09:38	error	script.js.RPI_MemFree compile failed: SyntaxError: Unexpected number
        
        

        Johnny

        Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          PrinzEisenherz1
          schrieb am zuletzt editiert von
          #4

          Halt, jetzt gehts!

          Hab die IDs nochmal neu eingefügt!

          Jetzt läuft es!

          Muss ich da jetzt noch n cron anhängen oder erkennt es automatisch Veränderungen des Speicherplatzes?

          Gruß

          Johnny

          Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

          1 Antwort Letzte Antwort
          0
          • OstfrieseUnterwegsO Offline
            OstfrieseUnterwegsO Offline
            OstfrieseUnterwegs
            schrieb am zuletzt editiert von
            #5

            Du kannst ein on/subscribe machen

            
            function memBerechnen(){
                  var sdcard_root_free = getState(rpi.0.sdcard.sdcard_root_total).val - getState( rpi.0.sdcard.sdcard_root_used ).val;
                  log("sdcard_root_free: " + sdcard_root_free);
                  setState("sdcard_root_free",sdcard_root_free);
            }
            
            on({
                 id: 'rpi.0.sdcard.sdcard_root_used', 
                 change: 'any'
                 }
                 memBerechen
            );
            
            

            einbauen, wenn sich 'used' ändert, dann loslegen.

            Das kann aber nach hinten los gehen, wenn sich der 'used' stänig ändert.

            Dann besser ein Schedule.

            Statt on() dann

            schedule('*/10 * * * *', memBerechnen);
            
            1 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              Um die CPU-Belastung gering zu halten, wenn sich "used" häufig ändert, würde ich es so machen:

              var used = getState("rpi.0.sdcard.sdcard_root_used").val;
              var total = getState("rpi.0.sdcard.sdcard_root_total").val;
              
              setState("sdcard_root_free", total - used);  // Script start
              
              on('rpi.0.sdcard.sdcard_root_used', function(dp) {
              	setState("sdcard_root_free", total - dp.state.val);
              });
              

              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
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                schrieb am zuletzt editiert von
                #7

                @paul53:

                Um die CPU-Belastung gering zu halten, wenn sich "used" häufig ändert, würde ich es so machen:

                var used = getState("rpi.0.sdcard.sdcard_root_used").val;
                var total = getState("rpi.0.sdcard.sdcard_root_total").val;
                
                setState("sdcard_root_free", total - used);  // Script start
                
                on('rpi.0.sdcard.sdcard_root_used', function(dp) {
                	setState("sdcard_root_free", total - dp.state.val);
                });
                ```` `  
                

                Ich verstehe es nicht ganz.

                Ist da nicht der einzige Effekt, dass total sich nicht ändert und daher nicht immer neu ausgelesen werden muss?

                Oder gibt es noch einen anderen Effekt?

                Ansonsten wird doch auch bei jeder Änderung geschrieben.

                Wenn jede Änderung wieder eine Änderung auf der SD Karte nachzieht, hört das gar nicht mehr auf. ;-)

                [EDIT]

                Ok, rpi.0.sdcard.sdcard_root_used wird bei Änderung auch nur einmal gelesen, statt zweimal.

                Adapter: Fritzbox, Unify Circuit
                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                1 Antwort Letzte Antwort
                0
                • OstfrieseUnterwegsO Offline
                  OstfrieseUnterwegsO Offline
                  OstfrieseUnterwegs
                  schrieb am zuletzt editiert von
                  #8

                  Stimmt, das ist deutlich effektiver.

                  Trotzdem glaub ich, dass das ein eine irre CPU belastung erzeugt, weil sich used ja ständig ändert.

                  Meine Präferenz wäre ein schedule. Jede Minute oder sogar all 10 sek, das wäre immer noch seltener als bei jeder Änderung mit Subscribe.

                  Die Idee ist ja bestimmt so in etwa den Trend zu erkennen, und nicht ein Echtzeit-Monitoring.

                  1 Antwort Letzte Antwort
                  0
                  • P Offline
                    P Offline
                    PrinzEisenherz1
                    schrieb am zuletzt editiert von
                    #9

                    Tausend Dank euch allen!

                    Ich hab es jetzt mit Schedule eingebunden

                    Ist das so in Ordnung?

                    createState("sdcard_root_free",0);
                    function memBerechnen(){
                    var sdcard_root_free = getState("rpi.0.sdcard.sdcard_root_total"/*rpi.0.sdcard.sdcard_root_total*/).val - getState("rpi.0.sdcard.sdcard_root_used"/*rpi.0.sdcard.sdcard_root_used*/).val;
                    log("sdcard_root_free: " + sdcard_root_free);
                    setState("sdcard_root_free",sdcard_root_free);
                    }
                    schedule('*/10 * * * *', memBerechnen);
                    
                    

                    10-Min Rythmus reicht mir vollkommen!

                    Gruß

                    Johnny

                    Intel-NUC mit ProxMox: ioBroker,SQL, logging Strom- Gas- u. Wasserzähler;10Zoll Tab im Flur für VIS; weiteres: Homematic CCU2, Homeduino, Kameras, selbstgebaute Wetterstation;

                    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

                    517

                    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