오래된 스마트폰이나 홈 자동화 안티패턴의 스마트 홈입니다. EasyHome - iOS, Android, Windows에서 스마트 홈 제어 Android에서 스마트 홈 제어

새 기사

● 9.1. IoT Manager - 모바일 애플리케이션을 통한 스마트 홈 제어

IoT Manager는 센서의 데이터를 표시하는 디스플레이와 액추에이터를 제어하는 ​​리모콘을 결합한 휴대폰 및 태블릿용 모바일 애플리케이션입니다. Android 및 iOS용 버전이 있으며 GooglePlay 및 AppStore www.iotmanager.ru에서 다운로드할 수 있습니다. 하지만 애플리케이션을 다운로드하기 전에 브로커를 결정해 봅시다. 브로커로서 우리는 (제어판 링크를 통해) 무료 계정을 만들 수 있는 CloudMQTT.com 서비스(https://www.cloudmqtt.com/)를 선택합니다. 등록하려면 이메일 주소(로그인용)와 비밀번호를 입력해야 합니다(그림 9.2 참조).

쌀. 9.2. CloudMQTT.com 서비스에 등록합니다.

즉시 제어판으로 이동하여 브로커를 생성합니다(+Create 버튼 클릭). 이름을 입력하고 데이터 센터(유럽 또는 미국)를 선택한 후 요금제 - 무료 Cute Cat을 선택하고 저장합니다(그림 9.3). 여러 브로커를 생성할 수 있습니다.

쌀. 9.3. CloudMQTT.com 서비스에 브로커 등록.

이제 세부사항 버튼을 클릭하십시오(그림 9.4 참조).

쌀. 9.4. 선택한 브로커의 설정으로 이동합니다.

설정으로 들어갑니다 (그림 9.5). 우리에게는 다음이 필요합니다:

호스트 이름 m13.cloudmqtt.com;
. 포트 18274(Arduino IDE 스케치용);
. WebSocket 포트 38274(모바일 애플리케이션용)

브로커 데이터에 액세스하고 권한(읽기, 쓰기)을 할당할 사용자를 생성할 수 있는 사용자 관리자도 있습니다. 주제 필드에 #(모든 주제에 대해)을 입력합니다(그림 9.6 참조).

쌀. 9.5. 선택한 브로커의 설정입니다.

쌀. 9.6. 브로커에 액세스할 사용자를 생성합니다.

이제 IoTManager 모바일 애플리케이션을 다운로드하여 설치할 수 있습니다. 발사하자. 설정을 해야 합니다. 설정(그림 9.7)을 클릭하고 나타나는 양식에 브로커 세부 정보를 입력합니다(그림 9.8).

MQTT 호스트 이름 - m13.cloudmqtt.com;
. MQTT 웹소켓 포트 - 38274;
. MQTT 사용자 이름 - nodemcu1;
. MQTT 비밀번호.

쌀. 9.7. IoTManager 애플리케이션의 기본 메뉴입니다.

쌀. 9.8. 브로커 설정 창입니다.

이제 대시보드 페이지로 이동하여 설정된 연결을 확인해야 합니다(그림 9.9). 데이터 없음이라는 비문을 혼동해서는 안 됩니다. 데이터가 아직 주제로 전송되지 않았습니다.

쌀. 9.9. 브로커에 성공적으로 연결되었습니다.

창문은 모두 닫혀 있나요? 조명이 꺼져 있나요? 누군가가 아파트에 몰래 들어왔나요? 집이 인터넷에 연결되어 있다면 스마트폰 화면만 봐도 모든 것이 제대로 되어 있는지 알 수 있습니다. 이는 스마트 홈 시스템 덕분에 가능해졌습니다. 그리고 가장 좋은 점은 어디서나 집을 제어할 수 있다는 것입니다. 거실의 조명을 어둡게 하거나, 난방을 조절하거나, TV를 켜려면 스마트폰 화면의 버튼만 누르면 됩니다.

난방 시스템에서는 스마트 온도 조절 장치를 통해 모바일 장치와의 연결이 보장됩니다. 창문의 경우 새시의 개폐를 등록하는 센서가 이 작업을 수행합니다. 그리고 TV, 플로어 램프 또는 커피 메이커는 스마트 소켓을 사용하여 네트워크에 연결됩니다.

간단한 장비 재설치

드릴링, 케이블링 또는 벽 관통이 필요하지 않습니다. 많은 스마트 홈 장치는 일반 양면 테이프로 고정할 수 있습니다. 배터리 또는 충전식 배터리로 구동되며 제어 명령과 센서 데이터는 무선 신호를 통해 전송될 수 있습니다.

스마트 홈 제품을 선택하면 Bluetooth를 통해 스마트폰에 연결하거나 홈 Wi-Fi 네트워크를 사용할 수 있습니다. 그러나 여러 기기를 여러 층에 걸쳐 제어할 경우에는 스마트홈의 추가적인 중앙제어점을 통해 통신이 이뤄지는 경우가 많다.

제어 센터는 라우터에 연결되어 스마트폰과 인터넷에 대한 연결을 제공합니다. 또한, 예를 들어 거주자가 집을 나갈 때 모든 가전제품이 자동으로 꺼지고 보안 시스템이 켜지도록 모든 장치를 제어할 수 있습니다.

이러한 시스템을 구축하는 데에는 뛰어난 기술 지식이나 많은 시간이 필요하지 않습니다. 대부분의 경우 모든 장치를 설치하고 구성하는 데 한두 시간이면 충분합니다. CHIP에서는 스마트 홈 기능을 시작할 때 특히 유용한 6가지 앱을 소개합니다. 동시에 우리는 안전과 에너지 절약에도 중점을 두었습니다.

스마트 홈 애플리케이션

Netatmo Welcome: 얼굴 인식 기능을 갖춘 네트워크 카메라

Netatmo Welcome 모바일 앱은 현재 집에 누가 있는지 알려줍니다. 비디오 카메라가 얼굴로 사람을 식별할 수 없는 경우 비디오 녹화를 시작하고 이에 대해 알려줍니다. 집에 있을 때 앱은 렌즈에 포착된 움직이는 물체나 마이크(예: 연기 감지기)에서 감지한 알람 소리에 대해 알려줄 수 있습니다. 비디오 녹화는 포함된 SD 카드 또는 FTP 서버에 로컬로 저장됩니다. 비디오 이미지에 대한 녹화 및 원격 액세스는 무료로 제공되지만 비디오 카메라의 경우 약 17,000 루블의 일회성 비용을 지불해야 합니다.

플랫폼:안드로이드, iOS

Yale ENTR: 스마트폰으로 현관문 열기

ENTR Smart Lock 또는 August Smart Lock을 사용하는 경우 현관 열쇠를 집에 두고 올 수 있습니다. 결국, 애플리케이션에서 손가락을 위에서 아래로 스와이프하면 전자도어락이 열립니다. 잠금 장치는 암호화된 Bluetooth Low Energy 연결을 통해 열라는 명령을 받습니다. 집에 없을 때 지인이나 장인이라고 부르는 사람에게 시간 제한적으로 집에 접근할 수 있는 권한을 제공할 수 있습니다. 당신과 함께 사는 사람이 여전히 일반 열쇠로 문을 열고 싶어한다면 가능합니다. ENTR 스마트 잠금 장치(약 25,000루블)는 문 안쪽에 설치되어 있으며 외부에서는 보이지 않습니다.

플랫폼:안드로이드, iOS

Gigaset Elements: 초대받지 않은 손님으로부터 집을 보호하세요

Gigaset Elements 스타터 키트를 사용하면 RUB 12,000의 비용으로 집을 더욱 안전하게 만들 수 있습니다. 시작 패키지에는 중앙 제어 지점, 모션 센서 및 도어 강도 센서가 포함됩니다. 다른 보안 시스템과 달리 도어 센서는 소음 수준에 따라 강제 진입 시도를 감지합니다. 이 경우 스마트폰의 애플리케이션을 통해 알림을 받게 됩니다. 이를 통해 재택 또는 외출 모드를 활성화하고 보안 시스템을 활성화해야 하는 시간을 설정할 수도 있습니다. 창문 열림 센서, 카메라, 사이렌은 옵션으로 제공됩니다.

플랫폼:안드로이드, iOS

Panasonic 홈 네트워크: 모든 상황에 대한 완벽한 보호

Panasonic 스마트 홈 보안 시스템은 오프라인 상태에서도 전화로 경고합니다. 인터넷 연결을 사용하면 Panasonic 홈 네트워크 시스템(Panasonic Home Network System) 모바일 애플리케이션도 사용자에게 사건을 알립니다. 경보 개시 장치는 문(창) 센서, 유리 파손 센서 또는 Starter Kit Plus(약 20,000 루블)의 누수 센서 중 하나일 수 있습니다. 추가 하드웨어 모듈을 설치하면 이 애플리케이션을 통해 집 안팎에서 일어나는 일을 모니터링하고, 가전 제품을 켜거나 끄고, 조명, 유선 전화 등을 제어할 수 있습니다.

플랫폼:안드로이드, iOS

eQ-3 홈매틱 IP: 스마트폰을 통한 난방 제어

eQ-3는 Homematic IP를 사용하여 스마트폰을 통해 실내 온도를 제어할 수 있는 편리한 옵션을 제공합니다. 앱을 통해 구성하면 라디에이터 온도 조절 장치와 창문 센서가 중앙 제어 센터(약 5,000루블 비용)에 연결되어 방에 할당됩니다. 그러면 같은 방에 있는 온도 조절 장치가 자동으로 서로 동기화됩니다. 그리고 방에 창문이 열리면 난방 강도가 감소합니다. 또한 모바일 애플리케이션을 통해 매일, 각 방별로 쉽게 설정할 수 있는 난방 일정을 사용하여 에너지를 절약할 수 있어 매우 편리합니다.

얼마 전 Raspberry Pi용 Z-Wave 모듈인 RaZBerry가 출시되었습니다. RaZBerry는 미니 컴퓨터를 본격적인 스마트 홈 컨트롤러로 바꿔줍니다. Z-Wave 네트워크 관리는 HTTP/JavaScript API를 사용하는 웹 인터페이스를 통해 수행됩니다. JavaScript를 사용하면 자동화를 위한 일련의 기능(조명 켜기/끄기, 온도 확인, 모션 센서 폴링 등)을 생성할 수 있으며, 그런 다음 HTTP 요청을 전송하여 실행할 수 있습니다.

OpenRemote 회사의 같은 이름의 제품을 사용하면 프로그래밍 없이 스마트 홈용 모바일 애플리케이션을 만들 수 있으며, 하나의 애플리케이션은 Z-Wave, KNX, X10, ZigBee, SSH를 통한 컴퓨터 제어 등 다양한 기술을 사용할 수 있습니다.

OpenRemote는 버튼, 스위치, 라벨 등을 생성하고 이러한 요소에 명령을 할당하는 인터페이스 디자이너와 모든 명령을 실행하는 서버입니다. 우리의 경우 이는 Z-Wave 서버에서 JavaScript 기능을 실행하기 위한 HTTP 요청입니다.

다음으로 아이폰, 안드로이드용 스마트홈 리모컨 만드는 방법을 차근차근 알려드릴게요! 완료되면 애플리케이션의 모습은 다음과 같습니다.

컷 아래에 사진이 많이 있습니다.

1. Raspberry Pi + RaZberry 컨트롤러를 사용하여 Z-Wave 네트워크 생성

  • Raspberry Pi에 RaZberry 소프트웨어 설치
  • Z-Wave 장치 추가
  • 장치 작동 확인
2. OpenRemote 컨트롤러 및 모바일 애플리케이션 설치

3. 애플리케이션 설계 및 작동 논리 작성

  • 디자인 개발
  • 버튼과 명령의 연관
4. 요약

Raspberry+RaZberry 컨트롤러를 사용하여 Z-Wave 네트워크 생성

RaZberry는 GPIO를 통해 Raspberry Pi에 연결된 보드로, Z-Wave 네트워크를 생성하고 관리할 수 있습니다. 더 나은 이해를 위해 FAQ를 읽어보세요. 보드에는 설치해야 하는 소프트웨어가 함께 제공됩니다.

Raspberry에 RaZberry 소프트웨어 설치

설치 프로그램은 Debian 기반 배포판(Raspbian, Xbian 등)만 지원하지만 OpenElec 및 기타 OS에는 수동으로 소프트웨어를 설치할 수 있습니다.
Z-Way 소프트웨어를 설치하려면 다음 명령을 실행하세요.
wget -q -O - http://razberry.z-wave.me/install | sudo bash
설치 후, 직렬 포트에 변경 사항을 적용하려면 Raspberry Pi를 재부팅해야 합니다.

스마트 홈 제어판으로 이동하려면 http://IP_OF_YOUR_RASPBERRY:8083으로 이동하세요. 프로그램 인터페이스는 매우 간단하고 이해하기 어렵지 않으며 문서가 있습니다. 다음 브라우저는 인터페이스와 최대한 호환됩니다: Chrome, Safari, Firefox; 기타 브라우저: IE, Opera는 올바르게 작동하지 않을 수 있습니다.

Z-Wave 장치 추가

사용되는 장비 목록을 결정합시다.
- 릴레이 Fibaro 싱글 스위치 3kW 2개
- 문/창 열림 및 온도 센서 Fibaro 문/창 센서 1개.

하단 메뉴에서 선택 전문가 모드. 상단 메뉴를 이용하여 탭으로 이동하세요. 네트워크 → 네트워크 관리그리고 누르세요 (재)장치 켜기, 그러면 장치가 네트워크에 연결될 때까지 기다리는 프로세스가 시작됩니다. 이제 장치의 서비스 버튼을 세 번 눌러 컨트롤러가 이를 보고 추가하도록 합니다.

장치 작동 확인

장치가 작동하는지 확인해 봅시다. 탭으로 이동 장치 설정, 왼쪽 열에서 유일하게 추가된 장치를 클릭하고 확인하십시오. 면접단계이어야 한다 인터뷰는 성공적이었습니다플러스 사이에는 점이나 Ø가 없어야 합니다.

인터뷰가 완료되지 않은 경우(점과 Ø 기호가 있음), 반복할 수 있습니다. 이렇게 하려면 화면 하단의 를 클릭하세요. 추가 조치 → 강제 인터뷰 반복(이 메뉴를 보려면 전문가 모드를 활성화해야 합니다).
성공적으로 인터뷰를 마친 후 같은 탭에서 장치 설정일부 장치 매개변수를 구성할 수 있습니다(다음을 사용하여 설정을 적용하는 것을 잊지 마십시오). 이 장치에 설정 적용화면 하단에 표시하고 배터리로 작동하는 경우 기기를 깨우기도 합니다.)

