npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

temperatur-rlf-vpd-messgeraet

v0.1.5

Published

Temperatur, RLF und VPD Messgeraet Anzeige

Downloads

1,380

Readme

Temperatur-RLF-VPD-Messgerät

Eine moderne, framework-unabhängige Web Component (<climate-instrument>) zur gleichzeitigen Anzeige von Temperatur, relativer Luftfeuchtigkeit (RLF) und VPD (Vapor Pressure Deficit).

Mit diesem Instrument lassen sich für alle drei Werte individuelle Minimum-, Maximum- sowie farbliche Zonen (Grün für Normal, Gelb für Warnungen, Rot für kritische Bereiche) definieren.

Neu: Das Instrument unterstützt nun drei Darstellungsmodi! Sie können zwischen der klassischen linearen Balken-Ansicht (line), der halbrunden Tacho-Ansicht (semicircle) und der neuen Drei-Anzeigen-Ansicht (threedisplay) wechseln. Außerdem lassen sich die Überschriften nun individuell anpassen und die Temperatur sowie der VPD-Wert werden präzise mit zwei Nachkommastellen dargestellt. Im threedisplay-Modus lassen sich zudem die beiden Viertelkreise unabhängig voneinander horizontal spiegeln.

Installation

Sobald das Paket veröffentlicht ist, kann es über npm installiert werden:

npm install temperatur-rlf-vpd-messgeraet

Verwendung in einfachem HTML / Vanilla JavaScript

  1. Binden Sie das Skript ein.
  2. Fügen Sie das Tag <climate-instrument></climate-instrument> in Ihr HTML ein. Nutzen Sie das Attribut mode, um das Aussehen zu ändern, und dashboard-title für eine eigene Überschrift.
  3. Übergeben Sie die Konfiguration (config) und die aktuellen Daten (data) per JavaScript.
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Climate Instrument Demo</title>
    <!-- Importieren der Web Component -->
    <script type="module">
        import 'temperatur-rlf-vpd-messgeraet';

        document.addEventListener('DOMContentLoaded', () => {
            const instrument = document.getElementById('my-gauge');

            // 1. Konfiguration der Skalen und farbigen Bereiche
            instrument.config = {
                temperature: {
                    min: 15, max: 35,
                    greenZone: { min: 22, max: 26 },
                    yellowZones: [{ min: 20, max: 22 }, { min: 26, max: 28 }],
                    redZones: [{ min: 15, max: 20 }, { min: 28, max: 35 }]
                },
                humidity: {
                    min: 30, max: 80,
                    greenZone: { min: 50, max: 65 },
                    yellowZones: [{ min: 40, max: 50 }, { min: 65, max: 70 }],
                    redZones: [{ min: 30, max: 40 }, { min: 70, max: 80 }]
                },
                vpd: {
                    min: 0.4, max: 1.6,
                    greenZone: { min: 0.8, max: 1.1 },
                    yellowZones: [{ min: 0.6, max: 0.8 }, { min: 1.1, max: 1.3 }],
                    redZones: [{ min: 0.4, max: 0.6 }, { min: 1.3, max: 1.6 }]
                }
            };

            // 2. Aktuelle Daten setzen
            instrument.data = {
                temperature: 24.52,
                humidity: 55,
                vpd: 1.05
            };

            // Beispiel für dynamische Updates:
            setTimeout(() => {
                instrument.data = { temperature: 27.15, humidity: 48, vpd: 1.25 };
            }, 3000);
            
            // Beispiel für das Setzen der Spiegelung via JavaScript
            // instrument.mirrorLeft = true;
            // instrument.mirrorRight = true;
        });
    </script>
</head>
<body style="background: #121212; padding: 50px; display: flex; justify-content: center;">

    <!-- Verwenden Sie mode="threedisplay" für die neue Drei-Anzeigen-Ansicht -->
    <!-- Verwenden Sie mode="semicircle" für die halbrunde Tacho-Anzeige -->
    <!-- Verwenden Sie mode="line" oder lassen Sie das Attribut weg für die klassische Balken-Anzeige -->
    <!-- Mit mirror-left="true" und mirror-right="false" können Sie die Instrumente im threedisplay-Modus spiegeln -->
    <climate-instrument id="my-gauge" mode="threedisplay" mirror-left="true" mirror-right="false" dashboard-title="Mein Gewächshaus Klima"></climate-instrument>

</body>
</html>

Verwendung in Angular

Da es sich um eine Standard Web Component handelt, lässt sich diese problemlos in Angular-Anwendungen integrieren.

1. CUSTOM_ELEMENTS_SCHEMA aktivieren

