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.