2015-01-13 4 views
0

이 프로젝트는 사과 homekit과 raspberry pi (https://github.com/KhaosT/HAP-NodeJS)의 node.js 서버를 사용하여 기기 등을 켜고 끕니다. 따라서 Light_accessory.js는 vaule이 true (1) 일 때 childprocces를 사용하여 램프 (릴레이)를 켜고 pi를 연결합니다. 또한 값이 false (0) 일 때 램프를 꺼야합니다 (gpio write 7 1). Iv는 "아마도 equals"를 추가하여 램프 (릴레이)를 끕니다. 두 개의 값을 추가하려고 시도했습니다. Google 검색 결과 및 구문 오류로 밤이되었습니다. Iv는이 프로젝트에서 제가 승인하고 싶은 것보다 더 많은 시간을 보냈습니다 .. 간단히 말해서 목표는 프로젝트와 매우 비슷합니다. PHP로.Javascript에서 "아마 같음"이라고 이해하는 데 어려움을 겪고 있습니다.

?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'); 
    } 
?> 

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

여기서 값이 true (1) 일 때 gpio가 low (gpio write 7 0)로 설정됩니다. 값이 자바 스크립트에서 0 인 경우

{ 
      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) 

을 추가하는 방법은 무엇입니까? 그렇게하면 램프 (릴레이)도 꺼집니다.

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

Light_accessory.js의 대략적인 개요; 윗부분은 실제 기능보다는 제품 설명이 대부분입니다. "OnUpdate :"아래의 "cType : types.POWER_STATE_CTYPE"은 마법이 발생하는 곳입니다.

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

전체 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: "%" 
     }] 
    }] 
} 
+1

당신의'onUpdate' 기능에 if 문을 사용할 수 있습니까? "아마도 같음"이란 무엇을 의미합니까? –

답변

0
{ 
      cType: types.POWER_STATE_CTYPE, 
      onUpdate: function(value) { 
       if(value == 1){ 
        exec('gpio write 7 0') 
        setTimeout(function() {exec('gpio write 7 1')},250) 

       } 
       if(value == 0){ 
        exec('gpio write 6 0') 
        setTimeout(function() {exec('gpio write 6 1')},250) 
       } 
      }, 
      perms: ["pw", "pr", "ev"], 
      format: "bool", 
      initialValue: false, 
      supportEvents: false, 
      supportBonjour: false, 
      manfDescription: "Turn On the Light", 
      designedMaxLength: 1 
     }, 
1

프롬이 패키지에 장난 자신 나는 값을 알아 차렸다입니다 'true'또는 'false' 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 }

+0

Light_accessory 스크립트를 사용하여 다른 예제를 보여줄 수 있습니까? 임 새로운 자바 스크립트. – Benjamin

+0

예를 들어 업데이트되었습니다. –