(bluefox) working on write

This commit is contained in:
GermanBluefox
2018-03-11 02:07:56 +01:00
parent d586cb4088
commit 5f9f095a83
2 changed files with 35 additions and 20 deletions
+13 -1
View File
@@ -83,7 +83,7 @@ function HASS(options, log) {
socket.send(JSON.stringify({
id: id,
type: 'call_service',
domain: domain || 'light',
domain: domain || '',
service: service,
service_data: serviceData
}));
@@ -106,6 +106,18 @@ function HASS(options, log) {
//log.debug(msg);
var response = JSON.parse(msg);
if (response.type === 'event') {
if (response.event.data && response.event.event_type === 'system_log_event') {
if (response.event.data.level === 'WARNING') {
log.warn('EVENT: ' + response.event.data.message);
} else
if (response.event.data.level === 'ERROR') {
log.error('EVENT: ' + response.event.data.message);
} else {
log.debug('EVENT: ' + response.event.data.message);
}
}
} else
if (response.type === 'auth_required') {
if (!options.password) {
that.emit('error', 'Password required. Connection closed');
+22 -19
View File
@@ -35,14 +35,14 @@ adapter.on('stateChange', function (id, state) {
for (var field in fields) {
if (!fields.hasOwnProperty(field)) continue;
if (fields === 'entity_id') {
if (field === 'entity_id') {
serviceData.entity_id = hassObjects[id].native.entity_id
} else {
serviceData.entity_id = state.val;
serviceData[field] = state.val;
}
}
hass.callService(hassObjects[id].native.type, undefined, serviceData, function (err) {
hass.callService(hassObjects[id].native.attr, hassObjects[id].native.domain, serviceData, function (err) {
if (err) {
adapter.log.error('Cannot control ' + id + ': ' + err);
}
@@ -108,19 +108,14 @@ function syncObjects(objects, cb) {
var obj = objects.shift();
hassObjects[obj._id] = obj;
var start = Date.now();
adapter.getForeignObject(obj._id, function (err, oldObj) {
console.log('getForeignObject: ' + (Date.now() - start));
if (err) adapter.log.error(err);
if (!oldObj) {
adapter.log.debug('Create "' + obj._id + '"');
hassObjects[obj._id] = obj;
start = Date.now();
adapter.setForeignObject(obj._id, obj, function (err) {
console.log('setForeignObject: ' + (Date.now() - start));
if (err) adapter.log.error(err);
setImmediate(syncObjects, objects, cb);
@@ -131,9 +126,7 @@ function syncObjects(objects, cb) {
oldObj.native = obj.native;
adapter.log.debug('Update "' + obj._id + '"');
start = Date.now();
adapter.setForeignObject(obj._id, oldObj, function (err) {
console.log('ssetForeignObject: ' + (Date.now() - start));
if (err) adapter.log.error(err);
setImmediate(syncObjects, objects, cb);
});
@@ -550,7 +543,7 @@ function parseStates(entities, services, callback) {
var entity = entities[e];
if (!entity) continue;
var name = entity.attributes && entity.attributes.friendly_name ? entity.attributes.friendly_name : entity.entity_id;
var name = entity.name || (entity.attributes && entity.attributes.friendly_name ? entity.attributes.friendly_name : entity.entity_id);
var desc = entity.attributes && entity.attributes.attribution ? entity.attributes.attribution : undefined;
channel = {
@@ -560,6 +553,7 @@ function parseStates(entities, services, callback) {
},
type: 'channel',
native: {
object_id: entity.object_id,
entity_id: entity.entity_id
}
};
@@ -579,9 +573,14 @@ function parseStates(entities, services, callback) {
write: false
},
native: {
entity_id: entity.entity_id
object_id: entity.object_id,
domain: entity.domain,
entity_id: entity.entity_id
}
};
if (entity.attributes && entity.attributes.unit_of_measurement) {
obj.common.unit = entity.attributes.unit_of_measurement;
}
objs.push(obj);
states.push({id: obj._id, lc: lc, ts: ts, val: entity.state, ack: true})
}
@@ -603,8 +602,10 @@ function parseStates(entities, services, callback) {
type: 'state',
common: common,
native: {
entity_id: entity.entity_id,
attr: attr
object_id: entity.object_id,
domain: entity.domain,
entity_id: entity.entity_id,
attr: attr
}
};
if (!common.name) {
@@ -636,15 +637,17 @@ function parseStates(entities, services, callback) {
_id: adapter.namespace + '.entities.' + entity.entity_id + '.' + s,
type: 'state',
common: {
desc: service.description,
desc: service[s].description,
read: false,
write: true
},
native: {
field: service.fields,
entity_id: entity.entity_id,
attr: s,
type: serviceType
object_id: entity.object_id,
domain: entity.domain,
fields: service[s].fields,
entity_id: entity.entity_id,
attr: s,
type: serviceType
}
};
objs.push(obj);