Öffnen Sie Ihr Angular-Modul (z. B. app.module.ts oder die entsprechende Standalone-Component-Datei) und fügen Sie das Schema hinzu, damit Angular das unbekannte Tag <climate-instrument> akzeptiert:

import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';

// WICHTIG: Die Web Component importieren, damit sie sich im Browser registriert
import 'temperatur-rlf-vpd-messgeraet';

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule],
  schemas: [CUSTOM_ELEMENTS_SCHEMA], // <-- Hier hinzufügen
  bootstrap: [AppComponent]
})
export class AppModule { }

2. In der Component (TypeScript) die Daten definieren

// app.component.ts
import { Component } from '@angular/core';
// Importieren Sie die Interfaces aus der Bibliothek für Type-Safety
import { ClimateInstrumentConfig, ClimateData } from 'temperatur-rlf-vpd-messgeraet';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html'
})
export class AppComponent {
  
  gaugeConfig: ClimateInstrumentConfig = {
      temperature: {
          min: 15, max: 35,
          greenZone: { min: 22, max: 26 },
          yellowZones: [{ min: 20, max: 22 }, { min: 26, max: 28 }],
          redZones: [{ min: 15, max: 20 }, { min: 28, max: 35 }]
      },
      humidity: { /* analog zu oben */ },
      vpd: { /* analog zu oben */ }
  };

  currentData: ClimateData = {
      temperature: 24.55,
      humidity: 55,
      vpd: 1.05
  };
}

3. Im Template (HTML) verwenden

Da config und data Properties der DOM-Node sind, verwenden Sie in Angular das Property-Binding ([prop]="value"). Die Attribute mode und dashboard-title setzen Sie als normale HTML-Attribute. Wenn Sie boolesche HTML-Attribute wie mirror-left direkt als String in Angular zuweisen (z.B. mirror-left=false), wertet das Instrument nun "false" explizit aus und deaktiviert die Spiegelung, wie man es erwartet:

<!-- app.component.html -->
<div class="dashboard">
  <!-- Setzen Sie hier mode="threedisplay", mode="semicircle" oder mode="line" -->
  <!-- Sie können mirror-left=false oder mirror-right=true auch direkt ohne eckige Klammern verwenden -->
  <climate-instrument 
    mode="threedisplay"
    mirror-left=false
    mirror-right=true
    dashboard-title="Klima Übersicht"
    [config]="gaugeConfig" 
    [data]="currentData">
  </climate-instrument>
</div>

Eigenschaften und Attribute

HTML-Attribute

  • mode ("line" | "semicircle" | "threedisplay"): Bestimmt das Erscheinungsbild der Komponente. Standard ist "line".
    • "line": Klassische vertikale Balken.
    • "semicircle": Kombinierter halbrunder Tacho für Temperatur und RLF.
    • "threedisplay": Zwei separate Halbkreise für Temperatur und RLF sowie ein linearer Balken für VPD.
  • dashboard-title (string): Bestimmt die angezeigte Überschrift über den Instrumenten. Standard ist "Klima Dashboard".
  • mirror-left (boolean / string): Spiegelt das linke Instrument (Temperatur) im "threedisplay"-Modus horizontal. Kann als <climate-instrument mirror-left="true"> oder einfach <climate-instrument mirror-left> verwendet werden. Der Wert "false" wird explizit als inaktiv interpretiert.
  • mirror-right (boolean / string): Spiegelt das rechte Instrument (Luftfeuchtigkeit) im "threedisplay"-Modus horizontal. Funktioniert identisch zu mirror-left.

Properties (JavaScript / Angular)

  • config (ClimateInstrumentConfig): Legt das Aussehen der Skalen fest (Min/Max sowie die grünen, gelben und roten Bereiche). In der "line"-Ansicht werden diese Farben direkt gezeichnet. In der "semicircle"- und "threedisplay"-Ansicht berechnet die Komponente anhand der Min/Max-Werte den Ausschlag der Zeiger.
  • data (ClimateData): Enthält die aktuellen numerischen Werte (temperature, humidity, vpd). Wird dieser Wert aktualisiert, animiert sich der Zeiger auf der Anzeige automatisch zur neuen Position. Temperatur und VPD werden mit zwei Nachkommastellen angezeigt, die Luftfeuchtigkeit als ganzer Wert (ohne Nachkommastellen).
  • mirrorLeft (boolean): Entspricht dem HTML-Attribut mirror-left.
  • mirrorRight (boolean): Entspricht dem HTML-Attribut mirror-right.

Lizenz

MIT