기기를 관리하려면 탭으로 이동하세요. 장치 관리 → 스위치

제공된 자동화 API 정보

모든 장치가 올바르게 작동하는지 확인한 후 이제 원격으로 제어해 보겠습니다. 여러 가지 방법이 있습니다:

1. HTTP/JSON API 사용
2. 자바스크립트 API 사용

HTTP/JSON API간단한 구문을 사용하여 장치를 관리합니다.
브라우저에서 조명을 켤 수 있습니다.
http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.SwitchBinary.Set(255)
또는 요청 온도:
http://192.168.1.113:8083/ZWaveAPI/Run/devices.instances.commandClasses.data.val.value
자바스크립트 API예를 들어 조명 켜기/끄기, 센서 폴링, 온도 가져오기, 조명을 켜고 2분 후에 끄기 등 다양한 자동화 스크립트를 작성할 수 있습니다. 이러한 스크립트는 독립적으로 작동하거나(예: 밤에는 눈이 멀지 않도록 조명이 15%만 켜짐) 다음을 사용하여 원격으로 호출할 수 있습니다. HTTP/JSON API.

조명을 켜는 스크립트:
SwitchOn = function(N,I) ( zway.devices[N].instances[I].SwitchBinary.Set(255); )
전등 스위치 스크립트 호출:
불행하게도 OpenRemote의 HTTP/JSON API를 사용하여 장치에 직접 액세스하는 것은 다음과 같은 여러 가지 이유로 문제가 됩니다.

1. OpenRemote 생성자에서 문자를 UTF-8로 다시 코딩해야 합니다.
2. 센서를 폴링할 때 OpenRemote는 "켜짐" 또는 "꺼짐"을 예상하고 Z-Wave 센서는 255 또는 0을 보낼 수 있습니다.
3. 각 장치에 대해 고유한 요청을 작성해야 하며 JS를 사용하면 요청의 기능 매개변수(장치 번호)만 변경하여 하나의 기능만 사용하여 다른 장치를 활성화할 수 있습니다.

JavaScript API를 사용하면 이러한 모든 문제가 사라집니다. 여러 "도우미" 기능이 Z-Wave 용어를 OpenRemote에 편리한 개념으로 변환하는 데 도움이 됩니다.
최근 문서에서 HTTP/JSON API 및 JavaScript API의 구문에 대해 자세히 알아볼 수 있습니다.

원격 제어를 위한 JS 스크립트 만들기

JS 스크립트는 /opt/z-way-서버/자동화/, 자동화 기능이 저장될 파일을 만들어 보겠습니다. openremote.js Z-Way가 켜지면 자동으로 로드되도록, 기본 자동화 파일 끝에서 main.js추가하다:
// ================================================ ==== ====== ExecutionFile(automationRoot + "/" + "tags.js"); ExecuteFile(automationRoot + "/" + "openremote.js"); 시작자동화();
/opt/z-way-server/automation/openremote.js
// 장치 켜기 SwitchOn = function(N,I) ( zway.devices[N].instances[I].SwitchBinary.Set(255); ) // 장치 끄기 SwitchOff = function(N,I) ( zway.devices[ N].instances[I].SwitchBinary.Set(0); ) // 센서 상태 요청(트리거됨/실패) SensorStatus = function(N,I) ( return zway.devices[N].instances[ I].SensorBinary.data.level.value; ) // 장치 상태 요청(켜기/끄기) SwitchStatus = function(N,I) ( return zway.devices[N].instances[I].SwitchBinary.data.level .value; ) // 가장 가까운 정수로 반올림된 온도 쿼리 온도 = function(N,I) ( return Math.round(zway.devices[N].instances[I].commandClasses.data.val.value); )

매개변수 N은 네트워크의 장치 번호입니다.
매개변수 I - 하나의 장치 내에 물리적으로 여러 개의 장치(채널)가 있을 수 있습니다(예: 2개의 릴레이 또는 온도 센서, 모션 센서, 광 센서). 매개변수 I은 장치 내부의 채널 번호입니다. 장치에 물리적 장치가 하나만 포함된 경우 이 매개변수는 0입니다.

파일을 생성한 후 다음 명령을 사용하여 Z-Way를 다시 시작해야 합니다.
/etc/init.d/Z-Way 재시작
또는 브라우저에서 요청을 보내 스크립트를 수동으로 로드합니다.
http://192.168.1.113:8083/JS/Run/executeFile("automation/openremote.js")
브라우저에서 기능의 기능을 확인할 수 있습니다.
조명을 켜려면:
http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)
요청 온도:
http://192.168.1.113:8083/JS/Run/Temperature(8,2)
Z-Way 서버 로그는 디버깅에 매우 유용합니다.
꼬리 -f /var/log/z-way-server.log
모든 것이 작동하면 다음 단계로 넘어갑니다!

OpenRemote 컨트롤러 설치

OpenRemote 컨트롤러는 모바일이나 웹 애플리케이션으로부터 명령을 받아 다른 컨트롤러나 서버로 전송하는 서버입니다. 우리의 경우 이것은 Z-Way 서버입니다.

OpenRemote 웹사이트에는 매우 자세한 설치 지침이 있으므로 다음을 사용하는 것이 좋습니다.
OpenRemote 공식 설치 지침(영어)

OpenRemote는 Java로 작성되었으며 하드웨어 부동 소수점을 지원하는 가상 머신 버전이 필요하다는 점을 참고하세요.
부동 소수점을 지원하는 ARM 프로세서용 JAVA

휴대폰에 모바일 애플리케이션을 설치하세요.
모바일 애플리케이션 OpenRemote

애플리케이션 개발을 시작하기 전에 더 나은 이해를 위해 애플리케이션이 어떻게 작동하는지 살펴보세요.

애플리케이션 설계 및 작동 논리 작성

이전의 모든 단계는 모바일 애플리케이션을 만드는 가장 중요한 준비에 불과했습니다!
클라우드 디자이너 http://designer.openremote.org를 엽니다. 그것을 알아내는 것은 어렵지 않을 것입니다!

