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
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 mitvar DP = require('dewpoint'); // Das Modul dewpoint einlesen
geladen und über
DP
pervar 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.
-
@oliverio danke, hat funktioniert.
jetzt muss ich mal schauen wie ich das Modul dewpoint wieder los werden welches ich nachinstalliert hatte