NEWS
[Gelöst] Externes npm-Modul im Skript einbetten
-
Ich habe gerade das Skript hier entdeckt - und erfolgreich eingebunden:
https://forum.iobroker.net/topic/2313/skript-absolute-feuchte-berechnen/510?_=1653746612215Im 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
dewpointmal 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 mitvar DP = require('dewpoint'); // Das Modul dewpoint einlesengeladen und über
DPpervar 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
-
Ich habe gerade das Skript hier entdeckt - und erfolgreich eingebunden:
https://forum.iobroker.net/topic/2313/skript-absolute-feuchte-berechnen/510?_=1653746612215Im 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
dewpointmal 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 mitvar DP = require('dewpoint'); // Das Modul dewpoint einlesengeladen und über
DPpervar 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
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.
-
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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden