NEWS
HUE Adapter und Bewegunsmelder
-
Guten Tag Gemeinde,
wieso ist der Bewegungsmelder nicht in der Objekt Liste aufzufinden, jemand eine Idee ?
Hue Adapter Version : 0.6.9
Grüße!
-
weil die hue diese nicht zur verfügung stellt genau so wie die Schalter..
-
Aber über ein Skript kann man den auslesen und anzeigen…
Wenn ich heute abend daran denke, kann ich ja mal das hier anhängen.
Gruß,
Moses123
-
So,
anbei nun das Skript. Es muss die Ip der Bridge und der User ergänzt werden (kann man aus dem Hue- Adapter übernehmen).
Als zusätzliche NPM- Module wird node-hue-api,http,https benötigt.
Gruß,7
Moses123
! ````
var hue = require('node-hue-api');
var HueApi = hue.HueApi;
var api;
! var request = require('request');
! var presenceID=0;
var laststatechanged='';
! var bridge='IPDerHueBridge';
var user='DereigeneHueUser';
var port=80;
! var displayResult = function(result) {
console.log(JSON.stringify(result, null, 2));
};
! api = new HueApi(bridge, user, 0, port);
! createHueSensors();
schedule("0 */6 * * ", createHueSensors);
schedule("/30 * * * ", readAllHueSensors);
! //schedule("/5 * * * *", readPresenseHueSensor);
! function createHueSensors() {
api.sensors(function(err, config) {
if (err) throw err;
var sensors = config.sensors;
console.log('sensors create');
for (var sid in sensors) {
var sensor = sensors[sid];
if (sensor.type=='Daylight' || sensor.type=='ZLLTemperature' || sensor.type=='ZLLPresence' || sensor.type=='ZLLLightLevel') {
var sensorName = sensor.name.replace(/\s/g, '');
if (getState('hueSensors.'+sensorName).notExist===true) {
console.log('hueSensors.'+sensorName +' wird erstellt.')
createState('hueSensors.'+sensorName, sensorName, true, {
read: true,
write: true,
name: sensorName,
type: "string",
role: "channel",
def: false
});
if (sensor.type=='Daylight') {
createState('hueSensors.'+sensorName+'.daylight', sensor.state.daylight, true, {
read: true,
write: true,
name: "daylight",
type: "boolean",
role: "state",
def: false
});
createState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated, true, {
read: true,
write: true,
name: "lastupdated",
type: "string",
role: "date",
def: false
});
//Config
createState('hueSensors.'+sensorName+'.on', sensor.config.on, true, {
read: true,
write: true,
name: "on",
type: "boolean",
role: "config",
def: false
});
createState('hueSensors.'+sensorName+'.configured', sensor.config.configured, true, {
read: true,
write: true,
name: "configured",
type: "boolean",
role: "config",
def: false
});
createState('hueSensors.'+sensorName+'.sunriseoffset', sensor.config.sunriseoffset, true, {
read: true,
write: true,
name: "sunriseoffset",
type: "number",
role: "config",
def: 0
});
createState('hueSensors.'+sensorName+'.sunsetoffset', sensor.config.sunsetoffset, true, {
read: true,
write: true,
name: "sunsetoffset",
type: "number",
role: "config",
def: 0
});} if (sensor.type=='ZLLPresence') { // Bewegungsmelder /* Diese Eigenschaften werden nicht ausgelesen: "alert": "none","usertest": false,"sensitivitymax": 2,"pending": []*/ presenceID=sensor.id; createState('hueSensors.'+sensorName+'.presence', sensor.state.presence, true, { read: true, write: true, name: "presence", type: "boolean", role: "state", def: false }); createState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated, true, { read: true, write: true, name: "lastupdated", type: "string", role: "date", def: '' }); // Config createState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable, true, { read: true, write: true, name: "reachable", type: "boolean", role: "config", def: false }); createState('hueSensors.'+sensorName+'.ledindication', sensor.config.ledindication, true, { read: true, write: true, name: "ledindication", type: "boolean", role: "config", def: false }); createState('hueSensors.'+sensorName+'.battery', sensor.config.battery, true, { read: true, write: true, name: "battery", type: "number", role: "value.battery", def: 0 }); createState('hueSensors.'+sensorName+'.sensitivity', sensor.config.sensitivity, true, { read: true, write: true, name: "sensitivity", type: "number", role: "config", def: 0 }); } if (sensor.type=='ZLLLightLevel') { // Helligkeitssensor /* Diese Eigenschaften werden nicht ausgelesen: "alert": "none","usertest": false,"sensitivitymax": 2,"pending": []*/ createState('hueSensors.'+sensorName+'.lightlevel', sensor.state.lightlevel, true, { read: true, write: true, name: "lightlevel", type: "number", role: "config", def: 0 }); createState('hueSensors.'+sensorName+'.dark', sensor.state.dark, true, { read: true, write: true, name: "dark", type: "boolean", role: "state", def: false }); createState('hueSensors.'+sensorName+'.daylight', sensor.state.daylight, true, { read: true, write: true, name: "daylight", type: "boolean", role: "state", def: false }); createState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated, true, { read: true, write: true, name: "lastupdated", type: "string", role: "date", def: '' }); // Config createState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable, true, { read: true, write: true, name: "reachable", type: "boolean", role: "config", def: false }); createState('hueSensors.'+sensorName+'.ledindication', sensor.config.ledindication, true, { read: true, write: true, name: "ledindication", type: "boolean", role: "config", def: false }); createState('hueSensors.'+sensorName+'.battery', sensor.config.battery, true, { read: true, write: true, name: "battery", type: "number", role: "value.battery", def: 0 }); createState('hueSensors.'+sensorName+'.tholdoffset', sensor.config.tholdoffset, true, { read: true, write: true, name: "tholdoffset", type: "number", role: "config", def: 0 }); createState('hueSensors.'+sensorName+'.tholddark', sensor.config.tholddark, true, { read: true, write: true, name: "tholddark", type: "number", role: "config", def: 0 }); } if (sensor.type=='ZLLTemperature') { // Temepratursensor /* Diese Eigenschaften werden nicht ausgelesen: "alert": "none","usertest": false,"sensitivitymax": 2,"pending": []*/ createState('hueSensors.'+sensorName+'.temperature', Math.round(sensor.state.temperature / 10) / 10, true, { read: true, write: true, name: "temperature", type: "number", role: "value.temperature", "smartName": {"de": "Temperatur"} }); createState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated, true, { read: true, write: true, name: "lastupdated", type: "string", role: "date", def: '' }); // Config createState('hueSensors.'+sensorName+'.on', sensor.config.on, true, { read: true, write: true, name: "on", type: "boolean", role: "config", def: false }); createState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable, true, { read: true, write: true, name: "reachable", type: "boolean", role: "config", def: false }); createState('hueSensors.'+sensorName+'.ledindication', sensor.config.ledindication, true, { read: true, write: true, name: "ledindication", type: "boolean", role: "config", def: false }); createState('hueSensors.'+sensorName+'.battery', sensor.config.battery, true, { read: true, write: true, name: "battery", type: "number", role: "battery", def: 0 }); } } } } });
}
! function readAllHueSensors() {
console.log('sensors refresh');
api.sensors(function(err, config) {
if (err) throw err;
var sensors = config.sensors;
for (var sid in sensors) {
var sensor = sensors[sid];
if (sensor.type=='Daylight' || sensor.type=='ZLLSwitch' || sensor.type=='ZLLTemperature' || sensor.type=='ZLLPresence' || sensor.type=='ZLLLightLevel') {
var sensorName = sensor.name.replace(/\s/g, '');
console.log(sensorName)
if (sensor.type=='Daylight') {
setState('hueSensors.'+sensorName+'.daylight', sensor.state.daylight);
setState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated);
setState('hueSensors.'+sensorName+'.on', sensor.config.on);
setState('hueSensors.'+sensorName+'.configured', sensor.config.configured);
setState('hueSensors.'+sensorName+'.sunriseoffset', parseFloat(sensor.config.sunriseoffset));
setState('hueSensors.'+sensorName+'.sunsetoffset',parseFloat(sensor.config.sunsetoffsett));
}if (sensor.type=='ZLLPresence') { // Bewegungsmelder /* Diese Eigenschaften werden nicht ausgelesen: "alert": "none","usertest": false,"sensitivitymax": 2,"pending": []*/ setState('hueSensors.'+sensorName+'.presence', sensor.state.presence); setState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated); setState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable); setState('hueSensors.'+sensorName+'.ledindication', sensor.config.ledindication); setState('hueSensors.'+sensorName+'.battery', parseFloat(sensor.config.battery)); setState('hueSensors.'+sensorName+'.sensitivity', sensor.config.sensitivity); } if (sensor.type=='ZLLLightLevel') { // Helligkeitssensor /* Diese Eigenschaften werden nicht ausgelesen: "alert": "none","usertest": false,"sensitivitymax": 2,"pending": []*/ setState('hueSensors.'+sensorName+'.lightlevel', parseFloat(sensor.state.lightlevel)); setState('hueSensors.'+sensorName+'.dark', sensor.state.dark); setState('hueSensors.'+sensorName+'.daylight', sensor.state.daylight); setState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated); setState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable); setState('hueSensors.'+sensorName+'.ledindication', sensor.config.ledindication); setState('hueSensors.'+sensorName+'.battery', parseFloat(sensor.config.battery)); setState('hueSensors.'+sensorName+'.tholdoffset', parseFloat(sensor.config.tholdoffset)); setState('hueSensors.'+sensorName+'.tholddark', sensor.config.tholddark); } if (sensor.type=='ZLLTemperature') { // Temepratursensor /* Diese Eigenschaften werden nicht ausgelesen: "alert": "none","usertest": false,"sensitivitymax": 2,"pending": []*/ createState('hueSensors.'+sensorName+'.temperature', parseFloat(Math.round(sensor.state.temperature / 10) / 10)); setState('hueSensors.'+sensorName+'.lastupdated', sensor.state.lastupdated); setState('hueSensors.'+sensorName+'.on', sensor.config.on); setState('hueSensors.'+sensorName+'.reachable', sensor.config.reachable); setState('hueSensors.'+sensorName+'.ledindication', sensor.config.ledindication); setState('hueSensors.'+sensorName+'.battery', parseFloat(sensor.config.battery)); } } } });
}
! function readPresenseHueSensor() {
console.log('sensors presence');
if (presenceID!==0) {
var link = 'http://'+bridge+'/api/'+user+'/sensors/'+presenceID;
request(link, function (error, response, body) {
if (!error && response.statusCode == 200) {
var result;
try{
result = JSON.parse(body);
} catch (e) {
console.log('Parse Fehler (Roofi Modul):' + e);
}
if (result) {
var sensorName = result.name.replace(/\s/g, '');
if (result.state.lastupdated!=laststatechanged) {
setState('hueSensors.'+sensorName+'.presence', result.state.presence);
setState('hueSensors.'+sensorName+'.lastupdated', result.state.lastupdated);
console.log('State changed');
laststatechanged=result.state.lastupdated;
}
}
} else console.log('Fehler (Hue Sensordaten Abfrage: ' + error);
}); // Ende request
}
} -
anbei nun das Skript. `
Du berücksichtigst bereits in readAllHueSensors() den Typ ZLLSwitch ohne allerdings die Struktur dafür aufzubauen und zu füllen. Gibt es eine Chance, dass der HUE-Dimmer bei Gelegenheit unterstützt wird?
Hieraus (https://github.com/ebaauw/homebridge-hue/wiki/Services) lese ich heraus, dass die HUE-Bridge wohl einen Daylight Sensor hat. Wenn das so ist: Wie kann man den eventuell auch abfragen?
Danke für das Script.
-
…lese ich heraus, dass die HUE-Bridge wohl einen Daylight Sensor hat. Wenn das so ist: Wie kann man den eventuell auch abfragen? `
Um mir selbst zu antworten: Es ist wohl nur ein "virtueller" Sensor, sagen die Kollegen hier: https://forum.fhem.de/index.php?topic=48462.0So kann meine HUE-Bridge weiterhin im dunklen Schrank bleiben …
-
Hallo,
den Switch habe ich nicht weiter berücksichtigt, weil der für meine Zwecke nicht von nutzen war.
Abgesehen davon ist genau wie beim Bewegungsmelder hier nur pollen möglich, man bekommt keine direkte Rückmeldung, ob eine Taste gedrückt wurde, oder ob Bewegung erkannt wurde. Auch deswegen ist der Switch nicht im Skript weiter berücksichtigt.
Für mich war die Temperatur vom Bewegungsmelder interessant, der Rest ist eigentlich nur Beiwerk
-
nur pollen möglich, man bekommt keine direkte Rückmeldung, ob eine Taste gedrückt wurde `
Seit kurzem sind ja durch eine Update auch die HUE accessories (motion sensor, dimmer) HomeKit-fähig. Damit sollte es über kurz oder lang auch im ioBroker möglich sein, z.B. mit den Dimmer-Tasten Nicht-HUE-Devices schalten zu können… -
Hallo zusammen, ich bin neu bei ioBroker und hab unter anderem das Hue Skript eingebaut wegen der Temperatur.
Nun soweit läuft es eigentlich auch allerdings schreibt er bei mir die Stats iwie nur einmal und dann nicht mehr.
auch der SQL adapter nimmt keine stat änderung wahr und zeichne t demnach auch nichts auf.
Im Log wird leider auch keine fehler angezeigt immer nur schön die Sensor Namen.
Was mach ich falsch -HILFEEE
-
Hallo zusammen, ich bin neu bei ioBroker und hab unter anderem das Hue Skript eingebaut wegen der Temperatur.
Nun soweit läuft es eigentlich auch allerdings schreibt er bei mir die Stats iwie nur einmal und dann nicht mehr.
auch der SQL adapter nimmt keine stat änderung wahr und zeichne t demnach auch nichts auf.
Im Log wird leider auch keine fehler angezeigt immer nur schön die Sensor Namen.
Was mach ich falsch -HILFEEE `
Ändere den Schedule auf diese Weise
schedule("*/59 * * * *", createHueSensors); // alle 59 Minnuten
schedule("*/10 * * * * *", readAllHueSensors); // alle 10 Sekunden