Kuhjunge | Mit Kuh Berta & Co.
31. Oktober 2023

Ritto Twinbus 7630 smart in Home Assistant einbinden

Gepostet am 31. Oktober 2023  •  5 Minuten  • 880 Wörter

Da mein Schreibtisch in unserer Wohnung gerade umgezogen ist, konnte ich in letzter Zeit die Türklingel nicht mehr hören. Um dieses Problem zu lösen, habe ich geschaut, wie man die Klingel irgendwie erweitern kann, sodass ich sie auch im hinterletzten Raum höre. Ich fand keine richtig zufriedenstellende Lösung, also schaute ich, wie man die Türklingel vielleicht smart machen könnte.

Die Hardware

Nachdem ich mir in ein paar Foren angeschaut habe, wie andere das Problem gelöst haben, kam ich relativ schnell auf die Idee den „Shelly Uni“ Chip zu nutzen, um unser Wohntelefon smart zu machen. Ich machte mich also auf die Suche nach Schaltplänen für den Ritto Twinbus 7630, der bei uns erst vor kurzem montiert wurde. Auf der Seite von deh0511 wurde ich fündig. Danach prüfte ich die Angaben mit einem Multimeter und meinem Elektriker-Bruder. Anschließend machte ich einen Plan, wie ich den Shelly Uni an das Telefon installieren wollte:

Ritto Twinbus 7630 Schaltplan

Hier die Bezeichnung für die markierten Anschlusspunkte:

  1. GND
  2. Hier liegt 5V DC an, wenn jemand klingelt (egal ob draußen oder vor der Wohnungstür)
  3. +24V DC (Busspannung)
  4. Etagentaster – hier fällt die Spannung ab, wenn jemand vor der Wohnungstür klingelt
  5. Türöffner (draußen) -> Türöffner wird aktiviert, wenn dieser Anschluss auf Ground geschaltet wird.
  6. GND

Der Shelly Uni bezieht seine Spannung von 1 & 3 und hat so genug Energie zum Arbeiten. An 2 habe ich einen der Inputs angeschlossen, um ein Klingeln zu erkennen. Den zweiten Input habe ich an 4 angeschlossen, um unterscheiden zu können, wo geklingelt wird, da hier die Spannung abfällt, wenn vor der Wohnungstür geklingelt wird. Anschließend habe ich einen der Outputs des Shellys an 5 und 6 angeschlossen. Zwischen 4 & 5 läge noch ein Pin um das Licht zu schalten, aber der ist zu mindest bei uns ohne Funktion.

Die Software

Nachdem ich den Shelly erfolgreich angeschlossen hatte, konnte ich auch schon das offene WLAN vom Chip finden und ihn dort konfigurieren. Da die direkte Integration in Home Assistant Schwierigkeiten bei mir machte, konfigurierte ich den Shelly so, dass er stattdessen mit meinem MQTT-Server kommunizierte. Dazu setzte ich den Button Type in den beiden Channels des Shelly auf „Detached Switch“ damit der Shelly nicht jeden beim Klingen hereinlässt.

Nachdem ich den Shelly mithilfe von MQTT (über den MQTT Explorer ) sehen konnte, habe ich Home Assistant konfiguriert.

MQTT Server Topics

Ich habe einmal MQTT-Sensoren definiert, die die beiden Inputs vom Shelly lesen. Dazu habe ich zwei Shell Commands definiert, die den Shelly direkt schalten. Ich habe mir dazu einen HTML 5 Popup Alarm gebaut. Leider kam mir dieser immer zu spät und war auch im „nur vibrieren“ Modus, in dem ich mein Smartphone meistens habe, nicht zu hören. Deshalb bin ich auf die Home Assistant Android App gewechselt und habe mir dort einen richtigen Alarm definiert. Dieser löst aber nur aus, wenn ich auch wirklich zu Hause bin. Ansonsten gibt es nur eine Benachrichtigung. Dazu habe ich in den Popups auch eine Aktion definiert, um die Außentür direkt vom Popup auf dem Smartphone aus zu öffnen.

Home Assistant Konfiguration

Hier ein Konfigurationsauszug der relevanten Einstellungen:

