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', …}