作成したい物
・ http://IPアドレス/onにアクセス(get)するとファイルの内容が1になる。
・ http://IPアドレス/offにアクセス(get)するとファイルの内容が0になる。
・ http://IPアドレス/onoff_statusにアクセス(get)するとファイルの内容が返ってくる。
コード
ChatGPTに作成してもらいました。ポートは8000になっています。
pipでHTTPServerをインストールしてください。
from http.server import BaseHTTPRequestHandler, HTTPServer, ThreadingHTTPServer
import os
# ファイルパスの定義
file_path = "/home/unagidojyou/switchserver/onoff_status.txt"
class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
# /on へのGETリクエスト
if self.path == '/on':
with open(file_path, 'w') as file:
file.write('1')
self.send_response(200)
self.end_headers()
self.wfile.write(b"ON state saved")
# /off へのGETリクエスト
elif self.path == '/off':
with open(file_path, 'w') as file:
file.write('0')
self.send_response(200)
self.end_headers()
self.wfile.write(b"OFF state saved")
# /onoff_status へのGETリクエスト
elif self.path == '/onoff_status':
if os.path.exists(file_path):
with open(file_path, 'r') as file:
state = file.read()
else:
state = 'File not found'
self.send_response(200)
self.end_headers()
self.wfile.write(state.encode())
else:
self.send_response(404)
self.end_headers()
self.wfile.write(b"Not Found")
def run(server_class=ThreadingHTTPServer, handler_class=RequestHandler, port=8000):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print(f"Starting httpd on port {port}...")
httpd.serve_forever()
# サーバーをポート8000で起動
run()
使用例
自分は、Homebridgeにスイッチとして登録しました。
onoff_status.txtを参照するスクリプトを作成してもいいですし、コードを追加してGPIOをいじってもいいと思います。
Linuxで任意のスクリプトをsystemdに登録してサービス化とかでサービス化するのも良いと思います。