NEWS
Benötige Hilfe (mgtt/JSON/REST/VIS)
-
Hallo allerseits!
seit über einer Woche widme ich mich dem Thema Smarthome, insbesondere dem ioBroker. Alles was ich über Suchmaschinen gefunden und über YT-Videos gesehen habe, bringt mich derzeit nicht weiter. Ich benötige von Euch ein paar Hinweise und Denkanstöße. Zum Angfang wollte ich folgendes umsetzen:
- Zugriff auf LED-Controller über einen ESP8266 mit dem Projekt Milight-Hub (mgtt ist aktiviert und es purzeln auch Werte in den Adapter rein)
- Da mehrere Werte im JSON-Format ankommen, kann man diese nicht direkt mit einem z.B. Bulb-Widget verknüpfen. Laut Suche muss man mit Script die benötigten Werte in separate Variablen des Javascript-Adapters schreiben. Also folgenden Script geschrieben
on({id: /mqtt\.0\.milight\.states\..*cct/, change: "any"}, function (obj) { ParseCommand(obj); }); function ParseCommand(obj) { let value = obj.state.val; let state = ""; let brightness = 0; let idState = obj.id.replace("mqtt.0.", "") + ".state"; let idBrightness = obj.id.replace("mqtt.0.", "") + ".brightness"; createState(idState, "OFF"); createState(idBrightness, 0); try { obj = JSON.parse(value); state = obj.state; brightness = obj.brightness; setState(idState, state); setState(idBrightness, brightness); } catch (e) { return; } }Die Variablen werden angelegt und die Werte für On/Off und Brightness reingeschrieben.
- Jetzt konnte ich die beiden Werte auf zwei Widgets aufteilen (Bulb und so ein Wertebereichs-Balken)
- Wenn ich aber jetzt über VIS schalten möchte weiss ich nicht wie, da die Steuerung scheinbar über eine REST-API funktioniert. Über ein REST-Browser Plugin kann ich die entsprechenden Commands senden und die LEDs entsprechend steuern. Wie kann ich diese REST-API Commands beim Klick auf die Widgets ausführen? Hier komme ich nicht weiter.
Es wäre schön, wenn mir jemand von Euch einen Tipp geben könnte. Vielleicht hat ja sogar einer einen Milight-Hub im Einsatz und kann mir seine Erfahrungen mitteilen.
Mit freundlichen Grüßen
Jens -
Hallo allerseits!
seit über einer Woche widme ich mich dem Thema Smarthome, insbesondere dem ioBroker. Alles was ich über Suchmaschinen gefunden und über YT-Videos gesehen habe, bringt mich derzeit nicht weiter. Ich benötige von Euch ein paar Hinweise und Denkanstöße. Zum Angfang wollte ich folgendes umsetzen:
- Zugriff auf LED-Controller über einen ESP8266 mit dem Projekt Milight-Hub (mgtt ist aktiviert und es purzeln auch Werte in den Adapter rein)
- Da mehrere Werte im JSON-Format ankommen, kann man diese nicht direkt mit einem z.B. Bulb-Widget verknüpfen. Laut Suche muss man mit Script die benötigten Werte in separate Variablen des Javascript-Adapters schreiben. Also folgenden Script geschrieben
on({id: /mqtt\.0\.milight\.states\..*cct/, change: "any"}, function (obj) { ParseCommand(obj); }); function ParseCommand(obj) { let value = obj.state.val; let state = ""; let brightness = 0; let idState = obj.id.replace("mqtt.0.", "") + ".state"; let idBrightness = obj.id.replace("mqtt.0.", "") + ".brightness"; createState(idState, "OFF"); createState(idBrightness, 0); try { obj = JSON.parse(value); state = obj.state; brightness = obj.brightness; setState(idState, state); setState(idBrightness, brightness); } catch (e) { return; } }Die Variablen werden angelegt und die Werte für On/Off und Brightness reingeschrieben.
- Jetzt konnte ich die beiden Werte auf zwei Widgets aufteilen (Bulb und so ein Wertebereichs-Balken)
- Wenn ich aber jetzt über VIS schalten möchte weiss ich nicht wie, da die Steuerung scheinbar über eine REST-API funktioniert. Über ein REST-Browser Plugin kann ich die entsprechenden Commands senden und die LEDs entsprechend steuern. Wie kann ich diese REST-API Commands beim Klick auf die Widgets ausführen? Hier komme ich nicht weiter.
Es wäre schön, wenn mir jemand von Euch einen Tipp geben könnte. Vielleicht hat ja sogar einer einen Milight-Hub im Einsatz und kann mir seine Erfahrungen mitteilen.
Mit freundlichen Grüßen
Jens@Cavelord du kannst die API per Request ansprechen. Nachfolgend ein kleines Beispiel (ungetestet, bitte vorher im JS Adapter 'request' als zusätzliches NPM Modul hinzufügen, wenn noch nicht geschehen), du musst aber in der URL noch deine Werte eintragen:
const request = require('request'); const options = { url: 'http://<milight-hub>/gateways/{device-id}/{remote-type}/{group-id}', body: { 'state': 'On', 'status': 'On', 'hue': 0, 'saturation': 0, 'kelvin': 0, 'temperature': 0, 'color_temp': 153, 'mode': 0, 'color': '255,0,255', 'level': 50, 'brightness': 170, 'effect': 'night_mode', 'transition': 2, 'command': 'pair', 'commands': [ 'level_up', 'temperature_up' ] } }; request(options, (error, response, body) => { if(error) { log(error, 'error'); } else { log('Success'); } }); -
@Cavelord du kannst die API per Request ansprechen. Nachfolgend ein kleines Beispiel (ungetestet, bitte vorher im JS Adapter 'request' als zusätzliches NPM Modul hinzufügen, wenn noch nicht geschehen), du musst aber in der URL noch deine Werte eintragen:
const request = require('request'); const options = { url: 'http://<milight-hub>/gateways/{device-id}/{remote-type}/{group-id}', body: { 'state': 'On', 'status': 'On', 'hue': 0, 'saturation': 0, 'kelvin': 0, 'temperature': 0, 'color_temp': 153, 'mode': 0, 'color': '255,0,255', 'level': 50, 'brightness': 170, 'effect': 'night_mode', 'transition': 2, 'command': 'pair', 'commands': [ 'level_up', 'temperature_up' ] } }; request(options, (error, response, body) => { if(error) { log(error, 'error'); } else { log('Success'); } });@J-A-R-V-I-S sagte:
vorher im JS Adapter 'request' als zusätzliches NPM Modul hinzufügen,
Das ist nicht nötig, da das Modul "request" bereits im JS-Adapter enthalten ist und request als Variable zur Verfügung steht, d.h. es ist auch kein require('request') erforderlich.
-
Hallo und danke für eure Mühen, aber wie löse ich jetzt diesen Request aus? Kann ich dem Widget eine "onclick"-Anweisung zum Ausführen dieser Request-Function mitgeben, oder muss ich im Javascript so eine "On{id: die im Widget verknüpt ist}" erstellen, um den Request zu zünden? Wenn ich auf das Widget (Lampe) klicke, dann wird ja der Wert der verknüpften ID geändert und das Lampensymbol geht in der VIS entsprechend an oder aus. Dies irritiert mich aber, das ja das Kommando (Request) zum Umschalten ja noch gar nicht raus ist, geschweige ein geänderter Wert vom Adapter zurück kam.
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