2015-02-02 10 views
1

이상한 질문입니다. 일반적으로 로그 정보를 얻을 수 있기 때문에 OpenHab의 내부 구조는 이미 완료되었지만 OpenHab Z-wave 번들과 필요한 모든 라이브러리를 추출하여 시뮬레이션을 실행했습니다. 멀티 센서 Aeon Labs MultiSensor Model:DSB05-ZWUS.OpenHab Zwave 번들의 경우 MultiLevelSensor의 기본 코드에서 판독 값을 표시하는 위치는 어디입니까?

내가 사용하는 컨트롤러는 AEOTEC Z-Stick S2이며 로컬 컴퓨터에서 Maven으로 설정된 OSGI 시스템을 통해 OpenHab 번들을 시작합니다. 필자는 빛을 끄고 켜기 위해 바이너리 스위치를 시험해 보았습니다.이 스위치는 OFF 또는 ON (00 또는 FF) 메시지를 보내면 매우 간단하지만 다중 레벨 센서의 경우 정보를 검색하기 위해 메시지를 보내야합니다 .

모든 센서 판독 값을 얻는 방법에 대한 GUI 예제가 없으므로 작업 흐름을 찾을 수 없습니다. 필자는 코드를 자세히 파헤 쳤고 이해하는 것으로부터 멀티 레벨 센서에는 숫자와 해당 센서 유형을 포함하는 enum 유형이 있습니다.

나는 getMessage (sensorType)을 수행 할 수 있었고 다음과 같이 반환했습니다. SendData (0x13), type = Request (0x00), playload = 0D 02 31 04 01. 플레이로드는 센서의 판독 값을 결정하는 데 사용되는 정보이지만, 디코딩 할 리소스를 찾을 수 없다고 나는 의심 할 여지가 있습니다.

그러나 온도계에 대한 단일 변환이있는 public void handleEvent(ZWaveCommandClassValueEvent event, Item item, Map<String,String> arguments)이라는 메서드가있는 ZWaveMultiLevelSensorConverter.java 변환기 클래스를 찾을 수 있었지만 매개 변수로 무엇이 들어갈 지 확신 할 수 없습니다.

그래서 내가 가지고있는 구체적인 질문은 각 센서 유형 (예 : 온도)에 대한 판독 값을 제공하는 특정 방법이 무엇인지, 가능하다면 코드의 작업 흐름은 무엇입니까?

는 자원 : https://github.com/openhab/openhab/tree/master/bundles/binding/org.openhab.binding.zwave

답변

1

구성

첫째, 당신은 당신이 원하는 정보를 전송하는 장치를 구성해야합니다. 센서를 구성하는 플러그인으로 "Habmin"(HABmin)을 추가하십시오. 키 일들이 설정합니다 :

  1. 일어나 배터리가 삽입 십분 - 그것은 모션 센서를 사용
  2. 에서이 작업을 설정하는 것이 도움이 -에 당신은 모션 감지를 원하는 경우
  3. 시간에
  4. - 움직임 감지, 장치가 "켜짐" 알림을 보냅니다. 일정 시간 (이 설정)이 지나면 은 "꺼짐"알림을 보냅니다 (아래 # 7 참조).
  5. 그룹 1 보고서 :이 값을 225 (십진수) (11100001)로 설정하십시오. 비트가 1이면 해당 값이 전송됩니다. 비트 0은 배터리 수준, 5는 온도, 6은 상대 습도, 7은 휘도입니다.
  6. 그룹 1 간격 : 보고서를 보내는 빈도입니다.
  7. 그룹 1 - 노드 1, Zstick 컨트롤러에 대한 연결이 설정되어 있는지 확인하십시오.
  8. 명령 옵션 - 이것을 "기본"으로 설정하고 그룹 1의 연결로 다른 장치 (켜기/끄기 램프 컨트롤러)를 추가합니다. 동작이 감지되면 기본 보고서는 램프 컨트롤러를 켜고 모션 기간이 만료되면 다른 기본 보고서가 전송됩니다. 이것은 백그라운드에서 실행되는 소프트웨어없이 장치간에 발생합니다. ZStick은 이벤트 알림을 트리거하는 기본 보고서도 가져옵니다 (아래 참조).당신이 원하는 때마다

폴링

장치가 배터리로 작동하기 때문에, 당신은 독서를 위해 그것을 폴링 수 없습니다. 구성에서 지정한 시간 간격으로 센서 판독 값과 함께 그룹 1 (사용자의 ZStick)에 보고서를 전송합니다. 그렇지 않으면 잠든다. 그러나 동작 감지가 켜져 있으면 동작에 즉시 응답합니다.

OpenHAB 코딩

는 OpenZWave 라이브러리 (Z-Wave Binding 참조)를 사용한다. 모든 것이 단일 Manager 클래스를 통해 퍼널됩니다. 기본적으로 추가되거나 제거되는 노드 또는 업데이트되는 값과 같은 이벤트를 수신합니다. OpenZWave 제어판 (OpenZWave Control Panel)을 다운로드하고 "ozwcp.cpp"를보고 무엇을해야하는지 확인하십시오. 나는 C++로 모든 것을 해냈다. 자바에 대해서는 잘 모르겠다.

멀티 센서가 판독 값과 함께 보고서를 전송하면 Notification :: Type_ValueChanged이 표시됩니다. 예를 들어

// this is the node number that triggered the event 
uint8 const nid = notification->GetNodeId(); 

// this is the internal value that identifies what was changed 
ValueID const vid = notification->GetValueID(); 

// this is the English version of what was changed 
string vLabel = Manager::Get()->GetValueLabel(vid); 

vLabel은 "온도", "relative_humidity"것, "휘도", "BATTERY_LEVEL"또는 온/오프 동작 기간 "센서".

동작이 감지되면 기본 보고서는 Notification :: Type_NodeEvent을 트리거합니다.

+0

openhanded는 openzwave 라이브러리를 사용하지 않습니다. Java로 작성된 것입니다. – cdjackson

+0

@cdjackson : 무엇이 openhanded입니까? 그는 OpenHAB에 대해 이야기하고 있습니다 – swmcdonnell

+0

Openhanded는 openhab에 대한 iPhone 자동 고침을 확인하지 않으면 얻을 수 있습니다. :). 저는 오픈 웨이브 (Openhab) Zwave 바인딩의 주 저자입니다. – cdjackson