Help us understand the problem. What is going on with this article?

Raspberry PI +温度センサーADT7410で 温度モニターを作ってみた

概要

 ブルーバックス「カラー図解 最新Raspberry Piで学ぶ電子工作」で使った秋月のADT7410使用センサモジュールを応用して 5分毎にクラウド上のGoogleスプレッドシートに温度を記録する仕組みを構築しました。

ハードウェア

 Raspberry Pi 3 Model B
 秋月ADT7410使用 I2C・16bit 温度センサモジュール
 ブレッドボード・ジャンパーワイヤー
 (接続方法、Raspberry Piの設定などは上記書籍を御参照ください)

データの流れ

 Raspberry Pi側(node-redのプログラミング)
  node-redで5分毎にトリガーをかけてデータ取得してIFTTTへデータを送る
  ↓
 IFTTT側(あらかじめWebhooksとGoogle Spreadのセッティングはしておく)
  Raspberry Piからデータを受け取ったら Google Spreadシート記録

node-redのプログラミング

 ADT7410からのデータ読み出しで苦労しました。node-redで読み込んで御使用ください。

[
    {
        "id": "6d1c06ad.b64658",
        "type": "inject",
        "z": "93a77c4.18f3b8",
        "name": "繰り返し",
        "topic": "",
        "payload": "",
        "payloadType": "str",
        "repeat": "",
        "crontab": "*/5 0-23 * * *",
        "once": false,
        "onceDelay": 0.1,
        "x": 110,
        "y": 20,
        "wires": [
            [
                "2a2fb99d.337236"
            ]
        ]
    },
    {
        "id": "2a2fb99d.337236",
        "type": "i2c in",
        "z": "93a77c4.18f3b8",
        "name": "i2C 温度センサー",
        "address": "72",
        "command": "0",
        "count": "2",
        "x": 150,
        "y": 120,
        "wires": [
            [
                "837fe248.35111",
                "71a7f10a.a9b97",
                "c028b1bd.24de2"
            ]
        ]
    },
    {
        "id": "837fe248.35111",
        "type": "debug",
        "z": "93a77c4.18f3b8",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload[1]",
        "targetType": "msg",
        "x": 760,
        "y": 100,
        "wires": []
    },
    {
        "id": "71a7f10a.a9b97",
        "type": "debug",
        "z": "93a77c4.18f3b8",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload[0]",
        "targetType": "msg",
        "x": 760,
        "y": 140,
        "wires": []
    },
    {
        "id": "c028b1bd.24de2",
        "type": "function",
        "z": "93a77c4.18f3b8",
        "name": "温度データ 計算(正負対応)",
        "func": "//下位bit byte型\n\ndata1 = msg.payload[1];\ndata1 = data1 & 0xff;\n\n//上位bit byte型\ndata0 = msg.payload[0];\ndata0 = (data0 & 0xff) <<8;\n\n//上位(data0)+下位(data1) で並べる\ndata = data0 | data1;\n\n//13ビット(下3ビット捨てる)\ndata = data >>3;\n\n//正負判定して温度計算\nif ((data & 0x1000) === 0) {  //かっこのかけ方ではまった\n        temp = data *0.0625 ;\n    }else{\n        temp = ((~data & 0x1fff)+1)*-0.0625; //~しただけだと32bit分ある かっこかけかた\n    }\n\nmsg.payload = temp;\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 230,
        "y": 220,
        "wires": [
            [
                "ca9a44b.7779fb8",
                "c988cf02.836b1",
                "382e6da0.9a88c2",
                "2bbd9de4.2f16f2"
            ]
        ]
    },
    {
        "id": "c988cf02.836b1",
        "type": "ui_gauge",
        "z": "93a77c4.18f3b8",
        "name": "温度メーター",
        "group": "8a123253.0fbb5",
        "order": 1,
        "width": 0,
        "height": 0,
        "gtype": "gage",
        "title": "センサー温度",
        "label": "℃",
        "format": "{{value}}",
        "min": "10",
        "max": "40",
        "colors": [
            "#00b500",
            "#e6e600",
            "#ca3838"
        ],
        "seg1": "",
        "seg2": "",
        "x": 580,
        "y": 260,
        "wires": []
    },
    {
        "id": "9a0f93b7.5a7bc",
        "type": "http request",
        "z": "93a77c4.18f3b8",
        "name": "データをIFTTTへ送る",
        "method": "POST",
        "ret": "txt",
        "paytoqs": false,
        "url": "https://maker.ifttt.com/trigger/raspberrypi_send_data/with/key/[IFTTT Webhooksの指示通り記述]",
        "tls": "",
        "proxy": "",
        "authType": "",
        "x": 600,
        "y": 360,
        "wires": [
            []
        ]
    },
    {
        "id": "2bbd9de4.2f16f2",
        "type": "function",
        "z": "93a77c4.18f3b8",
        "name": "value1 を頭につけるだけ",
        "func": "msg.payload = {'value1':msg.payload};\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "x": 230,
        "y": 360,
        "wires": [
            [
                "9a0f93b7.5a7bc"
            ]
        ]
    },
    {
        "id": "382e6da0.9a88c2",
        "type": "ui_chart",
        "z": "93a77c4.18f3b8",
        "name": "温度推移グラフ",
        "group": "8a123253.0fbb5",
        "order": 1,
        "width": 0,
        "height": 0,
        "label": "温度推移グラフ",
        "chartType": "line",
        "legend": "false",
        "xformat": "HH:mm:ss",
        "interpolate": "linear",
        "nodata": "",
        "dot": false,
        "ymin": "",
        "ymax": "",
        "removeOlder": "24",
        "removeOlderPoints": "",
        "removeOlderUnit": "3600",
        "cutout": 0,
        "useOneColor": false,
        "colors": [
            "#1f77b4",
            "#aec7e8",
            "#ff7f0e",
            "#2ca02c",
            "#98df8a",
            "#d62728",
            "#ff9896",
            "#9467bd",
            "#c5b0d5"
        ],
        "useOldStyle": false,
        "outputs": 1,
        "x": 580,
        "y": 300,
        "wires": [
            []
        ]
    },
    {
        "id": "ca9a44b.7779fb8",
        "type": "debug",
        "z": "93a77c4.18f3b8",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "x": 750,
        "y": 220,
        "wires": []
    },
    {
        "id": "8a123253.0fbb5",
        "type": "ui_group",
        "z": "",
        "name": "温度 ADT7410",
        "tab": "c73c2bbe.f33908",
        "disp": true,
        "width": "6",
        "collapse": false
    },
    {
        "id": "c73c2bbe.f33908",
        "type": "ui_tab",
        "z": "",
        "name": "Raspi Sensor",
        "icon": "dashboard",
        "disabled": false,
        "hidden": false
    }
]

IFTTT側の設定

 こちらの記事が参考になりました。
 https://qiita.com/minatomirai21/items/603f32af283158e42989

 Appletを組むために以下を設定します。

項目 説明 サービス
If Receive a web request Webhooks
Then Add row to spreadsheet Google Spreadsheet
  • Webhooks

 詳細は割愛しますが以下の設定が必要になります。

項目 設定値
Event Name raspberrypi_send_data
Key IFTTTのMy Services → Webhooks → 右上のSettings とたどり、URL Status のURLをコピペして ブラウザで開くと記述の説明が出ます。
  • Google Spreadsheet

 例えばこんな感じで設定します。

項目 設定値
Spreadsheet name IFTTT_Maker_Webhooks_Events
Drive folder path (optional) IFTTT/MakerWebhooks/
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away