Hallo,
ist es irgendwie möglich dei Temperatur der Hue Bewegungssensoren aus zu lesen?
in den Standardwerten ist diese ja nicht zu finden.
Ich habe bereit irgendwelche skripte gefunden die man wohl einbinden kann.
Leider bin ich am einbinden dieses Skriptes gescheitert. (ich habe diesen mal unten aufgeführt)
gibt es irgendeine Anleitung dazu? (Habe bisher lediglich 433Mhz Steckdosen, Hue Lampen und Sonos soweit eingebunden)
Ich scheitere bereits am einbinden der hue-api.
im terminal habe ich bereits folgendes versucht:
npm install node-hue-api
Ergebniss:
authenticate-pam@1.0.2 install /opt/iobroker/node_modules/authenticate-pam
node-gyp rebuild
make: Verzeichnis „/opt/iobroker/node_modules/authenticate-pam/build“ wird betreten
CXX(target) Release/obj.target/authenticate_pam/authenticate_pam.o
../authenticate_pam.cc:30:31: fatal error: security/pam_appl.h: Datei oder Verzeichnis nicht gefunden
#include <security pam_appl.h="">….......................................................
var hue = require('node-hue-api');
var HueApi = hue.HueApi;
var api;
var request = require('request');
var presenceID=0;
var laststatechanged='';
var bridge='192.168.254.64';
var user='kUjUG9UYpRTf14fg8Q9Pw5M6lRYoxDHy5Tt0XHfy';
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
}
}
````</security>