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. Funktion zum umrechnen

NEWS

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

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

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

Funktion zum umrechnen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 2 Kommentatoren 1.8k 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.
  • M Offline
    M Offline
    Matze1708
    schrieb am zuletzt editiert von
    #1

    Hallo,

    Ich möchte ein Skript bauen welches mir einen Wert aufgrund eines Objektes errechnen.

    Idee: Die ObjektID gibt mir den Wert 98 aus.

    Jetzt rechne ich das so um das 2 raus kommt.

    Soweit kein Thema.

    Aber könnte ich das Skript so bauen, dass ich in der Anwendung dieses Skript anspreche, gefolgt von der Objekt id und es mir dann diesen Wert ausspuckt?

    Im Prinzip eine Funktion.

    Vielen Dank für die Hilfe.

    Gesendet von iPhone mit Tapatalk

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #2

      Hallo Matze1708,

      wenn du der Funktion nur die ObjektID übergibst, dann lädt die Funktion den Wert aus der ObjektID.

      Im Prinzip:

      function berechneWert (OID) {
      	var wert = getState(OID).val;
          if (typeof wert === "number") {
              // Berechnung
              // hier nur Beispiel
              var rueckgabe = (wert + wert) / 2;
      
              // Ende Berechnung
              return (rueckgabe);
          } else {
              log('OID enthält keinen Zahlenwert','warn');
              return(0);
          }
      }
      
      ````Es wird geprüft, ob das Objekt eine Zahl enthält, dann eine Berechnung ausgeführt und das Ergebnis zurueckgegeben. Wenn das Objekt keine Zahl ist, wird hier 0 zurückgegeben. Kann aber auch was anderes sein.
      
      Gruß
      
      Pix
      
      EDIT: Aufruf
      

      berechneWert("javascript.0.Objekt");

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        Matze1708
        schrieb am zuletzt editiert von
        #3

        Ich glaube das ist genau das was ich suche.

        Wenn ich es bei mir eingebe und die Function aus einem weiteren Skript öffne kommt das hier raus:

        javascript.0 script.js.Skript1: ReferenceError: berechneWert is not defined at script.js.Skript1:1:1 at ContextifyScript.Script.runInContext (vm.js:35:29)

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

          Ja, das ist klar. Dann musst du diese Funktion in einem Skript speichern und unter global ablegen. Dann kann sie aus anderen Skripten aufgerufen werden.

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Matze1708
            schrieb am zuletzt editiert von
            #5

            Habe ich jetzt getan.

            Eine bekomme aber noch kein Ergebnis zurück.

            Habe es mal über VIS probiert und über ein weiteres Skript.

            Im weiteren Skript steht das hier drin:

            berechneWert("knx.0.25_Meter.Bewegungsmeldung.25_M_Schleuse_BWM_interner_Lichtwert_1");
            

            Im Vis habe ich den Roten Punkt genommen und als ObJectID das obige eingetragen.

            Ist das so richtig?

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #6

              Jetzt verstehe ich erst, was du willst.

              Das Ergebnis soll also in VIS dargestellt werden. :idea:

              Dazu musst du einen neues Objekt erstellen, welches dann das Ergebnis aufnimmt.

              Es ist dann besser, die Funktion wieder aus dem globalen Ordner herauszunehmen und in das Skript zu packen, in dem du den Startwert abfragst.

              Ist das Quellobjekt "knx.0.25_Meter.Bewegungsmeldung.25_M_Schleuse_BWM_interner_Lichtwert_1" immer gleich oder variiert das?

              Verwendest du die Funktion also nur einmal oder für mehrere Objekte?

              Packe also die Funktion in das von dir erwähnte weitere Skript oben rein:

              function berechneWert (OID) {
              
                 createState("Berechnung.Zielwert", 0);
                 var wert = getState(OID).val;
                  if (typeof wert === "number") {
                      // Berechnung
                      // hier nur Beispiel
                      var rueckgabe = (wert + wert) / 2;
              
                      // Ende Berechnung
                      setState("Berechnung.Zielwert", rueckgabe);
                  } else {
                      log('OID enthält keinen Zahlenwert','warn');
                      setState("Berechnung.Zielwert", 0);
                  }
              }
              

              Der Wert steht nun im Objekt "javascript.INSTANZ.Berechnung.Zielwert"

              Gruß

              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                Matze1708
                schrieb am zuletzt editiert von
                #7

                Hallo, danke für deine Hilfe.

                Die Berechnung würde für sehr viele Objekte sein.

                Ich wollte mir sparen für jedes Objekt noch ein Skript anzulegen.

                Sondern nur den Objektaufruf durch die Berechnung zu verändern.

                Gesendet von iPhone mit Tapatalk

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  Matze1708
                  schrieb am zuletzt editiert von
                  #8

                  Eigentlich will ich das Ergebnis in einem Adapter weiter verwenden , weil dieser leider genau den umgekehrten Wert erwartet wie er geliefert bekommt.

                  Er sagt das Fenster ist auf obwohl es zu ist.

                  Weil in meinem Fall der Wert 0% aus dem Aktor kommt das heisst offen und HomeKit bei 0% denkt es wäre zu.

                  Gesendet von iPhone mit Tapatalk

                  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

                  751

                  Online

                  32.4k

                  Benutzer

                  81.5k

                  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