Home Assistant – שליחת התראות באמצעות Whatsapp

Home-Assistant Whatsapp

כמשתמש של מערכת Home-Assistant אחד הדברים שתמיד היו חסרים לי היא היכולת לקבל את ההתראות באפליקצית Whatsapp. נכון, לא חסרות אפליקציות המאפשרות את קבלת ההתראות בצורה נוחה כמו Pushbullet, Telegram ועוד אך היות ו Whatsapp נמצאת בשימוש יום יומי כמעט אצל כל אחד אני לא רואה סיבה להתקין אפליקציה אחרת רק בשביל קבלת התראות.

במדריך זה אסביר כיצד ניתן לשלוח התראות ממערכת Home-Assistant דרך אפליקציית ה Whatsapp מבלי שיהיה צורך בקו נוסף או כל "תחמון" אחד של האפליקציה. על מנת לעשות זאת נשתמש ב Twilio API ובאמצעות קומפוננטה ששכתבתי עבור Home-Assistant.

חלק א' – פתיחת חשבון ב Twilio:

על מנת לפתוח חשבון ב Twilio גשו תחילה לכתובת הבאה: https://www.twilio.com/ והרשמו לשירות על ידי לחיצה על Sign up בפינה הימנית עליונה:

רישום ל Twilio

מלאו את הפרטים, ולחצו על Get Started.

Twilio Signup account details

כעת תתבקשו להקיש את מספר הטלפון שלכם לצורך אימות, הקלידו אותו ולחצו על Verify:

Twilio Verify Phone Number

לאחר מספר רגעים תקבלו SMS עם קוד אימות אותו תתבקשו להקליד במסך הבא, הקלידו אותו ולחצו על Submit.

שלב ב' – הגדרת האפליקציה ב Twilio אשר תשמש לשליחת ההודעות

עשיו, לאחר שסיימנו את שלב פתיחת החשבון נקים ב Twilio את האפליקציה אשר תשמש אותנו לשליחת ההתראות. במסך הבא נראה את רשימת האפליקציות / שירותים אשר ניתנים לשימוש. במקרה שלנו נבחר ב Sms Chatbot:

Twilio Chatbot

כעת תנו לפרוייקט שם, לדוגמה Home-Assistant, ולחצו על Continue:

בשלב הבא תתבשו להזמין "חברי צוות" לפרוייקט, ניתן לדלג על השלב הזה על ידי לחיצה על Skip בתחתית המסך:

Twilio Invite Team Members

המסך הבא שנקבל יכיל FlowChart, אין לנו צורך בו. לחצו על Programmable SMS בצידו השמאלי של המסך:

Twilio Programmable SMS

כעת, לחצו על Whatsapp בצד שמאל של המסך:

כעת, תוצג לכם הודעה המסבירה אודות Whatsapp Sandbox ותתבקשו לאשר את תנאי השימוש של Whatsapp. סמנו את תיבת הסימון ולחצו על Confirm:

על מנת לסיים את הקמת ה Sandbox תתבקשו לשלוח הודעת Whatsapp אל המספר המופיע בחלון. ההודעה תכיל את הטקסט שגם הוא מופיע בחלון:

עם שליחת ההודעה תוכלו לראות שהמסך השתנה:

ובאפליקציית ה Whatsapp שלכם תקבלו הודעה חוזרת המאשרת את פעולת החיבור:

כאן סיימנו את פעולת הקמת החשבון.

חלק ג' – הגדרת השירות והקומפוננטה ב Home-Assistant

ועכשיו לחלק המעניין של המדריך, הגדרת השירות והנוויפיקציות ב Home-Assistant. אך לפני נתחיל עלייכם לוודא כי יש ברשותכם את ה Account Sid וכן את ה Auth Token של החשבון שלכם ב Twilio. על מנת לעשות זאת לחצו בצד שמאל למעלה על השם שלכם והכנסו להגדרת החשבון:

כעת לחצו על Console בתפריט העליון, אשר יוביל אתכם למסך בו תוכלו למצוא את הפרטים:

