(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({ socket.send(JSON.stringify({
id: id, id: id,
type: 'call_service', type: 'call_service',
domain: domain || 'light', domain: domain || '',
service: service, service: service,
service_data: serviceData service_data: serviceData
})); }));
@@ -106,6 +106,18 @@ function HASS(options, log) {
//log.debug(msg); //log.debug(msg);
var response = JSON.parse(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 (response.type === 'auth_required') {
if (!options.password) { if (!options.password) {
that.emit('error', 'Password required. Connection closed'); that.emit('error', 'Password required. Connection closed');
+16 -13
View File
@@ -35,14 +35,14 @@ adapter.on('stateChange', function (id, state) {
for (var field in fields) { for (var field in fields) {
if (!fields.hasOwnProperty(field)) continue; if (!fields.hasOwnProperty(field)) continue;
if (fields === 'entity_id') { if (field === 'entity_id') {
serviceData.entity_id = hassObjects[id].native.entity_id serviceData.entity_id = hassObjects[id].native.entity_id
} else { } 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) { if (err) {
adapter.log.error('Cannot control ' + id + ': ' + err); adapter.log.error('Cannot control ' + id + ': ' + err);
} }
@@ -108,19 +108,14 @@ function syncObjects(objects, cb) {
var obj = objects.shift(); var obj = objects.shift();
hassObjects[obj._id] = obj; hassObjects[obj._id] = obj;
var start = Date.now();
adapter.getForeignObject(obj._id, function (err, oldObj) { adapter.getForeignObject(obj._id, function (err, oldObj) {
console.log('getForeignObject: ' + (Date.now() - start));
if (err) adapter.log.error(err); if (err) adapter.log.error(err);
if (!oldObj) { if (!oldObj) {
adapter.log.debug('Create "' + obj._id + '"'); adapter.log.debug('Create "' + obj._id + '"');
hassObjects[obj._id] = obj; hassObjects[obj._id] = obj;
start = Date.now();
adapter.setForeignObject(obj._id, obj, function (err) { adapter.setForeignObject(obj._id, obj, function (err) {
console.log('setForeignObject: ' + (Date.now() - start));
if (err) adapter.log.error(err); if (err) adapter.log.error(err);
setImmediate(syncObjects, objects, cb); setImmediate(syncObjects, objects, cb);
@@ -131,9 +126,7 @@ function syncObjects(objects, cb) {
oldObj.native = obj.native; oldObj.native = obj.native;
adapter.log.debug('Update "' + obj._id + '"'); adapter.log.debug('Update "' + obj._id + '"');
start = Date.now();
adapter.setForeignObject(obj._id, oldObj, function (err) { adapter.setForeignObject(obj._id, oldObj, function (err) {
console.log('ssetForeignObject: ' + (Date.now() - start));
if (err) adapter.log.error(err); if (err) adapter.log.error(err);
setImmediate(syncObjects, objects, cb); setImmediate(syncObjects, objects, cb);
}); });
@@ -550,7 +543,7 @@ function parseStates(entities, services, callback) {
var entity = entities[e]; var entity = entities[e];
if (!entity) continue; 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; var desc = entity.attributes && entity.attributes.attribution ? entity.attributes.attribution : undefined;
channel = { channel = {
@@ -560,6 +553,7 @@ function parseStates(entities, services, callback) {
}, },
type: 'channel', type: 'channel',
native: { native: {
object_id: entity.object_id,
entity_id: entity.entity_id entity_id: entity.entity_id
} }
}; };
@@ -579,9 +573,14 @@ function parseStates(entities, services, callback) {
write: false write: false
}, },
native: { native: {
object_id: entity.object_id,
domain: entity.domain,
entity_id: entity.entity_id entity_id: entity.entity_id
} }
}; };
if (entity.attributes && entity.attributes.unit_of_measurement) {
obj.common.unit = entity.attributes.unit_of_measurement;
}
objs.push(obj); objs.push(obj);
states.push({id: obj._id, lc: lc, ts: ts, val: entity.state, ack: true}) states.push({id: obj._id, lc: lc, ts: ts, val: entity.state, ack: true})
} }
@@ -603,6 +602,8 @@ function parseStates(entities, services, callback) {
type: 'state', type: 'state',
common: common, common: common,
native: { native: {
object_id: entity.object_id,
domain: entity.domain,
entity_id: entity.entity_id, entity_id: entity.entity_id,
attr: attr attr: attr
} }
@@ -636,12 +637,14 @@ function parseStates(entities, services, callback) {
_id: adapter.namespace + '.entities.' + entity.entity_id + '.' + s, _id: adapter.namespace + '.entities.' + entity.entity_id + '.' + s,
type: 'state', type: 'state',
common: { common: {
desc: service.description, desc: service[s].description,
read: false, read: false,
write: true write: true
}, },
native: { native: {
field: service.fields, object_id: entity.object_id,
domain: entity.domain,
fields: service[s].fields,
entity_id: entity.entity_id, entity_id: entity.entity_id,
attr: s, attr: s,
type: serviceType type: serviceType