mqtt:
  sensor:
    - name: "Tuerklingel"
      state_topic: "shellies/shellyuni-3XXXXXXXXX/input/0"
      unit_of_measurement: ""
    - name: "Tuerklingel Intern"
      state_topic: "shellies/shellyuni-3XXXXXXXXX/input/1"
      unit_of_measurement: ""
input_boolean:
  is_ringbell_inside:
    name: IsRingbellInside
    initial: off
  is_door_buzzing:
    name: IsDoorBuzzing
    initial: off
shell_command:
 doorbell_on: curl http://192.168.XXX.XXX/relay/1?turn=on
 doorbell_off: curl http://192.168.XXX.XXX/relay/1?turn=off
automation:
  - id: autotelegram_ringbellnotify
    alias: Autotele Tuerklingel
    description: Die Tuer hat geklingelt
    trigger:
      platform: state
      entity_id: sensor.tuerklingel
      to: '1'
    action:
      service: script.turn_on
      entity_id: script.ringbell
  - id: ringbell-opendoor
    alias: Tür geklingelt - öffnen
    description: Türklingel - warte auf Antwort
    trigger:
      platform: event
      event_type: mobile_app_notification_action
      event_data:
        action: opendoor
    action:
      service: script.turn_on
      entity_id: script.doorbuzzer
  - id: ringbell-opendoor-htmlpopup
    alias: HTML5 push notification action button clicked
    trigger:
      platform: event
      event_type: html5_notification.clicked
      event_data:
        action: open_door
    action:
      service: script.turn_on
      entity_id: script.doorbuzzer
  - id: ringbell-internal-notify
    alias: Marker Tuerklingel Intern
    description: Die Tuer hat geklingelt
    trigger:
      platform: state
      entity_id: sensor.tuerklingel_intern
      to: '0'
    action:
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.is_ringbell_inside
script:
  openDoorBuzzer:
    alias: doorbuzzer2
    description: Oeffnet die Aussentuer
    sequence:
    - service: shell_command.doorbell_on
    - delay: 00:00:07
    - service: shell_command.doorbell_off
    mode: single
  doorbuzzer:
    alias: doorbuzzer
    sequence:
    - service: shell_command.doorbell_on
      data: {}
    - service: input_boolean.turn_on
      data:
        entity_id: input_boolean.is_door_buzzing
    - delay:
        hours: 0
        minutes: 0
        seconds: 0
        milliseconds: 500
    - service: shell_command.doorbell_off
      data: {}
    - delay: 00:00:03
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.is_door_buzzing
    mode: queued
    icon: mdi:door
  ringbell:
    alias: ringbell
    sequence:
    - if:
      - condition: and
        conditions:
        - condition: time
          after: 06:00:00
          before: '22:00:00'
        - condition: state
          entity_id: device_tracker.android
          state: home
      then:
      - service: notify.mobile_app_fp4
        data:
          message: Türklingel
          data:
            actions:
            - action: opendoor
              title: Öffne Tür
            name: ringbell
            ttl: 0
            priority: high
            channel: alarm_stream
            vibrationPattern: 100, 1000, 100, 1000, 100
            notification_icon: mdi:door
      else:
      - service: notify.mobile_app_fp4
        data:
          message: Türklingel {% if is_state("input_boolean.is_ringbell_inside",'on')%}
            drinnen! {% endif %}
          data:
            actions:
            - action: opendoor
              title: Öffne Tür
            name: ringbell
            ttl: 0
            priority: high
            channel: door
            vibrationPattern: 100, 1000, 100, 1000, 100
            notification_icon: mdi:door
    - delay: 00:00:01
    - service: notify.notifyHtml5
      data:
        message: Türklingel {% if is_state("input_boolean.is_ringbell_inside",'on')%}
          drinnen! {% endif %}
        data:
          ttl: 0
          priority: high
          actions:
          - action: open_door
            title: Öffne Tür
    - service: input_boolean.turn_off
      data:
        entity_id: input_boolean.is_ringbell_inside
    mode: queued
    icon: mdi:door

Bisher funktioniert das so wunderbar. Ich habe mir auch in der Home Assistant UI ein Shortcut gelegt, um den Türöffner auch von dort auslösen zu können. Unsere Wohnungstür bleibt aber erstmal noch unangetastet und muss weiter händisch geöffnet werden - zu mindest vorläufig.

Social Media

Ich bin auf Social Media eher lesend unterwegs, folgen kann man mir trotzdem.