Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [Gelöst] Externes npm-Modul im Skript einbetten

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Externes npm-Modul im Skript einbetten

    This topic has been deleted. Only users with topic management privileges can see it.
    • BananaJoe
      BananaJoe Most Active last edited by BananaJoe

      Ich habe gerade das Skript hier entdeckt - und erfolgreich eingebunden:
      https://forum.iobroker.net/topic/2313/skript-absolute-feuchte-berechnen/510?_=1653746612215

      Im Skript stehen 2 Kommentare:

      // benötigt in der Javascript das Modul "dewpoint"
      // (in der Javascript-Instanz Einstellungen unter "Zusätzliche NPM-Module")
      

      und

      // TODO:
      // -----------------------------------------------------------------------------
      // - Verzicht auf das node module "dewpoint"
      

      Naja, ich habe mir das Modul dewpoint mal angesehen - und das ist nicht viel:

      // Calculation of absolute humidity x (in g water per kg dry air) and of dew point temperature (in �C)
      
      var dewpoint = function(h) {
              var z = 1.0 - (0.0065 / 288.15) * h;
              // air pressure in hPa
              this.p = 1013.25 * Math.pow(z, 5.255);
              this.A = 6.112;
              }
      
      dewpoint.prototype.Calc = function(t, rh) {
              t = parseFloat(t);
              var m = 17.62;
              var Tn = 243.12;
              if (t < 0.0) {
              m = 22.46;
              Tn = 272.62;
              }
      
              var     sd = this.A * Math.exp(m * t / (Tn + t));
              var d = sd * rh / 100.0;
      
          return {
             x: 621.98 * d /(this.p - d),
             dp: Tn * Math.log(d/this.A) / (m - Math.log(d/this.A))
              };
      };
      
      module.exports = dewpoint;
      

      Mal dumm gefragt, wenn ich das nun einfach im eigentlich Skript einbauen will, kopiere ich es einfach rein - vermutlich ohne die letzte Zeile mit dem module.exports
      Ich bin mir unsicher was den Aufruf angeht, im Skript selbst wird das Modul mit

      var  DP =   require('dewpoint');        // Das Modul dewpoint einlesen
      

      geladen und über DP per

      var xdp     = new DP(hunn);
      

      die Funktion aufgerufen (die dann wie ich meine ein Objekt bereit stellt)

      Ich vermute das man nur den

      var  DP =   require('dewpoint');
      

      anpassen müsste, habe aber gerade keine Idee wie. In solchen Fällen google ich das gerne ... aber ich verwende gerade wohl die falschen Suchbegriffe ....

      Danke

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @BananaJoe last edited by

        @bananajoe

        So wie du es beschrieben hast, die beiden deklrationsbereiche kopieren und in dein Skript hinzufügen.
        Die Module.exports Zeile weg lassen.

        Danach kannst du die Funktionalität wie folgt nutzen

        var xx = new dewpoint(0);
        var yy = xx.Calc(0,0);
        

        Um den JavaScript Konventionen zu entsprechen, sollte Calc besser klein geschrieben werden ändert aber nix an der Funktionalität.

        BananaJoe 1 Reply Last reply Reply Quote 0
        • BananaJoe
          BananaJoe Most Active @OliverIO last edited by

          @oliverio danke, hat funktioniert.
          jetzt muss ich mal schauen wie ich das Modul dewpoint wieder los werden welches ich nachinstalliert hatte

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          812
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          2
          3
          180
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo