Siri+Raspberry PIで部屋の温湿度をサクッと測ろう。

1000円以下でデジタル温湿度計を工作します。
材料は、[秋月](http://akizukidenshi.com/catalog/default.aspx)で
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/dc0cf9da-9b74-0894-f678-820028957f65.png)
送料が500円と高額です。
DHT11 センサーモジュール買うと配線材料ついてきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/915efef4-b179-15b9-8af1-14f388ea33d0.png)

配線図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/148507da-fe25-9931-a377-3c1ae613f0c9.png)
抵抗は、なくても動作したが心配なので10kの抵抗でプルアップ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/5eec7a89-78d5-783d-1474-d648631f37b6.png)

単体テスト
## 準備

```
sudo pip install rpi.gpio
git clone https://github.com/szazo/DHT11_Python.git
tree DHT11_Python
DHT11_Python
├── LICENSE.md
├── README.md
├── __init__.py
├── dht11.py
└── dht11_example.py

0 directories, 5 files
```
上記のdht11.pyをimportする。

``` test.py
import datetime,time,RPi,dht11
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
instance =dht11. DHT11(pin=14)

while True:
    result = instance.read()
    if result.is_valid():
        print("時刻: " + str(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')),end="")
        print(" 温度: %d C " % result.temperature,end="")
        print("湿度: %d %%" % result.humidity)
    time.sleep(2)

```
実行結果

```out.txt
時刻: 2019/06/21 15:11:02 温度: 27 C 湿度: 46 %
時刻: 2019/06/21 15:11:06 温度: 27 C 湿度: 45 %
時刻: 2019/06/21 15:11:08 温度: 27 C 湿度: 45 %
時刻: 2019/06/21 15:11:21 温度: 27 C 湿度: 44 %
時刻: 2019/06/21 15:11:23 温度: 27 C 湿度: 44 %
時刻: 2019/06/21 15:11:25 温度: 27 C 湿度: 44 %
時刻: 2019/06/21 15:11:27 温度: 27 C 湿度: 44 %
時刻: 2019/06/21 15:11:35 温度: 27 C 湿度: 44 %
時刻: 2019/06/21 15:11:37 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:11:39 温度: 28 C 湿度: 45 %
時刻: 2019/06/21 15:11:41 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:11:52 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:11:54 温度: 28 C 湿度: 45 %
時刻: 2019/06/21 15:11:56 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:11:58 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:12:02 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:12:08 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:12:11 温度: 28 C 湿度: 44 %
時刻: 2019/06/21 15:12:13 温度: 28 C 湿度: 44 %
```
iPhone用Home appテストプログラム

```
import logging,serial,requests,signal,time,datetime
import RPi.GPIO as GPIO
import dht11
from pyhap.accessory import Accessory, Bridge
from pyhap.accessory_driver import AccessoryDriver
from pyhap.const import (CATEGORY_SENSOR)
logging.basicConfig(level=logging.INFO, format="[%(module)s] %(message)s")
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
instance = dht11.DHT11(pin=14)
global hum
class TemperatureSensor(Accessory):
    category = CATEGORY_SENSOR

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        serv_temp = self.add_preload_service('TemperatureSensor')
        self.char_temp = serv_temp.configure_char('CurrentTemperature')

    @Accessory.run_at_interval(3)
    async def run(self):
        global hum
        result = instance.read()
        if result.is_valid():
            self.char_temp.set_value(result.temperature)
            hum=result.humidity

class HumiditySensor(Accessory):
    category = CATEGORY_SENSOR

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        serv_temp = self.add_preload_service('HumiditySensor')
        self.char_temp = serv_temp.configure_char('CurrentRelativeHumidity')

    @Accessory.run_at_interval(3)
    async def run(self):
        global hum
        self.char_temp.set_value(hum)


def get_bridge(driver):
    bridge = Bridge(driver, 'Bridge')
    bridge.add_accessory(TemperatureSensor(driver, '温度'))
    bridge.add_accessory(HumiditySensor(driver, '湿度'))
    return bridge
driver = AccessoryDriver(port=51826, persist_file='test.state')
driver.add_accessory(accessory=get_bridge(driver))
signal.signal(signal.SIGTERM, driver.signal_handler)
driver.start()

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/d0ff4373-1b64-0e92-a248-0fc7709e60e5.png)

## 実行結果は、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/98fc4b7b-c277-9a67-4648-139c9672b119.png)

[source](https://github.com/yutakahirata/DHT11-Hap-python.git) コードはここに