Отображение энергопотребления в виде температуры с помощью Node-Red в Apple HomeKit

Я хотел бы отображать энергопотребление в HomeKit. К сожалению, в HomeKit нет категории для этого. Вот почему у меня возникла идея отображать это не как энергопотребление, а как температуру в HomeKit. Идея состоит в том, чтобы управлять сценами HomeKit с помощью поддельного датчика температуры.

К сожалению, у меня нет опыта работы с node-red, и для меня это ново.

Я получил следующую строку от счетчика электроэнергии:

success: "true"
response: string
{
    "power":    3.040480,
    "relay":    true
}

Я связываю это с узлом HomeKit, который затем возвращает следующую ошибку:

Characteristic response cannot be written. 
Try one of these: Name, CurrentTemperature, StatusActive, StatusFault, StatusLowBattery, StatusTampered, Name

После различных функций и других настроек я, к сожалению, не вижу «температуру», отображаемую в HomeKit.

Я использую это: https://flows.nodered.org/node/@plasma2450/node-red-contrib-homekit-bridged


person Dodoooh    schedule 09.11.2018    source источник
comment
Где вы определяете тип службы? Где этот ключ Characteristic?   -  person André DS    schedule 09.11.2018
comment
на самом деле мощность должна отображаться как CurrentTemperature, но мое определение не работает. Вот почему я получаю ошибку. Я пробовал несколько функций и переменных, которые не работали.   -  person Dodoooh    schedule 09.11.2018
comment
И где определение? Можем ли мы получить больше кода, пожалуйста? :)   -  person André DS    schedule 09.11.2018
comment
В настоящее время у меня нет определения, для которого работает. Как написано, пробовал с разными функциями, но не работает. Строка, которую я получаю от счетчика электроэнергии, о котором я упоминал выше.   -  person Dodoooh    schedule 09.11.2018


Ответы (1)


Я думаю, вы не можете напрямую связать 2 узла. Из сообщения об ошибке следует, что вы передали полезную нагрузку с выхода счетчика на узел HomeKit. Хотя выход счетчика содержит свойство response и не поддерживается HomeKit, произойдет ваша ошибка.

Убедитесь, что ваша полезная нагрузка состоит только из поддерживаемых характеристик. Вы можете использовать узел изменения для изменения полезной нагрузки или просто узел функции.

const msg.meterOutput = msg.payload;
// Just a prototype, type checking is required
msg.payload = {
    currentTemperature: msg.meterOutput.response.power
}
return msg;
person Keni    schedule 14.11.2018