Wilio Auth and sid

רשמו אותם בצד.

כעת נגדיר את השירות והקומפוננטה במערכת ה Home-Assistant. על מנת לעשות זאת הוסיפו תחילה את הקוד הבא לקובץ ה configuration.yaml ושמרו.

twilio:
  account_sid: [your account sid]
  auth_token: [your account auth token]

כעת פתחו תיקיה בשם custom_components תחת תיקיית ההגדרות של Home Assistant ובתוכה צרו תיקיה נוספת בשם twilio_whatsapp. אמור להראות כך:

twilio whatsapp

כעת, צרו בתוך התיקיה קובץ בשם: notify.py, הדביקו פנימה את הטקסט הבא ושמרו אותו.

"""
Twilio Whatsapp platform for notify component.

For more details about this platform, please refer to the documentation at

"""
import logging

import voluptuous as vol

from homeassistant.components.twilio import DATA_TWILIO
import homeassistant.helpers.config_validation as cv
from homeassistant.components.notify import (
    ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService)

_LOGGER = logging.getLogger(__name__)
DEPENDENCIES = ["twilio"]


CONF_FROM_NUMBER = "from_number"

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
    vol.Required(CONF_FROM_NUMBER):
        vol.All(cv.string),
    
})


def get_service(hass, config, discovery_info=None):
    """Get the Twilio Whatsapp notification service."""
    return TwilioWhatsappNotificationService(
        hass.data[DATA_TWILIO], config[CONF_FROM_NUMBER])


class TwilioWhatsappNotificationService(BaseNotificationService):
    """Implement the notification service for the Twilio Whatsapp service."""

    def __init__(self, twilio_client, from_number):
        """Initialize the service."""
        self.client = twilio_client
        self.from_number = from_number

    def send_message(self, message="", **kwargs):
        """Send Whatsapp to specified target user cell."""
        targets = kwargs.get(ATTR_TARGET)

        if not targets:
            _LOGGER.info("At least 1 target is required")
            return

        for target in targets:
            self.client.messages.create(
                to='whatsapp:'+target, body=message, from_=self.from_number)
                
            

כעת, צרו בתיקיה 2 קבצים נוספים, האחד בשם

__init__.py

והשאירו אותו ריק מתוכן.
השני בשם manifest.json והדביקו לתוכו את התוכן הבא:

{
    "domain": "https://images.weserv.nl/?&maxage=120d&url=https://techblog.co.il/2019/01/easily-send-home-assistant-notifications-using-whatsapp/",
    "name": "twilio_whatsapp",
    "documentation": "https://images.weserv.nl/?&maxage=120d&url=https://techblog.co.il/2019/01/easily-send-home-assistant-notifications-using-whatsapp/",
    "dependencies": ["twilio"],
    "codeowners": ["@T0merr"],
    "requirements": []
  }

חזרו לקובץ ה configuration.yaml והוסיפו את הטקסט הבא:

notify:
  - name: Home-Assistant
    platform: twilio_whatsapp
    from_number: whatsapp:+[the number you sent the initial message to]

שמרו את הקובץ ואתחלו את Home-Assistant.

חלק ד' – בדיקת הנוטיפיקציות

כעת נבדוק שאכן ניתן לשלוח התראות מתוך מערכת Home-Assistant. לצורך כך היכנסו אליה ועברו למסך ה Services תחת כלי מפתח:

אתרו ברשימה את השירות שנקרא: notify.home_assistant ובחרו אותו:

כעת, תחת Service Data כתבו את הטקסט הבא:

{"message":"Home Assistant Test Notification","target":"[your phone number include country code]"}

ולחצו על Call Service. במידה והכל תקין תקבלו הודעת whatsapp במכשיר שלכם.

בהצלחה!

2 Trackbacks / Pingbacks

  1. Callmebot - שליחת התראות whatsapp מתוך Home-Assistant - Tech Blog
  2. Callmebot - שליחת התראות whatsapp מתוך Apple HomeKit - Tech Blog

Leave a Reply

כתובת האימייל שלך לא תפורסם


*