(bluefox) implement state update

This commit is contained in:
GermanBluefox
2018-03-11 02:22:42 +01:00
parent 5f9f095a83
commit 4e6b678d85
2 changed files with 19 additions and 3 deletions
+3 -1
View File
@@ -103,7 +103,7 @@ function HASS(options, log) {
function initSocket(socket) {
socket.on('message', function (msg) {
//log.debug(msg);
log.silly(msg);
var response = JSON.parse(msg);
if (response.type === 'event') {
@@ -116,6 +116,8 @@ function HASS(options, log) {
} else {
log.debug('EVENT: ' + response.event.data.message);
}
} else if (response.event && response.event.event_type === 'state_changed') {
that.emit('state_changed', response.event.data.new_state);
}
} else
if (response.type === 'auth_required') {
+16 -2
View File
@@ -42,7 +42,7 @@ adapter.on('stateChange', function (id, state) {
}
}
hass.callService(hassObjects[id].native.attr, hassObjects[id].native.domain, serviceData, function (err) {
hass.callService(hassObjects[id].native.attr, hassObjects[id].native.domain || hassObjects[id].native.type, serviceData, function (err) {
if (err) {
adapter.log.error('Cannot control ' + id + ': ' + err);
}
@@ -588,7 +588,7 @@ function parseStates(entities, services, callback) {
if (entity.attributes) {
for (var attr in entity.attributes) {
if (entity.attributes.hasOwnProperty(attr)) {
if (attr === 'friendly_name') continue;
if (attr === 'friendly_name' || attr === 'unit_of_measurement' || attr === 'icon') continue;
var common;
if (knownAttributes[attr]) {
@@ -675,6 +675,20 @@ function main() {
hass.on('error', function (err) {
adapter.log.error(err);
});
hass.on('state_changed', function (entity) {
var id = adapter.namespace + '.entities.' + entity.entity_id + '.';
var lc = entity.last_changed ? new Date(entity.last_changed).getTime() : undefined;
var ts = entity.last_updated ? new Date(entity.last_updated).getTime() : undefined;
if (entity.state !== undefined) {
adapter.setForeignState(id + 'state', {val: entity.state, ack: true, lc: lc, ts: ts});
}
if (entity.attributes) {
for (var attr in entity.attributes) {
if (!entity.attributes.hasOwnProperty(attr) || attr === 'friendly_name' || attr === 'unit_of_measurement' || attr === 'icon') continue;
adapter.setForeignState(id + attr, {val: entity.attributes[attr], ack: true, lc: lc, ts: ts});
}
}
});
hass.on('connected', function () {
if (!connected) {