ネットワーク

SSHサーバを設定すると、ご自身のPCからターミナルを通じて開発できます。aptにてssh-serverをインストールして、enp3s0(有線NIC)を固定IPアドレスとして設定できます。

有線LANを有効化する

/etc/network/interfaces ファイルの下記部分を修正し、再起動することで、反映されます。


auto enp3s0

iface enp3s0 inet static

    address 192.168.100.30

    mask 255.255.255.0



Pythonによるコードサンプル

チュートリアルにして紹介している温度取得コードサンプルのPython版は以下です。

PythonのバージョンはMODEセンサーゲートウェイに同梱されている3.5を想定しています。


#!/usr/bin/python3


import json

import requests

import time


if __name__ == '__main__':

    announce_json = json.dumps({

        'model': 'CUSTOM',

        'id': 'MyNUC',

        'sensors': ['TEMPERATURE:0']

    })


    try:

        response = requests.post(

            'http://localhost:55299/announce',

            headers={'Content-Type': 'application/json'},

            data=announce_json)

        # This method causes an exception when a response status code means unsuccess

        # e.g. 404, 500

        response.raise_for_status()

    except Exception as e:

        print(e)

        exit(1)


    while True:

        time.sleep(5)


        sensing = True

        try:

            response = requests.get('http://localhost:55299/sensorModules/CUSTOM:MyNUC/command')

            response.raise_for_status()

            if response.status_code != 204:

                action = response.json()['action']

                if action == 'startSensors':

                    sensing = True

                elif action == 'stopSensors':

                    sensing = False

        except Exception as e:

            print(e)


        if not sensing:

            continue


        with open('/sys/devices/platform/coretemp.0/hwmon/hwmon1/temp2_input', mode='r') as f:

            temp = float(f.read()) / 1000

        data_json = json.dumps([{

            'sensor': 'TEMPERATURE:0',

            'value': temp

        }])


        try:

            response = requests.post(

                'http://localhost:55299/sensorModules/CUSTOM:MyNUC/sensorData',

                headers={'Content-Type': 'application/json'},

                data=data_json)

            response.raise_for_status()

        except Exception as e:

            print(e)