NEWS
Verbindung über ioBroker.ws
-
Hi... ich versuche gerade den Status eines Objektes über den ws Adapter zubekommen. Das habe ich bis jetzt gemacht:
const connOptions = { connLink: 'ws://192.168.0.50:8089' }; let socket; function initializeSocket() { socket = new WebSocket(`${connOptions.connLink}/?sid=${Math.random().toString(36).substr(2, 10)}`); socket.addEventListener('open', () => { console.log('Verbindung zum ioBroker WebSocket-Adapter hergestellt.'); }); socket.addEventListener('message', (event) => { try { const data = JSON.parse(event.data); console.log('Nachricht vom ioBroker empfangen:', data); handleIoBrokerMessage(data); } catch (e) { console.error('Fehler beim Verarbeiten der Nachricht:', e); } }); socket.addEventListener('close', (event) => { console.warn('Verbindung zum ioBroker WebSocket-Adapter geschlossen:', event); setTimeout(() => initializeSocket(), 5000); }); } function sendMessageToIoBroker(message) { if (socket.readyState === WebSocket.OPEN) { socket.send(JSON.stringify(message)); console.log('Nachricht an ioBroker gesendet:', message); } else { console.warn('WebSocket-Verbindung ist nicht offen.'); } } function handleIoBrokerMessage(data) { // Prüfung auf spezifische Nachrichten if (Array.isArray(data) && data[0] === 0) { switch (data[1]) { case 1: console.log('ioBroker ist bereit.'); const stateId = 'alias.0.Wohnzimmer.Durchlüftung.TIMER'; subscribeToState(stateId); getCurrentState(stateId); break; case 'stateChange': console.log(`Zustand von ${data[2]} aktualisiert:`, data[3]); break; case 'getState': // Rückgabe des aktuellen Zustands console.log(`Aktueller Zustand von ${data[2]}:`, data[3]); break; default: console.log('Unbekannte Nachricht:', data); } } else { console.log('Andere Nachricht:', data); } } function subscribeToState(stateId) { const subscribeMessage = [0, 'subscribe', stateId]; sendMessageToIoBroker(subscribeMessage); console.log(`Subscribed to state: ${stateId}`); } function getCurrentState(stateId) { const getStateMessage = [0, 'getState', stateId]; sendMessageToIoBroker(getStateMessage); console.log(`Requesting current state of: ${stateId}`); } initializeSocket();Der verbindet sich, aber ich bekomme keine Werte. Irgendwas mache ich falsch und mit der Dokumentation komme ich auch nicht weiter. Hat jemand eine Idee? Das kommt in der Console:
Verbindung zum ioBroker WebSocket-Adapter hergestellt. iobroker.js:16 Nachricht vom ioBroker empfangen: (3) [0, 1, '___ready___'] iobroker.js:44 ioBroker ist bereit. iobroker.js:33 Nachricht an ioBroker gesendet: (3) [0, 'subscribe', 'alias.0.Wohnzimmer.Durchlüftung.TIMER'] iobroker.js:66 Subscribed to state: alias.0.Wohnzimmer.Durchlüftung.TIMER iobroker.js:33 Nachricht an ioBroker gesendet: (3) [0, 'getState', 'alias.0.Wohnzimmer.Durchlüftung.TIMER'] iobroker.js:72 Requesting current state of: alias.0.Wohnzimmer.Durchlüftung.TIMER iobroker.js:16 Nachricht vom ioBroker empfangen: [1] iobroker.js:59 Andere Nachricht: [1] iobroker.js:16 Nachricht vom ioBroker empfangen: [1] iobroker.js:59 Andere Nachricht: [1] iobroker.js:16 Nachricht vom ioBroker empfangen: [1] iobroker.js:59 Andere Nachricht: [1] iobroker.js:24 Verbindung zum ioBroker WebSocket-Adapter geschlossen: CloseEvent {isTrusted: true, wasClean: true, code: 1005, reason: '', type: 'close', …} (anonym) @ iobroker.js:24 iobroker.js:10 Verbindung zum ioBroker WebSocket-Adapter hergestellt. iobroker.js:16 Nachricht vom ioBroker empfangen: (3) [0, 1, '___ready___'] iobroker.js:44 ioBroker ist bereit. iobroker.js:33 Nachricht an ioBroker gesendet: (3) [0, 'subscribe', 'alias.0.Wohnzimmer.Durchlüftung.TIMER'] iobroker.js:66 Subscribed to state: alias.0.Wohnzimmer.Durchlüftung.TIMER iobroker.js:33 Nachricht an ioBroker gesendet: (3) [0, 'getState', 'alias.0.Wohnzimmer.Durchlüftung.TIMER'] iobroker.js:72 Requesting current state of: alias.0.Wohnzimmer.Durchlüftung.TIMER iobroker.js:16 Nachricht vom ioBroker empfangen: [1] iobroker.js:59 Andere Nachricht: [1] iobroker.js:16 Nachricht vom ioBroker empfangen: [1] iobroker.js:59 Andere Nachricht: [1] iobroker.js:16 Nachricht vom ioBroker empfangen: [1] iobroker.js:59 Andere Nachricht: [1] iobroker.js:24 Verbindung zum ioBroker WebSocket-Adapter geschlossen: CloseEvent {isTrusted: true, wasClean: true, code: 1005, reason: '', type: 'close', …}
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