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. JavaScript
  5. [Gelöst] Externes npm-Modul im Skript einbetten

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

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

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 198 Aufrufe 2 Watching
  • Ä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.
  • BananaJoeB Online
    BananaJoeB Online
    BananaJoe
    Most Active
    schrieb am zuletzt editiert von BananaJoe
    #1

    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

    ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

    OliverIOO 1 Antwort Letzte Antwort
    0
    • BananaJoeB 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

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von
      #2

      @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.

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      BananaJoeB 1 Antwort Letzte Antwort
      0
      • OliverIOO OliverIO

        @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.

        BananaJoeB Online
        BananaJoeB Online
        BananaJoe
        Most Active
        schrieb am zuletzt editiert von
        #3

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

        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

        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

        660

        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