退屈なことはPythonにやらせよう の望遠鏡版 その2~ss-oneの時刻を設定する
第2弾は、SS-one AutoGuider proの時刻を設定する。です。
ss-oneの時刻設定はちょっと大変
ss-oneに限らず、raspberry pi (ラズパイ)は内蔵時計を持っていないため、時刻がずれてしまいがちです。
インターネットに接続できる環境であればNTPサーバと時刻同期できるのですが、そもそも、ss-oneは単独で使うことが多いので対策が必要です。
方法その1: SkySafariを使って、スマホの時刻と同期する方法
これが一番簡単かも。でも、SkySafari Plus or Proを購入しなければなりません。
方法その2: ss-oneにログインして、dateコマンドで設定する方法
一番ベーシックな方法ですが、少し面倒です。
$ sudo date -s "2020/08/09 10:00:00 JST" [sudo] password for sspi: <パスワードを入力> Sun Aug 9 01:00:00 UTC 2020
ちなみに、ss-oneはタイムゾーンがUTC(協定世界時)なので、JST(日本標準時)で設定すると-9時間の時間差で表示されます。
ss-oneの時刻をPCと同期する。
というわけで、今回はss-oneの時刻設定を自動化します。
このPythonのプログラムで、ss-oneの時刻とPCの時刻を同期します。
実行する際にはparamikoがないとエラーで怒られますので、その際には pip でparamikoをインストールしてください。
import paramiko import datetime with paramiko.SSHClient() as ssh: hostname = '192.168.2.102' port=22 username='sspi' password='<パスワード>' def __exec_command(command, mode = ''): if mode == 'sudo': # eg. echo <password> | sudo -S <command> command = 'echo ' + password + ' | sudo -S ' + command; print('\n$ ' + command) stdin, stdout, stderr = ssh.exec_command(command) for o in stdout: print(' ', o, end='') for e in stderr: if '[sudo] password for' not in e: print('[err]', e, end='') if __name__ == "__main__": # paramikoの初期設定(SSH) ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # sshで接続 ssh.connect(hostname, port, username, password) # hostnameを表示 __exec_command('hostname') # raspberry pi の時刻設定 dt_now = datetime.datetime.now() str_time = dt_now.strftime('%Y/%m/%d %H:%M:%S') __exec_command('date -s "' + str_time + ' JST"', 'sudo') # 設定された時刻を表示 __exec_command('date') print('\ndate & time changed.') input(' Press ENTER to exit.')
このpyファイルを実行すると、実行結果は、こんな感じです。
前回同様、デスクトップ等にショートカットを作っておくと便利です。
では。