디자인 개발

바로 디자인 개발로 넘어가겠습니다.

1. 탭으로 이동 UI 디자이너예를 들어 iPhone4라는 이름으로 새 패널을 만듭니다.

2. 오른쪽 패널의 버튼과 이미지를 iPhone 화면으로 드래그하세요.

3. 이미지 속성(오른쪽 패널)에서 사진을 업로드하고 왼쪽, 오른쪽, 너비, 높이 필드를 사용하여 필요에 따라 화면에 배열합니다. 정사각형과 전구 이미지를 업로드하고 비문도 추가했습니다.

제어 명령 및 센서 생성

이제 버튼에 명령을 할당해야 하며, 전구 그림은 조명 상태(켜기/끄기)에 따라 변경되어야 합니다.

1. 탭으로 이동하여 Raspberry와 같은 이름으로 새 장치를 만듭니다.

2. 새로 생성된 Raspberry 장치를 선택하고 이에 대한 새 명령을 만듭니다. 새로 만들기 → 새 명령. 프로토콜 선택 HTTP, 입력하다 URL JS 명령 및 메소드가 설치되었습니다. 우편.
이 명령은 장치 #6을 켭니다. 마찬가지로 다른 장치를 켜는 명령과 끄는 명령을 만듭니다.
http://192.168.1.113:8083/JS/Run/SwitchOn(6,0)

3. 이제 조명 상태를 폴링하는 명령을 생성해야 합니다. 이 명령은 2초마다 호출되므로 수동으로 조명을 끄면 애플리케이션에서 즉시 눈에 띄게 됩니다. 평소처럼 새로 만들기 → 새 명령하지만 추가적으로 설문조사를 얼마나 자주 실시해야 하는지 명시해야 합니다. 투표, 설치하다 2초, 편지 에스필수의.

4. 이 명령으로 수신된 값을 처리하여 이미지나 캡션으로 전송하는 센서를 만들어 보겠습니다. 신규 → 신규 센서, 센서가 실행할 명령을 선택하고 유형을 설정하십시오. 관습, 두 가지 상태 추가 ~에그리고 끄다, 우리는 이를 Z-Wave 반환 값과 연관시킵니다.

버튼과 명령의 연관

1. 애플리케이션 개발의 마지막 단계인 버튼과 명령의 연결입니다. 애플리케이션 디자이너로 돌아가기 UI 디자이너, 버튼을 선택하고 해당 속성에서 실행해야 하는 명령을 설정합니다.

2. 장치 상태가 변경되면 애플리케이션의 이미지도 변경되도록 이미지를 센서와 연결합니다. 이미지를 선택하고 해당 속성에서 센서를 설정하세요.

3. 이미지 속성에서 센서가 전송한 경우 표시할 사진을 선택하세요. ~에센서가 전송하면 어떻게 되나요? 끄다.

모바일 애플리케이션과의 동기화

1. 애플리케이션이 준비되었습니다. 남은 것은 휴대폰에 업로드하는 것뿐입니다. OpenRemote 컨트롤러 주소로 이동하세요.

안녕하세요, 독자 여러분! 아주 중간 수준의 관리자가 선반 위의 낡은 하드웨어 조각에서 먼지를 날리면서 모든 분야의 전문가들이 눈을 아프게 만드는 일을 하는 방법에 대한 또 다른 이야기입니다. ¡하지만 효과가 있어요, 친구!

인정합니다. 이번에는 모든 일을 제대로 하고 싶었습니다. 선반에서 Raspbery Pi를 꺼냈습니다. 파이는 제가 로봇 잔디 깎는 기계에서 이미 사용한 것과 동일합니다. 게시물에 대한 링크와 다른 게시물에 대한 링크입니다. 모기를 잡았어요. 모든 것이 mqtt에서 작동했어야 했지만, 자신에게서 도망칠 수는 없습니다. 컷 아래에는 갈퀴, 자전거, 납땜 불량, 완벽주의자를 위한 완전한 지옥이 있습니다.


이 모든 것은 제가 준비한 Noorik 프로젝트를 보완하려는 열망에서 시작되었습니다. 즉, 이것은 GSM 게이트 오프너를 위한 DIY 솔루션입니다.
게이트를 열려면 보드의 특정 접점을 닫는 것으로 충분합니다.

아두이노를 esp8266으로 교체하고 오픈버튼이 있는 웹 인터페이스를 만들었습니다. 이것은 흥미로웠지만 저는 슬라이딩 게이트, 부분 차고 도어 및 게이트를 열기 위한 단일 인터페이스를 원했습니다.

모든 위시리스트를 적기 시작했을 때 나에게도 같은 것이 필요하다는 사실이 밝혀졌습니다.

  1. 보일러실 제어 시스템
  2. 보안 시스템
  3. CCTV 카메라에 대한 모바일 인터페이스
  4. 집 안팎의 온도 데이터

백엔드

라즈베리는 잘 작동했지만 다음에 전원을 켰을 때 전원이 켜지지 않았습니다. 먼저 전원 LED가 켜졌다가 3~5초 후에 부드럽게 꺼지며, 전원 소켓 근처의 요소(폴리퓨즈 T075)가 매우 뜨거워집니다. 그리고 이제 내 손은 mqtt, blackger, 창녀 초대 및 기타 즐거움을 사용하고 싶어 가렵습니다.

그것은 중요하지 않습니다. 다행스럽게도 다른 환자가 그의 운명을 기다리고 있었습니다. 오렌지 파이 제로를 스튜디오로. 이 중국 사상의 기적으로 인해 아무리 고통을 겪었음에도 불구하고 그렇게 작은 파이에 생명을 불어 넣는 것은 내 힘을 넘어서는 것으로 판명되었습니다. 공식 사이트와 좌파 사이트에서 펌웨어를 다운로드하고, 펌웨어를 직접 구매하여 암호화폐로 교환했습니다. 방금 불량 샘플을 받은 것 같아요.

나는 운명 그 자체가 나를 자전거 만들기의 품에 밀어넣고 있다는 것을 깨달았고, 기쁨을 감추고 왜 이 활동에 뛰어들었을까.

우선, 잘 낡은 스마트폰을 헤드 유닛(브로커, 서버)으로 사용하기로 했습니다. 아시다시피, 이러한 오래된 것들은 그냥 사라지는 것이 아닙니다. 나와 내 아내, 내 딸이 그것을 사용한 다음 이 스마트폰으로 로봇 제설기를 제어하고 강에 익사시키려고 했습니다. (나는 모스크바 강에 가본 적이 없지만 내 고향인 Pakhra에서는 이 파이프가 바스락거리는 소리를 냈습니다.) 그리고 여기 삼성 갤럭시 S3의 새로운 삶이 있습니다.

스마트폰에 Palapa 웹서버와 Ftp 서버를 설치했습니다. 아이디어는 간단합니다. MySQL 데이터베이스에는 값, 로그, 규칙이라는 세 개의 테이블만 있습니다.

  • 값 테이블에는 키/값 쌍이 포함되어 있습니다.
  • 로그 테이블에는 값 변경 내역이 포함되어 있습니다.
  • 규칙 테이블에는 다른 셀의 값에 따라 일부 셀을 변경하는 규칙이 있습니다.
이 전체 기능은 하나의 PHP 스크립트에 의해 제공됩니다. 이 스크립트는 http 요청 시 데이터베이스에서 데이터를 쓰거나 출력하고 일정에 따라 규칙도 제공합니다.
사람이 이것을 보고 싶어하려면 어느 수준의 프로그래밍이 필요한지조차 이해하지 못하지만 코드를 보여줄 준비가 되어 있습니다. PM으로 저에게 편지를 보내주세요.

프런트엔드

나에게 돌을 던지지 마십시오. 나는 그것을 인정합니다. 저는 부트스트랩을 사용했습니다. 그렇습니다. 나는 죄인입니다.
초기 생각은 이 모든 것을 Phonegap을 통해 마무리하고 완전한 애플리케이션을 얻는 것이었습니다. 제가 그렇게 했다고 더 말씀드리겠지만 결국에는 온라인 버전이 더 효율적인 것으로 나타났습니다. 방금 내 휴대폰에 내부 IP를 이용해 원하는 페이지를 열 수 있도록 바탕화면에 나와 아내를 위한 바로가기를 만들어 놓았습니다.

각 요소는 클릭 이벤트에 반응하고 서버에 대한 Ajax 요청으로 상태를 확인하고 필요한 경우 변경됩니다. 규칙에 따라 적용되었거나 다른 사용자가 변경한 내용을 모두 볼 수 있어 매우 편리합니다.
실제로 요청한 코드는 문제가 되지 않습니다.

ESP-8266


나는 다른 모듈과 순수한 ESP-8266을 시도했습니다. 결과적으로 LOLIN V3 모듈이 가장 편리한 옵션으로 판명되었습니다.

스위칭 전원 공급 장치를 사용한 전원 공급 장치.

게이트 모듈에는 릴레이가 필요했고 접점 릴레이가 트립될까 봐 걱정했습니다. 결과적으로 솔리드 스테이트 및 접점이 모두 작동합니다. 문제는 표시하지 않더라도 많은 수의 모듈이 로우 트리거된다는 것입니다.

모듈을 켜면 단기 개방이 발생하여 전원을 켰을 때 비자발적인 개방이 발생합니다. 출력 유형을 선언하기 전에 이를 0으로 끌어오고 상태를 선언하면 해결됩니다.

DigitalWrite(관련, 1); digitalWrite(rele2, 1); pinMode(rele, OUTPUT); pinMode(rele2, OUTPUT);
결과적으로 조립된 차고 모듈은 다음과 같습니다. 움직임을 감지하는 PIR 센서를 원래의 피부에 조심스럽게 갉아 먹습니다.

내 보일러 실에서는 보일러가 매우 간단하고 복잡한 자동화에 대한 이야기가 없습니다.

이 경우 각 회로에는 별도의 펌프가 제공됩니다.

펌프와 보일러를 제어하기 위해 릴레이가 기계와 직렬로 연결되었습니다.

모든 것을 조심스럽게 방패에 밀어 넣습니다.

펌웨어

