Weiter zum Inhalt
  • Home
  • Aktuell
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Tester
  4. ...nicht in offiziellem Repo
  5. Test Adapter pjlink-class2 v0.1.x GitHub

NEWS

  • Mitmachen: Sprich „ioBroker“ ein – für ein lokales Aktivierungswort
    BluefoxB
    Bluefox
    0
    1
    45

  • Neuer Blogbeitrag: KI in ioBroker, vom Helfer im Admin bis zum eigenen Smart Assistant
    BluefoxB
    Bluefox
    4
    1
    132

  • Neues Video: Der KI-Assistent im ioBroker Admin
    BluefoxB
    Bluefox
    7
    1
    194

Test Adapter pjlink-class2 v0.1.x GitHub

Geplant Angeheftet Gesperrt Verschoben ...nicht in offiziellem Repo
1 Beiträge 1 Kommentatoren 48 Aufrufe 1 Beobachtet
  • Ä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.
  • A
    A
    AlanSRU
    schrieb am zuletzt editiert von
    #1
    Aktuelle Test Version 0.1.2
    Veröffentlichungsdatum 25.09.2026
    Github Link https://github.com/AlanSRU/ioBroker.pjlink-class2
    NPM Link https://www.npmjs.com/package/iobroker.pjlink-class2

    Hinweis zur KI-Beteiligung: Dieser Adapter wurde mit Unterstützung einer KI (Claude) entwickelt. Code, Tests und Dokumentation habe ich geprüft, und der Adapter wurde an echten Projektoren sowie mit dem offiziellen PJLink-Testprogramm getestet (Details unten).

    Hinweis zur Sprache: Ich bin kein deutscher Muttersprachler – dieser Text wurde mit Hilfe übersetzt. Bitte entschuldigt eventuelle Fehler oder holprige Formulierungen. Fragen und Rückmeldungen gerne auf Deutsch oder Englisch; weiter unten steht der Text auch auf Englisch.

    Hallo zusammen,

    ich stelle hier meinen neuen Adapter ioBroker.pjlink-class2 zum Testen vor. Er steuert Projektoren und Displays über PJLink Klasse 1 und Klasse 2 und ist als Alternative zum bestehenden pjlink-Adapter gedacht. Das PJLink-Protokoll ist vollständig im Adapter selbst umgesetzt – er ist nicht mehr von der alten npm-Bibliothek abhängig, auf der der pjlink-Adapter aufbaut.

    Warum ein neuer Adapter?

    Der bestehende pjlink-Adapter baut auf einer npm-Bibliothek auf, die nur PJLink Klasse 1 unterstützt und kaum noch gepflegt wird. Bei uns ist er außerdem gelegentlich mit einem nicht abgefangenen ECONNRESET abgestürzt, wenn ein Projektor beim Ein- oder Ausschalten die Verbindung getrennt hat.

    pjlink-class2 ersetzt diese Bibliothek durch eine eigene Umsetzung und unterstützt zusätzlich die Funktionen von PJLink Klasse 2.

    Was macht der Adapter?

    • Eigene PJLink-Implementierung: Verbindung, Anmeldung, alle Befehle, UDP-Suche und Statusmeldungen sind direkt im Adapter programmiert. Es gibt keine Abhängigkeit von einer PJLink-Bibliothek; die einzige Laufzeit-Abhängigkeit ist @iobroker/adapter-core.
    • Eine Instanz steuert beliebig viele Projektoren, jeder in einem eigenen Geräteordner (pjlink-class2.0.<name>...).
    • Automatische Erkennung der PJLink-Klasse (CLSS ?). Klasse-2-Datenpunkte werden nur bei Klasse-2-Geräten angelegt.
    • Kurze TCP-Sitzungen: Für jede Abfrage bzw. jeden Befehl wird verbunden, gesendet und wieder getrennt. Der Projektor bleibt so für andere Steuerungen (z. B. Crestron, Extron) erreichbar.
    • Authentifizierung mit MD5 (ältere Geräte) und SHA-256 (neuere Geräte und das offizielle Testprogramm). Der Adapter erkennt selbst, welches Verfahren ein Gerät erwartet.
    • Klasse 2 über UDP 4352: Statusmeldungen (Ein/Aus, Eingang, Fehlerstatus, Netzwerk verbunden) werden sofort übernommen, und über die Suche in der Instanzkonfiguration werden Klasse-2-Projektoren im eigenen Netz gefunden.
    • Abgelehnte Befehle werden sichtbar: Meldet der Projektor z. B. ERR3 (während Aufwärmen oder Abkühlen nicht möglich), steht das in info.lastError, statt stillschweigend ignoriert zu werden.
    Funktion Klasse 1 Klasse 2
    Ein/Aus, Leistungsstatus (Aus/Ein/Abkühlen/Aufwärmen) ✔ ✔
    Eingang wählen (Klasse 2 auch alphanumerische Codes, z. B. 3A) ✔ ✔
    Bild- und Tonstummschaltung ✔ ✔
    Fehlerstatus (Lüfter, Lampe, Temperatur, Abdeckung, Filter, Sonstiges) ✔ ✔
    Lampenstunden (mehrere Lampen) ✔ ✔
    Name, Hersteller, Modell ✔ ✔
    Standbild (Freeze), Lautsprecher- und Mikrofonlautstärke – ✔
    Seriennummer, Softwareversion, Eingangsnamen – ✔
    Eingangs- und empfohlene Auflösung, Filterstunden, Ersatzlampe/-filter – ✔
    Statusmeldungen per UDP, Suche – ✔

    Voraussetzungen

    • Node.js 22 oder neuer, js-controller 6.0.11 oder neuer, Admin 7.6.20 oder neuer
    • PJLink muss am Projektor aktiviert sein (bei vielen Geräten unter Netzwerk-Einstellungen), TCP-Port 4352 muss vom ioBroker-Host erreichbar sein
    • Für Klasse-2-Statusmeldungen und die Suche: UDP-Port 4352 auf dem ioBroker-Host. Nur ein Programm pro Host kann diesen Port belegen – deshalb verwaltet eine Instanz alle Projektoren.

    Konfiguration

    • Projektoren: eine Zeile pro Gerät mit Name, IP-Adresse oder Hostname und Port (Standard 4352). Aus dem Namen wird der Ordner im Objektbaum.
    • PJLink-Passwort: gilt für alle Projektoren, die eine Anmeldung verlangen (verschlüsselt gespeichert).
    • Abfrageintervalle: Status (Standard 5 s) und Geräteinformationen wie Namen, Eingänge und Lampenstunden (Standard 300 s).
    • Suche: sendet eine Klasse-2-Suche als Broadcast und trägt gefundene Projektoren in die Tabelle ein. Klasse-1-Geräte antworten darauf nicht und müssen von Hand eingetragen werden; Broadcasts gehen nicht über Router hinweg.

    Installation

    Der Adapter ist noch nicht im Latest-Repository. Installation über Admin → Adapter → „Benutzerdefiniert installieren“ (GitHub-Symbol) → URL:
    https://github.com/AlanSRU/ioBroker.pjlink-class2

    Danach eine Instanz anlegen, die Projektoren eintragen und speichern.

    Bisher getestet

    • Klasse 1: drei NEC NP3250 im Standby – alle Abfragen (Leistung, Eingang, Stummschaltung, Fehlerstatus, Lampe, Eingänge, Name, Hersteller, Modell). Schaltbefehle habe ich an diesen Geräten bewusst nicht gesendet, da sie im laufenden Betrieb sind.
    • Klasse 2: mit dem offiziellen JBMIA-Testprogramm PJLinkTEST4CNT – Anmeldung (SHA-256), alle Abfragen, alle Befehle, Suche und alle vier Statusmeldungen.
    • Automatische Tests gegen einen Projektorsimulator (Klasse 1 und 2, mit und ohne Passwort) sowie Integrationstests unter Node.js 22, 24 und 26 auf Linux, Windows und macOS.

    Noch nicht getestet: ein echter Klasse-2-Projektor sowie ein echtes Gerät mit Passwort.

    Bekannte Punkte / Einschränkungen

    • Datenpunkte anders als beim pjlink-Adapter (Umstieg siehe unten); Skripte und Visualisierungen müssen angepasst werden.
    • Ein gemeinsames Passwort für alle Projektoren (pro Projektor noch nicht möglich).
    • Statusmeldungen schickt der Projektor an eine Steuerung – welche, hängt vom Gerät ab. Läuft eine zweite Steuerung (z. B. Crestron/Extron) parallel, kommen die Meldungen eventuell dort an. Die regelmäßige Abfrage läuft immer, die Werte bleiben also aktuell.
    • NEC NP3250: Ein Einschaltbefehl kurz nach dem Abkühlen wird vom Projektor angenommen, aber ignoriert. Der Adapter hält control.power bis zu 30 s auf dem gewünschten Wert und meldet danach in info.lastError, dass sich nichts geändert hat.

    Umstieg vom pjlink-Adapter

    pjlink.0.… pjlink-class2.0.<projektor>.…
    power control.power
    powerStatus (0/1/2/3) status.power (gleiche Werte)
    input (Zahl) control.input (Text, z. B. "31")
    info.connection info.connection (pro Projektor; die Instanz meldet „mindestens einer erreichbar“)

    Wie ihr helfen könnt

    • Besonders gesucht: Tester mit echten Klasse-2-Projektoren (Epson, Panasonic, Sony, NEC u. a.) und mit Projektoren mit gesetztem PJLink-Passwort
    • Bitte angeben: Hersteller und Modell, PJLink-Klasse (info.class), ob ein Passwort gesetzt ist
    • Bei Problemen: Log im Loglevel „debug“ und kurze Beschreibung, was ihr erwartet habt
    • Fehler gerne auch direkt als Issue: https://github.com/AlanSRU/ioBroker.pjlink-class2/issues

    Changelog 0.1.x

    • 0.1.2: Datenquelle als „Abfrage“ deklariert (Klasse-2-Meldungen ergänzen sie nur), unterstützte Nachrichten auf die aktuelle Art deklariert, veraltete API-Aufrufe ersetzt
    • 0.1.1: Die nächste Abfrage wird erst geplant, wenn die vorherige abgeschlossen ist – ein langsamer Projektor führt so nicht mehr zu überlappenden Abfragen; Mindestversionen in der README
    • 0.1.0: erste Version

    Vielen Dank fürs Testen!


    English

    Current test version 0.1.2
    Release date 25 Sep 2026
    GitHub https://github.com/AlanSRU/ioBroker.pjlink-class2
    npm https://www.npmjs.com/package/iobroker.pjlink-class2

    AI involvement: this adapter was developed with the help of an AI (Claude). I reviewed the code, tests and documentation, and it has been tested against real projectors and the official PJLink test tool (details below).

    Hi all,

    I'd like to introduce my new adapter ioBroker.pjlink-class2 for testing. It controls projectors and displays over PJLink Class 1 and Class 2 and is meant as an alternative to the existing pjlink adapter. The PJLink protocol is implemented entirely within the adapter itself — it no longer depends on the old npm library that the pjlink adapter is built on.

    Why a new adapter?

    The existing pjlink adapter is built on an npm library that supports only PJLink Class 1 and is barely maintained. In our installation it also occasionally crashed with an uncaught ECONNRESET when a projector dropped the connection during a power transition.

    pjlink-class2 replaces that library with its own implementation and adds the PJLink Class 2 features.

    What it does

    • Its own PJLink implementation: connection handling, authentication, every command, UDP search and status notifications are written directly in the adapter. There is no dependency on a PJLink library; the only runtime dependency is @iobroker/adapter-core.
    • One instance drives any number of projectors, each in its own device folder (pjlink-class2.0.<name>...).
    • Detects the PJLink class automatically (CLSS ?); Class 2 states are created only for Class 2 devices.
    • Short TCP sessions: each poll or command connects, sends and disconnects, so the projector stays available to other control systems (e.g. Crestron, Extron).
    • Authentication with MD5 (older devices) and SHA-256 (newer devices and the official test tool); the adapter works out which one a device expects.
    • Class 2 over UDP 4352: status notifications (power, input, error status, link up) are applied immediately, and the search in the instance settings finds Class 2 projectors on the local network.
    • Refused commands are visible: if the projector answers e.g. ERR3 (not possible while warming up or cooling down), it shows in info.lastError instead of being silently ignored.
    Feature Class 1 Class 2
    Power, power status (off/on/cooling/warming) ✔ ✔
    Input selection (Class 2 also alphanumeric codes, e.g. 3A) ✔ ✔
    Video and audio mute ✔ ✔
    Error status (fan, lamp, temperature, cover, filter, other) ✔ ✔
    Lamp hours (multiple lamps) ✔ ✔
    Name, manufacturer, model ✔ ✔
    Freeze, speaker and microphone volume – ✔
    Serial number, software version, input names – ✔
    Input and recommended resolution, filter hours, replacement lamp/filter – ✔
    UDP status notifications, search – ✔

    Requirements

    • Node.js 22 or newer, js-controller 6.0.11 or newer, Admin 7.6.20 or newer
    • PJLink enabled on the projector (usually in its network settings), TCP port 4352 reachable from the ioBroker host
    • For Class 2 notifications and search: UDP port 4352 on the ioBroker host. Only one program per host can use it, which is why one instance handles all projectors.

    Configuration

    • Projectors: one row per device with name, IP address or host name, and port (default 4352). The name becomes the folder in the object tree.
    • PJLink password: used for every projector that asks for one (stored encrypted).
    • Poll intervals: status (default 5 s) and device information such as names, inputs and lamp hours (default 300 s).
    • Search: broadcasts a Class 2 search and adds the projectors that reply to the table. Class 1 devices do not reply and must be added by hand; broadcasts do not cross routers.

    Installation

    The adapter is not in the latest repository yet. Install it via Admin → Adapters → "Custom install" (GitHub icon) → URL:
    https://github.com/AlanSRU/ioBroker.pjlink-class2

    Then create an instance, add your projectors and save.

    Tested so far

    • Class 1: three NEC NP3250 in standby — every query (power, input, mute, error status, lamp, inputs, name, manufacturer, model). I deliberately did not send switching commands to these, as they are in production use.
    • Class 2: the official JBMIA test tool PJLinkTEST4CNT — authentication (SHA-256), every query, every command, search and all four status notifications.
    • Automated tests against a projector simulator (Class 1 and 2, with and without a password), plus integration tests on Node.js 22, 24 and 26 on Linux, Windows and macOS.

    Not tested yet: a real Class 2 projector, and a real device with a password set.

    Known issues / limitations

    • States differ from the pjlink adapter (see migration below); scripts and visualisations need updating.
    • One shared password for all projectors (no per-projector password yet).
    • Status notifications go to one controller, and which one depends on the device. If a second control system (e.g. Crestron/Extron) is running, notifications may go there instead. Regular polling always runs, so the values stay current.
    • NEC NP3250: a power-on sent shortly after cooling down is accepted but ignored by the projector. The adapter holds control.power at the requested value for up to 30 s, then reports in info.lastError that nothing changed.

    Moving from the pjlink adapter

    pjlink.0.… pjlink-class2.0.<projector>.…
    power control.power
    powerStatus (0/1/2/3) status.power (same values)
    input (number) control.input (string, e.g. "31")
    info.connection info.connection (per projector; the instance one means "at least one reachable")

    How you can help

    • Especially wanted: testers with real Class 2 projectors (Epson, Panasonic, Sony, NEC and others) and with projectors that have a PJLink password set
    • Please include: manufacturer and model, PJLink class (info.class), whether a password is set
    • For problems: a log at level "debug" and a short description of what you expected
    • Issues are also welcome directly on GitHub: https://github.com/AlanSRU/ioBroker.pjlink-class2/issues

    Changelog 0.1.x

    • 0.1.2: data source declared as polling (Class 2 notifications only supplement it), supported messages declared the current way, deprecated API calls replaced
    • 0.1.1: the next poll is scheduled only when the previous one has finished, so a slow projector no longer causes overlapping polls; minimum versions in the README
    • 0.1.0: initial release

    Thanks for testing!

    1 Antwort Letzte Antwort
    0
    • mcm1957M mcm1957 verschob dieses Thema von Tester am

    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
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    511

    Online

    33.1k

    Benutzer

    84.1k

    Themen

    1.4m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2026
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe