動画では瓦状に磁気記録されているかのように見せていますが、実質は上書きされるので上書きされた部分は消えるということです。つまり、ディスク面の内から外、もしくは外から内と隣のトラックが使われていないことを前提に順番に書き込む必要があります。従来使われているかどうかの管理は、OSレベルのNTFSや、ext4などのディスクシステム管理で行うだけでした。これを、SMRでは、HDD内部で書き込み順の管理を行い、TPI(Tracks Per Inch トラック密度)を上げることで、面記録密度を上げる工夫をしています。
import pandas as pd import numpy as np from datetime import datetime, timedelta import os import sys import argparse import requests from bs4 import BeautifulSoup
for h in range(8, 17): # 影の影響が少ない時間帯を重点チェック sun = hourly_sun[h] if sun and sun > 0.3: # ある程度の日照がある場合 expected = model_df.loc[month, f"h_{h}"] * sun actual = hourly_actual[h] if actual < expected * THRESHOLD_RATIO: is_anomaly = True anomaly_details.append(f"{h}時(実測{actual:.1f}kW/期待{expected:.1f}kW)")
# メッセージ作成 total_gen = sum(hourly_actual) * (10/60) # 10分データの場合の概算 status_msg = "✅ 正常" if not is_anomaly else "⚠️ 故障の疑い"
def calc_week_summary(days=7, da=-8 ): """過去days日分の集計(今日を除く昨日まで)""" base_day = datetime.now().date() results = [] for i in range(1+8+da, days + 1+8+da): target_date = base_day - timedelta(days=i) try: df = load_day_data(target_date) date_label = target_date.strftime("%m/%d") summary = calc_daily_summary(df, date_label) results.append(summary) except Exception as e: print(f"{target_date} のデータ読み込み失敗: {e}")
if not results: return None
total_gen = sum(r["gen"] for r in results) total_buy = sum(r["buy"] for r in results) total_sell = sum(r["sell"] for r in results) total_use = sum(r["use"] for r in results)
lines = [f"【過去{days}日間実績】"] for r in reversed(results): # 古い順→新しい順 lines.append(f"{r['date']}: 発電{r['gen']} kWh") lines.append("") lines.append(f"合計発電量: {total_gen:.1f} kWh") lines.append(f"合計買電量: {total_buy:.1f} kWh") lines.append(f"合計売電量: {total_sell:.1f} kWh") lines.append(f"合計消費量: {total_use:.1f} kWh")