Трудно понять, вероятно, равно в Javascript

Этот проект включает и выключает устройства и тому подобное с помощью домашнего комплекта Apple и сервера node.js на raspberry pi(https://github.com/KhaosT/HAP-NodeJS). Таким образом, Light_accessory.js, когда vaule имеет значение true (1), включает лампу (реле), используя дочерние процессы и проводку pi. Также необходимо выключить лампу (gpio пишет 7 1), когда значение равно false (0). Ив попытался добавить к нему «вероятно, равно», чтобы он также выключал лампу (реле). Попытка добавить два значения в результате меня и ночи гугления и синтаксических ошибок. Я потратил гораздо больше времени на этот проект, чем хотел бы признать.. Просто цель очень похожа на проект, который я сделал некоторое время назад с php.

?php 
    if(isset($_GET['trigger']) && $_GET['trigger'] == 1) {
        error_reporting(E_ALL);
        exec('gpio write 7 0');
    }
    if(isset($_GET['trigger']) && $_GET['trigger'] == 2) {
        error_reporting(E_ALL);
        exec('gpio write 7 1');
    }
?>

..................................................................................................................................................................

Здесь gpio устанавливается на низкий уровень (gpio записывает 7 0), когда значение равно true (1).

{
            cType: types.POWER_STATE_CTYPE,
            onUpdate: function(value) {
                exec('gpio write 7 0' + value,function(error, stdout, stderr) {}
                );
            },
            perms: ["pw", "pr", "ev"],
            format: "bool",
            initialValue: false,
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Turn On the Light",
            designedMaxLength: 1
        }, {

Как вы добавляете

exec('gpio write 7 1'(error, stdout, stderr)

когда значение равно 0 в javascript? Таким образом, лампа (реле) также выключается.

..................................................................................................................................................................

Общий обзор Light_accessory.js; Верхняя часть в основном представляет собой описание продукта, а не фактическую функцию. «cType: types.POWER_STATE_CTYPE» в разделе «OnUpdate:» — вот где происходит волшебство.

..................................................................................................................................................................

Полный скрипт Light_accessory

// HomeKit types required
var types = require("./types.js")
var exports = module.exports = {};
var exec = require('child_process').exec;

var execute = function(accessory, characteristic, value) {
    console.log("executed accessory: " + accessory + ", and characteristic: " + characteristic + ", with value: " + value + ".");
}

exports.accessory = {
    displayName: "Light 1",
    username: "1A:2B:3C:4D:5E:FF",
    pincode: "031-45-154",
    services: [{
        sType: types.ACCESSORY_INFORMATION_STYPE,
        characteristics: [{
            cType: types.NAME_CTYPE,
            onUpdate: null,
            perms: ["pr"],
            format: "string",
            initialValue: "Light 1",
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Bla",
            designedMaxLength: 255
        }, {
            cType: types.MANUFACTURER_CTYPE,
            onUpdate: null,
            perms: ["pr"],
            format: "string",
            initialValue: "Oltica",
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Bla",
            designedMaxLength: 255
        }, {
            cType: types.MODEL_CTYPE,
            onUpdate: null,
            perms: ["pr"],
            format: "string",
            initialValue: "Rev-1",
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Bla",
            designedMaxLength: 255
        }, {
            cType: types.SERIAL_NUMBER_CTYPE,
            onUpdate: null,
            perms: ["pr"],
            format: "string",
            initialValue: "A1S2NASF88EW",
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Bla",
            designedMaxLength: 255
        }, {
            cType: types.IDENTIFY_CTYPE,
            onUpdate: null,
            perms: ["pw"],
            format: "bool",
            initialValue: false,
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Identify Accessory",
            designedMaxLength: 1
        }]
    }, {
        sType: types.LIGHTBULB_STYPE,
        characteristics: [{
            cType: types.NAME_CTYPE,
            onUpdate: null,
            perms: ["pr"],
            format: "string",
            initialValue: "Light 1",
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Bla",
            designedMaxLength: 255
        }, {
            cType: types.POWER_STATE_CTYPE,
            onUpdate: function(value) {
                exec('gpio write 7 0' + value,function(error, stdout, stderr) {}
                );
            },
            perms: ["pw", "pr", "ev"],
            format: "bool",
            initialValue: false,
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Turn On the Light",
            designedMaxLength: 1
        }, {
            cType: types.HUE_CTYPE,
            onUpdate: function(value) {
                console.log("Change:", value);
                execute("Test Accessory 1", "Light - Hue", value);
            },
            perms: ["pw", "pr", "ev"],
            format: "int",
            initialValue: 0,
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Adjust Hue of Light",
            designedMinValue: 0,
            designedMaxValue: 360,
            designedMinStep: 1,
            unit: "arcdegrees"
        }, {
            cType: types.BRIGHTNESS_CTYPE,
            onUpdate: function(value) {
                console.log("Change:", value);
                execute("Test Accessory 1", "Light - Brightness", value);
            },
            perms: ["pw", "pr", "ev"],
            format: "int",
            initialValue: 0,
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Adjust Brightness of Light",
            designedMinValue: 0,
            designedMaxValue: 100,
            designedMinStep: 1,
            unit: "%"
        }, {
            cType: types.SATURATION_CTYPE,
            onUpdate: function(value) {
                console.log("Change:", value);
                execute("Test Accessory 1", "Light - Saturation", value);
            },
            perms: ["pw", "pr", "ev"],
            format: "int",
            initialValue: 0,
            supportEvents: false,
            supportBonjour: false,
            manfDescription: "Adjust Saturation of Light",
            designedMinValue: 0,
            designedMaxValue: 100,
            designedMinStep: 1,
            unit: "%"
        }]
    }]
}

person Benjamin    schedule 13.01.2015    source источник
comment
просто используйте оператор if в своей функции onUpdate? что вы подразумеваете под вероятно равными?   -  person Brian Glaz    schedule 13.01.2015


Ответы (1)


Фромм сам возился с этим пакетом, я заметил, что значение «истина» или «ложь», а не 1 или 0

Попробуйте проверить на истинность, затем запишите 1

value == true ? 1 : 0

Согласно запросу, здесь используется ваш пример. { cType: types.POWER_STATE_CTYPE, onUpdate: function(value) { exec('gpio write 7 0 ' + (value == true ? 1 : 0) ,function(error, stdout, stderr) {} ); }, perms: ["pw", "pr", "ev"], format: "bool", initialValue: false, supportEvents: false, supportBonjour: false, manfDescription: "Turn On the Light", designedMaxLength: 1 }

person Colin Swelin    schedule 13.01.2015
comment
Не могли бы вы показать другой пример с использованием скрипта Light_accessory? Я новичок в javascript. - person Benjamin; 14.01.2015
comment
Обновлено с примером. - person Colin Swelin; 14.01.2015