【Python・PHP】SQM-LEを用いて夜空の明るさを測ってみた

Tips
この記事は約4分で読めます。

初めに

夜空の明るさを計測するために、Sky Quality Meter – LEを使用する。
マニュアルやサンプルコードは公式サイトからダウンロードした。
設置やIP固定はマニュアルや国立天文台の公開しているPDFを参照すること。

SQM-LEとは:国際光器より引用
リモート制御が可能な「SQM-LE」夜空の「暗さ」を測定しましょう!
しかもこの「SQM-LE」は、インターネット回線を通じてリモート制御で「星空」の暗さを数値化出来てしまいます。世界中の星空の暗さがこのSQMで数値化され、環境問題などの貴重なデータとして世界で取り扱われています。なお、当製品はセンサー角度「20°」の特定視野計測タイプ SQM-L をリモート制御対応とした派生モデルとなっています。本体のスペックはSQM-Lと同等です。

環境

  • Windows10
  • Python 3.9.8
  • PHP 8.0.6

目的

SQM-LEを用い、プログラム実行時にSQMを取得したい。
PHPバージョンはcsvへ保存まで実行する。
プログラムはcronにて定期実行する予定。

コード

pythonバージョン

# -*- coding:utf-8 -*-
#!/usr/bin/python
import socket

address = "your ip address"
port = 10001

# ソケット通信
# s.connect(('unihedron.dyndns.org',10001))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((address, port))

# commandを送信 rx = Reading request.
s.send('rx'.encode("utf-8"))

msg = ''
while len(msg) < 55:
    chunk = s.recv(55-len(msg))
    if chunk == '':
        raise RuntimeError
        "socket connection broken"
    msg = msg + chunk.decode("utf-8")

print(msg)
# 出力イメージ  "r, 18.78m,0000000003Hz,0000164961c,0000000.358s, 032.5C"

s.close

PHPバージョン

<?php
date_default_timezone_set('Asia/Tokyo');
//環境により設定してくだいさい。
$IP = "your IP address";
$PORT = 10001;

//-----SQMよりソケット通信にてデータ取得-----
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $IP, $PORT);
$command = "rx";
socket_send($socket, $command, strlen($command), MSG_DONTROUTE);
socket_recv($socket, $SQM_data, 55, MSG_WAITALL);
socket_close($socket);

$SQM_data = str_replace(" ", "", $SQM_data);//半角スペースの削除

// 出力イメージ  "r, 18.71m,0000000003Hz,0000155575c,0000000.338s, 032.8"
//--------------------------

//取得データをcsvに格納
$output = date("Y/m/dTH:i", strtotime("now")) . "," . $SQM_data;
file_put_contents("sqm_date.txt", $output . "\n", FILE_APPEND);

終わりに

このコードを用い、計測を行う。季節や時間、場所による違いが比較できれば良いと思う。

参考サイト

http://globeatnight-network.org/presentations/03%20configuration%20and%20installation%20of%20SQM-LE%20unit%206.pdf