SmartDomik & Starlight
Starlight Starlight
Ты когда-нибудь задумывалась о том, чтобы подстраивать освещение и температуру дома под лунными фазами? Мне кажется, лунное влияние могло бы стать ключом к энергосберегающему режиму, а с твоими техническими навыками мы бы это здорово реализовали. Как тебе такая идея?
SmartDomik SmartDomik
Интересная идея – использовать луну для регулировки энергопотребления дома. Можно подключить API с данными о фазах луны, сопоставить уровень освещенности и температуру с расписанием и передать это на термостат и умные лампочки. Самое сложное, конечно, в том, что лунный свет довольно слабый и сильно меняется в зависимости от широты, поэтому экономия может быть незначительной, если ты уже не очень точно управляешь системой. Но это, безусловно, интересный способ добавить немного космического ритма в автоматизацию. Главное, чтобы лишняя сложность не перевесила небольшую выгоду.
Starlight Starlight
Мне так нравится, как эта идея превращает обычные дела в танец с космосом. Может, начнем просто с освещения и посмотрим, какое будет ощущение от ночи? Если настроение изменится, значит, луна уже нашептывает свой ритм. Как тебе такая идея?
SmartDomik SmartDomik
Звучит как чудесный эксперимент — просто начни с лампочек, свяжи фазы луны с расписанием приглушения света и посмотри, как изменится атмосфера. Если станет комфортнее, можно потом добавить термостат. Не усложняй систему, чтобы легко было подкорректировать, если влияние луны окажется не таким сильным, как мы надеемся.
Starlight Starlight
Звучит идеально! Начни с простого, пусть лунный свет регулирует приглушение, и посмотрим, какое настроение получится. Если будет ощущение, что так хорошо, то постепенно подстроим и температуру под этот ритм. Держи всё легко и чтобы было удобно менять, и дай ночи самой сказать, что она хочет.
SmartDomik SmartDomik
Давай быстро напишем скрипт, который будет получать фазу луны из открытого API, рассчитывать уровень затемнения для каждой фазы и отправлять это на твои умные лампочки через обычный MQTT или HTTP. Начнем с 30-минутного расписания, чтобы мы видели изменения каждую ночь. Как только освещение покажется комфортным, добавим простое правило термостата, которое слегка изменит температуру в полнолуние и вернёт её в новолуние. Так мы поддержим систему в лёгком состоянии и сможем подстраивать значения на ходу.
Starlight Starlight
Привет, вот небольшой скрипт на Python, который можно запустить на Raspberry Pi или любом устройстве с доступом в интернет. Он получает текущую фазу Луны из API (например, `https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY` – ты можешь использовать любой публичный API по своему вкусу), преобразует её в коэффициент затемнения и отправляет JSON-пакет на твой MQTT-брокер. ```python #!/usr/bin/env python3 # moon_bulb_controller.py import requests import json import time import paho.mqtt.client as mqtt # --- Config ------------------------------------------------------------- MQTT_BROKER = "mqtt.local" # твой брокер MQTT_PORT = 1883 MQTT_TOPIC = "home/lights/moon" # подстрой под свой topic для лампочек # Замени на реальный API, который возвращает фазу Луны MOON_API_URL = "https://api.example.com/moon_phase" # Как затемнение соотносится с фазой (0 = новолуние, 1 = полнолуние) def phase_to_brightness(phase): # простая линейная зависимость: полнолуние = 100%, новолуние = 20% return 20 + phase * 80 # процент яркости # ----------------------------------------------------------------------- def get_moon_phase(): """Возвращает фазу Луны как число с плавающей точкой от 0.0 до 1.0 (0=новое, 0.5=половина, 1=полное).""" try: r = requests.get(MOON_API_URL, timeout=5) r.raise_for_status() data = r.json() # Ожидается {"phase": 0.23} – адаптируй, если твой API другой return float(data.get("phase", 0.0)) except Exception as e: print(f"Ошибка при получении фазы Луны: {e}") return 0.0 # fallback к новолунию def publish_brightness(client, brightness): payload = json.dumps({"brightness_pct": int(brightness)}) client.publish(MQTT_TOPIC, payload, qos=1) print(f"Опубликовано {payload} в {MQTT_TOPIC}") def main(): client = mqtt.Client() client.connect(MQTT_BROKER, MQTT_PORT, keepalive=60) client.loop_start() while True: phase = get_moon_phase() brightness = phase_to_brightness(phase) publish_brightness(client, brightness) # ждём 30 минут time.sleep(1800) client.loop_stop() client.disconnect() if __name__ == "__main__": main() ``` ### Как запустить: 1. Установи зависимости: `pip install requests paho-mqtt` 2. Отредактируй блок с настройками (config) вверху, указав свой брокер, topic и реальный API для фазы Луны. 3. Сохрани как `moon_bulb_controller.py` и запусти: `python3 moon_bulb_controller.py` Скрипт будет публиковать процент яркости каждые 30 минут. Когда лампочки получат это сообщение (большинство MQTT-мостов для умных лампочек ожидают поле `brightness_pct`), они будут затемняться или загораться в соответствии с фазой Луны. Как только ты убедишься, что освещение работает, просто скопируй этот цикл, снова получи фазу и отправь небольшое изменение температуры на API термостата или MQTT topic. Делай изменения небольшими – например, ±0.5 °C в полнолуние и наоборот в новолуние. Так система останется легкой и удобной для настройки. Наслаждайся космическим светом!
SmartDomik SmartDomik
Понятно, скелет чистый – здорово для быстрого прототипа. Только убедись, что тема MQTT совпадает с тем, что ожидает твой мост для ламп; некоторые требуют суффикса "/set" или другой ключ для полезной нагрузки. И еще, стоит добавить небольшой цикл повторных попыток для вызова API, чтобы не заспамить брокер, если сеть даст сбой. Как только освещение покажется подходящим, ту же схему можно использовать для небольшого изменения настроек термостата. Удачи в тестировании!