nodemcu와 lua를 망치지 않기 위해 펌웨어에는 Arduino IDE를 사용하기로 결정했습니다. 인터넷, 특히 GT에는 초보자를 위한 정보가 엄청나게 많습니다.
흥미로운 점은 Wi-Fi에 연결하는 기능인 것 같습니다. 사실 내 집에는 Wi-Fi 네트워크가 4개 있고 더 추가될 수도 있습니다. 네트워크 이름을 엄격하게 지정하지 않기 위해 먼저 사용 가능한 네트워크를 검색합니다.

setupWiFi() 코드

void setupWiFi() ( WiFi.mode(WIFI_STA); WiFi.disconnect(); 지연(100); while(WiFi.status() != WL_CONNECTED) ( int n = WiFi.scanNetworks(); Serial.println("scan 완료"); if (n == 0) Serial.println("네트워크를 찾을 수 없음"); else ( Serial.print(n); Serial.println(" 네트워크를 찾았습니다"); for (int i = 0; i< n; ++i) { Serial.println(""); Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*"); j=0; ssid=WiFi.SSID(i); Serial.print("Connecting"); ssid.toCharArray(charBuf, 50); WiFi.begin(charBuf,WIFI_PASS); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); j++; if(j>20)( break; ) ) if((WiFi.status() == WL_CONNECTED))( break; ) ) ) ) Serial.println("연결됨"); Serial.println(WiFi.localIP()); )


보일러실 자동 모드를 켜면 일정에 따라 외부 온도와 냉각수 온도를 점검합니다.
  • 14*C 이하의 온도에서는 1층의 따뜻한 바닥이 켜집니다.
  • 4*C 미만의 온도에서는 모든 회로가 켜집니다.
냉각수 온도는 배관 단면과 외부 온도에 따라 표에 따라 선택됩니다. 필요한 실내 온도에 도달하면 보일러가 꺼집니다. 전환 값을 부드럽게 하기 위해 모든 것에 특정 히스테리시스가 적용됩니다.

보안 시스템은 더욱 간단하게 작동합니다. 표에는 보안 시스템이 켜져 있을 때 PIR 센서 중 하나에서 움직임이 감지되면 서비스 중 하나의 API를 통해 SMS가 전송된다는 규칙이 있습니다.

계획

  • 원격 서버에 온라인 버전을 생성하고 원격 제어를 위해 변경 사항을 동기화합니다.
  • 자동차의 GSM/GPS 비콘에서 데이터를 표시합니다.
  • 특정 지역에 차량이 나타날 때 게이트를 엽니다.
  • 원격 제어 시스템에 연결;
사진으로 투표합니다. 다음에는 어떤 프로젝트를 해야 할까요? 2014년 1월 22일 오전 10:47

스마트 하우스. 특정 구현

  • 자바

안녕하세요, 친애하는 커뮤니티 여러분!
스마트 홈을 만드는 방법. 그 이후로 꽤 많은 시간이 흘렀고 하드웨어와 소프트웨어 모두에서 상당한 발전을 이루었습니다. 다음 글은 "Smart Home v3"라고 해도 무방할 것 같습니다 :)

간단히 말해서, 나는 내 집에 스마트 홈을 지을 수 있는 가능성에 오랫동안 관심을 가져왔습니다. 요즘 이것은 패션 트렌드이지만 이전에는 열정적 인 괴짜들에게 진정한 주제였습니다.

내가 지금 가지고 있는 장비가 무엇인지 알려드리겠습니다.

  • 다중 ZWave 조광기
  • ZWave 센서(볼륨, 유무, 온도, 누출, 문/창 열림, PC용 동글)
  • ZWave 밸브
  • Noolite 스위치(전원 모듈 + 송신기 스위치, PC용 RX 및 TX(PC) 동글)
  • Noolite 조광기가 오고 있습니다
  • Android 태블릿(시스템 터미널 역할)
  • 선반에 1선 동글이 있어요 :)
이러한 모든 기술은 Habré에 대해 충분히 자세히 설명되어 있습니다(내 기사 포함). 누라이트. 기술은 (예를 들어) 잘 설명되어 있습니다. 이제 내 차례다 :)

상자에 들어있는 모습은 이렇습니다. (품질에 대해 미리 사과드립니다. 휴대폰에 설치하는 동안 배경, 흐트러진 수평선 등에 아무런 문제 없이 수행되었습니다.)

전원 장치에 명령을 전송하는 동글은 다음과 같습니다.

예 예! 명령을 받기 위해 정확하게! 집에서 이런 기기들을 사용하기에는 개인적으로 부족했던 Noolite의 아쉬운 부분입니다. 어떤 이유로 공식 웹 사이트 외에는 이에 대한 정보가 없습니다.
왜 그렇게 중요합니까? 이전에 Noolite에 대해 읽어본 적이 있다면 전원 모듈(부하를 켜거나 끄는 것)에는 신호 수신기만 있고 송신기는 없다는 것을 알고 계실 것입니다. 이는 (개인적으로) 스마트 홈에서 이러한 장비의 사용을 크게 제한했습니다. 제조업체는 독창적인 솔루션으로 목발 문제를 해결했습니다. 송신기 자체(라디오 스위치)의 신호에 대한 별도의 수신기를 출시했습니다. 이 장치의 유일한 문제점은 수신 반경이 매우 작다는 것입니다. 아마도 무선 스위치 자체가 여기서 한계를 부과할 수도 있습니다. 왜냐하면... 안테나가 다소 약하고 일반적으로 이전 스위치 위치에 설치되었습니다 (벽에 구멍을 숨기기 위해 :)). 아마도 일종의 간섭 일 수 있습니다.

