בקשת מידע | ימות המשיח VS אוטמציות בHome Assistant
-
@2580
בניתי משהו יש הרבה מה לשפץ אבל התחלה...
זה ישום בתוך HA
הקבצים צריכים להיות בנתיב config/custom_components שם צריך לפתוח תיקיה חדשה yemot_api ולהכניס לה את שתי הקבצים
הראשון- שם הקובץ צריך להיות- manifest.json{ "domain": "yemot_api", "name": "Yemot HaMashiach API Endpoint", "version": "1.0.0", "documentation": "https://www.home-assistant.io", "dependencies": ["http"], "codeowners": [], "requirements": [], "iot_class": "local_push" }וזה הקובץ השני- זה השם
__init__.pyוזה הקובץ
import logging import asyncio from aiohttp import web from homeassistant.core import HomeAssistant from homeassistant.components.http import HomeAssistantView DOMAIN = "yemot_api" async def async_setup(hass: HomeAssistant, config: dict) -> bool: hass.http.register_view(YemotApiView(hass)) return True class YemotApiView(HomeAssistantView): url = "/api/yemot/{token}/{entity_id}" extra_urls = ["/api/yemot/{token}/{entity_id}/{action}"] name = "api:yemot" requires_auth = False def __init__(self, hass: HomeAssistant): self.hass = hass async def get(self, request: web.Request, token: str, entity_id: str, action: str = None) -> web.Response: await request.read() return await self._process_request(token, entity_id, action) async def post(self, request: web.Request, token: str, entity_id: str, action: str = None) -> web.Response: await request.read() return await self._process_request(token, entity_id, action) async def _process_request(self, token: str, entity_id: str, action: str) -> web.Response: if token != "123456": return self._build_response("שגיאת הרשאה") domain = entity_id.split(".")[0] if action: try: await self.hass.services.async_call(domain, action, {"entity_id": entity_id}, blocking=True) await asyncio.sleep(2.5) new_state = self.hass.states.get(entity_id) if new_state: ans = self._translate_state(domain, new_state) return self._build_response(f"הפעולה בוצעה, והמכשיר כרגע {ans}") else: return self._build_response("הפעולה נשלחה אך לא ניתן לוודא את הסטטוס החדש") except Exception: return self._build_response("שגיאה בביצוע הפעולה") state = self.hass.states.get(entity_id) if not state: return self._build_response("המכשיר לא נמצא") ans = self._translate_state(domain, state) return self._build_response(f"הסטטוס כרגע {ans}") def _translate_state(self, domain: str, state_obj) -> str: st = str(state_obj.state) if st in ["unavailable", "unknown"]: return "לא זמין" if domain == "sensor": try: if '.' in st: st = str(round(float(st))) except ValueError: pass unit = str(state_obj.attributes.get("unit_of_measurement", "")).lower() if "c" in unit or "מעלות" in unit or "°" in unit: return f"{st} מעלות" elif "%" in unit: return f"{st} אחוזים" else: return st if st in ["on", "cool", "heat"]: return "דולק" elif st == "off": return "כבוי" elif st in ["locked", "lock"]: return "נעול" elif st in ["unlocked", "unlock"]: return "פתוח" else: return "במצב לא מוכר" def _build_response(self, text: str) -> web.Response: response_text = f"id_list_message=t-{text}&go_to_folder=/&" return web.Response(text=response_text, content_type="text/plain", charset="utf-8")שמתי את זה כקוד בגלל שעדיף להעתיק ןלהדביק מאשר לעלות את זה כקובץ ל HA בגלל שיכול להיות בעיות בקידוד,
כדאי לשנות את הסיסמה שמה,בימות אתה מכניס בשלוחה שתבחר בהגדרות,
type=api api_url_post=yes api_link=https://הכתובת שלך/api/yemot/הסיסמה שבחרת/lightאו כל התקן שתבחרזה מקבל את סטטוס של ההתקן,
בשביל להפעיל או לכבות התקנים, תוסיף בסוף אחרי שם ההתקן turn_off/ או להפעלה turn_on/
בהצלחה -
2 2580 סימן נושא זה כנפתר
-
2 2580 סימן נושא זה כנפתר
-
הכנסתי את זה ל- גיטהוב וכל ההגדרות דרך ממשק, בנוסף הוא מגדיר לבד את השלוחות בימות דרך HA וגם שולח התראות צינתוקים וטקסט מHA זה המאגר
https://github.com/meni123/ha-yemot -
הכנסתי את זה ל- גיטהוב וכל ההגדרות דרך ממשק, בנוסף הוא מגדיר לבד את השלוחות בימות דרך HA וגם שולח התראות צינתוקים וטקסט מHA זה המאגר
https://github.com/meni123/ha-yemot -
@מנדי
קצת הסתבכתי...
אלו 2 קבצים אותם יש לעלות לשרת?
ואיך אני מוצא את ההתקן שלי?
אשמח לתשובה!! -
-
@מנדי
קצת הסתבכתי...
אלו 2 קבצים אותם יש לעלות לשרת?
ואיך אני מוצא את ההתקן שלי?
אשמח לתשובה!!קצת הסתבכתי...
אלו 2 קבצים אותם יש לעלות לשרת?
ואיך אני מוצא את ההתקן שלי?
אשמח לתשובה!!אתה לא צריך לעלות אותם לשרת, יש דרך יותר פשוטה ומסודרת,
אם יש לך HACS אתה יכול להוסיף את המאגר הזה למאגרים מותאמים אישית, ובכל אופן ניתן לעלות את התיקה ha_yemot לנתיב הזה config/custom_components/ha_yemot/
זה המאגר https://github.com/meni123/ha-yemot -
קצת הסתבכתי...
אלו 2 קבצים אותם יש לעלות לשרת?
ואיך אני מוצא את ההתקן שלי?
אשמח לתשובה!!אתה לא צריך לעלות אותם לשרת, יש דרך יותר פשוטה ומסודרת,
אם יש לך HACS אתה יכול להוסיף את המאגר הזה למאגרים מותאמים אישית, ובכל אופן ניתן לעלות את התיקה ha_yemot לנתיב הזה config/custom_components/ha_yemot/
זה המאגר https://github.com/meni123/ha-yemot
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות