import requests import logging from homeassistant.core import HomeAssistant, ServiceCall from .const import DOMAIN _LOGGER = logging.getLogger(__name__) async def async_setup_services(hass: HomeAssistant): async def handle_send_message(call: ServiceCall): message = call.data.get("message") target_entity = call.data.get("recipient") targets = [] # 1. Fall: Broadcast an alle if target_entity == "all": entities = hass.states.async_all("sensor") for entity in entities: if entity.entity_id.startswith("sensor.whatsapp_"): targets.append(entity.attributes.get("phone_number")) # 2. Fall: Einzelne Entity ausgewählt else: state = hass.states.get(target_entity) if state: num = state.attributes.get("phone_number") if num: targets.append(num) else: # Fallback für manuelle Eingabe in YAML targets.append(target_entity) for num in targets: url = "http://866fd2eb-whatsapp-bridge:3000/send" try: await hass.async_add_executor_job( lambda: requests.post(url, json={"number": num, "message": message}, timeout=10) ) _LOGGER.info("Sent to %s", num) except Exception as e: _LOGGER.error("Error: %s", str(e)) hass.services.async_register(DOMAIN, "send_message", handle_send_message)