실제로 다음은 이전 스위치를 교체하는 설치 프로세스의 순간 중 하나입니다.

보시다시피 터미널 블록의 기존 전원선이 단락되고 라디오 스위치 자체가 맨 위에 배치됩니다.

어떤 이유로 전원 장치가 전화기 렌즈에 들어 가지 않았습니다. :) 연결 결과 :

부하가 꺼지면 전원 장치가 녹색 LED로 기분 좋게 빛납니다. 밤에는 일종의 의무 조명으로 밝혀졌습니다.

모든 것이 매우 간단하고 빠르게 연결되고 풀립니다. 지침은 매우 상세하고 이해하기 쉽습니다. 내가 마음에 들지 않는 유일한 점은 상자에 들어 있는 소프트웨어였습니다. 무릎 위에는 주름 하나 없이 또렷하게 적혀 있었고, 때로는 오류가 뱉어지는 경우도 있었다. 하지만 필요하지 않습니다. 구매한 장치가 올바르게 작동하는지 확인하기 위해 한 번만 사용한 후 무자비하게 잘렸습니다.

이제 집의 스마트한 부분에 대해 이야기할 수 있습니다. 땀샘은 좋고 흥미롭지만 실용적인 부분도 있어야 합니다. 내 아침의 예를 말씀 드리겠습니다.

오늘이 주말이나 공휴일이 아니라면 6시에 침대 옆에 설치된 야간 조명이 켜지기 시작합니다. 즉 가벼운 알람 시계입니다.
6시 45분경, 스마트 홈 단말(침대 옆에 걸려 있는 안드로이드 태블릿)은 메인 서버로부터 알람 시계를 켜라는 명령을 받습니다. (네, 그냥 태블릿에서 알람 시계를 켜도 되는 것으로 알고 있습니다 :)) - 아침 숲의 기분 좋은 소리가 들려와 자꾸만 잠이 깬다.
동시에 복도, 주방, 욕실, 화장실의 조명이 켜집니다.
마침내 복도로 기어나오면 존재감 센서가 졸린 내 시체를 감지하고 합성된 Google 여성의 목소리가 나를 반긴다. 동시에 스마트하우스는 급수밸브를 열어준다(나는 이웃에게 물이 범람하는 것에 대한 공포증이 있다).
화장실 절차를 마친 후 나는 샤워실로 기어 들어갑니다. 욕실에 있는 점유 센서는 내가 이미 여기에 있다는 것을 감지하고 로컬 터미널은 나에게 최신 뉴스를 알고 싶은지 묻습니다. 여기에는 예 또는 아니요로 자유롭게 대답할 수 있습니다(수정된 답변이 허용됨). 동일한 Google + Wit.AI 신경망의 음성 인식이 작동합니다.
(그런데 음성 통신이 개발되는 동안 명확하고 큰 소리로 말해야 하며 음성이 항상 처음에 수신되는 것은 아니며 시스템 인식 및 반응에 약간의 시간이 걸립니다(평균 2~5초). ))
그런 다음 나는 화장실에서 나와 주전자를 켜고 차를 붓습니다 (예, 결점 :)). 내가 지연되고 시스템이 센서를 통해 나를 감지하는 경우(현재 상태 + 현관문의 센서가 작동하지 않음) 음성 메시지로 나에게 메시지를 표시합니다.
나는 떠나고 문을 닫습니다. 모든 곳의 조명이 자동으로 꺼집니다.

이것은 특히 나의 예입니다. 여기에는 약간의 뉘앙스가 있을 수 있습니다. 아내가 일어나고 있고, 휴가 중입니다. 하지만 일반적으로 이 대본은 나에게 90% 정도 적합합니다.

소프트웨어에 대해 조금. 스마트 홈 시스템 자체는 세 가지 구성 요소로 구현됩니다. 이것이 실제로 모든 것을 제어하는 ​​시스템의 핵심입니다. 향후 스마트 홈 시스템의 인간 친화적인 제어가 구현될 Play Framework 1.2.7 기반의 웹 인터페이스입니다. 그리고 스마트 홈 단말 역할을 하는 안드로이드 애플리케이션.
소프트웨어는 Github에 게시되어 있지만 위에 설명된 내용에 대한 구체적인 구현은 아직 없습니다. 왜냐하면 제가 정리하고 있는 끔찍한 코드가 많지만 일반적으로 기능은 존재하기 때문입니다.
시스템은 Java로 작성되었으며 현재 REST와 유사한 점을 제외하면 인간 친화적인 인터페이스가 없습니다. 현재 시스템은 일반 사용자를 위한 준비가 되어 있지 않으며 글로벌 알파 버전입니다. 제가 사용하는 일부 기능은 아직 공개 저장소이지만 시간 문제입니다.

이 주제의 주요 목표는 스마트 홈 매니아 개발자를 유치하는 것입니다. 숨기지 않아요 :)
실제로 메인 모듈의 저장소에 대한 링크입니다(나머지는 같은 위치에 있습니다.

공유하다