Baby Buddy Dashboard Plus | Projektvorstellung

Hallo zusammen! :waving_hand:

ich bin zu Beginn des Sommers zum ersten Mal Vater geworden und hatte mich kurz vor der Geburt schlau gemacht was andere junge Familien so Nutzen. Viele Apps sind unzureichend, kostenpflichtig und man weiß nie wohin die Daten abfließen. Deshalb also Self Hosted Baby Buddy (das hatte ich in einem von @simon42 Videos gesehen - eins darüber hat er leider noch nicht gemacht).

in diesem Zusammenhang wollte ich euch gerne mein kleines Projekt vorstellen, das bei uns aus dem Wunsch nach einem etwas umfangreicheren Dashboard für Baby Buddy entstanden ist:

:baby_bottle: Baby Buddy Dashboard Plus

Vorweg ganz wichtig: Das ist kein Ersatz für Baby Buddy, sondern ein Dashboard für die Nutzung in Home Assistant.

Baby Buddy bleibt die eigentliche Anwendung für die Erfassung und Speicherung von Mahlzeiten, Schlaf, Windeln, Medikamenten, Wachstum usw. Dashboard Plus verbindet sich per API mit Baby Buddy und zeigt diese Daten in Home Assistant an.

Ausgangspunkt war das originale Baby Buddy Dashboard, auf dessen Version 1.7.7 dieses Projekt aufbaut.

Das Original-Dashboard war für uns schon eine gute Basis, aber uns fehlten damals einige Bereiche, die Baby Buddy selbst längst konnte – zum Beispiel Medikamentengaben. Diese Funktion gibt es inzwischen auch im Original-Dashboard, war für mich aber einer der Auslöser, mich mit dem Projekt zu beschäftigen.

Daraus ist nach und nach Dashboard Plus geworden: mehr Auswertungen, bessere Anpassbarkeit und ein paar zusätzliche Funktionen, die nicht Teil von Baby Buddy selbst sind.

Was Plus zusätzlich bietet:

  • konfigurierbare Übersicht: Karten können ausgeblendet und sortiert werden
  • ausführlichere Auswertungen für Stillen, Fläschchen, Windeln, Schlaf, Temperatur und Bauchlage
  • rollierende, nicht überlappende 24-Stunden-Schlaffenster
  • eigener, tageweise durchblätterbarer Verlauf mit Bearbeiten und Löschen
  • Wachstumskurven für Gewicht, Größe, Kopfumfang und automatisch berechneten BMI
  • optionale WHO-Referenzkurven
  • Pflege-Tracker für Vollbad, Ganzkörperwäsche, Katzenwäsche, Nägel schneiden und eigene Kategorien
  • Aufgaben und einmalige Termine mit Uhrzeit und Erinnerungen
  • Benachrichtigungen über Home Assistant sowie optionale Sprachausgabe über Media Player
  • Windelgrößen- und Vorratsrechner mit Untergrenze, Erwartungswert, Obergrenze und Prognosedatum
  • Einstellungen für Sprache, 12-/24-Stunden-Format, Farbspektren sowie zeitgesteuerten Hell-/Dunkelmodus

Pflege, Aufgaben und Termine sind dabei echte Plus-Erweiterungen. Sie werden lokal im geschützten Datenbereich der Home-Assistant-App gespeichert und nicht an einen externen Dienst geschickt.

Installation:

  1. Home Assistant → Einstellungen → Apps → App-Store

  2. Menü → Repositories

  3. Dieses Repository hinzufügen:

    GitHub - Biggim22/baby-buddy-dashboard-plus: Modern dashboard for Baby Buddy — Home Assistant add-on with React + FastAPI · GitHub

Danach lässt sich Baby Buddy Dashboard Plus direkt installieren.

Repository, Screenshots und ausführliche Beschreibung:

Das Projekt ist ein unabhängiger Community-Fork und weder ein offizielles Baby-Buddy- noch ein offizielles Home-Assistant-Projekt.

Ich freue mich über Feedback, Ideen und natürlich auch über Hinweise auf Fehler. :slightly_smiling_face:
Bitte bei Issues keine API-Schlüssel, internen URLs oder persönliche Gesundheitsdaten posten.

Edit:
hier noch ein paar Screenshots

Hallo,

Ich habe mir auch das Baby Buddy Dashboard Plus Addon (App) eingerichtet, aber finde es aktuell noch ziemlich überladen und etwas zu umständlich für den Alltag Dinge zu dokumentieren.

Wie du auch @Schenkendorf, bin ich über Simons Videos auf Baby Buddy gestoßen und fade die Lösung mit den Buttons ganz praktisch.

Hast du schon mal versucht über Automationen Ereignisse zu tracken und z.B. den Timer zum füttern zu starten und zu stoppen? Und wie bekomme ich die Informationen über die Automation gefüllt (z.B. Flasche, Linke Brust, Menge etc.)

Schöne Grüße :blush:

Hi @Dennis8 ,

freut mich, dass meinen Addonfork mal ausprobierst - ich glaub du bist der Erste außer mir und meiner Frau, der das nutzt (zumindest von dem ich weiß). :smiley:

Ja das Addon ist im ersten Moment, wenn alles offen/an ist, ziemlich voll.
Das war so der Wunsch meiner Frau, dass alles gesurfaced wird/surfacebar ist, was auch in Baby Buddy selbst verfügbar ist an informationen, denn sie Anfangs als wir noch nur das orignale Baby Buddy Dashboard genutzt haben, das ich geforked habe, ständig auf das Webinterface von Baby Buddy gegangen um Dinge nachzuschauen. Man kann über die Einstellungszahnräder auf jeder Seite aber sehr viel (theoretisch alles - falls was nicht funktioniert bitte bescheid geben) ausblenden und umsortieren, was man nicht braucht.
So ist die Tummy Time zB ausgeblendet bei uns, weil wir das nicht tracken und Medikamente machen wir nur sichtbar, wenn wir grad welche geben.

Überhaupt ist die Struktur vom Dashboard maßgeblich von dem bestimmt, was meine Frau mir an Feedback gegeben hat.

Zum Tracken haben wir uns ein paar so IKEA Bilresa Matter switches geholt ( https://www.ikea.com/de/de/p/bilresa-set-mit-fernbedienung-dualschalter-versch-farben-90604166/ ) die ich dann mit Automationen versehen hab (hat so gesehen also nix mit dem Dashboard zu tun).
Für diese Automationen braucht man noch die Baby Buddy Integration aus dem HACS ( GitHub - jcgoette/baby_buddy_homeassistant: This custom integration provides sensors for Baby Buddy API endpoints. · GitHub ) um das eigentliche Baby Buddy ansprechen zu können (ich hab mein Baby Buddy übrigens nicht als Addon in HA laufen, sondern als LXC unter proxmox mit eigener IP - war stabiler für mich).

Hier sind zwei von diesen Automationen, mit denen ich Infos vom IKEA Button via HA nach Baby Buddy bekomme. Wenn du fragen hast her damit :slight_smile: :

alias: Bilresa rot - Baby Buddy Stillen
description: >-
  # Bilresa Rot – Baby Buddy


  ## 🤱 Stillen

  - **Große oder kleine Taste 1×:** Stilltimer starten

  - **Große Taste 2×:** Stilltimer beenden + **rechte Brust** speichern

  - **Kleine Taste 2×:** Stilltimer beenden + **linke Brust** speichern


  ## ⏱️ Halten

  - **Große Taste halten:** Keine Funktion

  - **Kleine Taste halten:** Keine Funktion


  ## 🌙 Nachtmodus (22:00–06:00 Uhr)

  - Vor Alexa-Sprachausgaben wird die Lautstärke des Echo Pop bei Bedarf
  automatisch auf **20 %** reduziert.
triggers:
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_1
    options:
      event_type:
        - multi_press_1
    id: Groß 1x
    alias: Groß 1x
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_1
    options:
      event_type:
        - multi_press_2
    id: Groß 2x
    alias: Groß 2x
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_1
    options:
      event_type:
        - long_press
    id: Groß halten
    alias: Groß halten
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_1
    options:
      event_type:
        - long_release
    id: Groß halten loslassen
    alias: Groß halten loslassen
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_2
    options:
      event_type:
        - multi_press_1
    id: Klein 1x
    alias: Klein 1x
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_2
    options:
      event_type:
        - multi_press_2
    id: Klein 2x
    alias: Klein 2x
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_2
    options:
      event_type:
        - long_press
    id: Klein halten
    alias: Klein halten
  - trigger: event.received
    target:
      entity_id: event.bilresa_rot_taste_2
    options:
      event_type:
        - long_release
    id: Klein halten loslassen
    alias: Klein halten loslassen
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Groß 1x
              - Klein 1x
        sequence:
          - action: babybuddy.start_timer
            metadata: {}
            target:
              device_id: 723fa9b1c8980c2cf8040cc4e5f0654e
            data:
              name: feeding
          - if:
              - condition: time
                after: '22:00:00'
                before: '06:00:00'
              - condition: media_player.is_volume
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                options:
                  behavior: all
                  threshold:
                    type: above
                    value:
                      active_choice: number
                      number: 29
            then:
              - action: media_player.volume_set
                metadata: {}
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                data:
                  volume_level: 0.2
            continue_on_error: true
            enabled: false
          - action: notify.alexa_media_echo_pop
            metadata: {}
            data:
              message: Stillen timer gestartet
      - conditions:
          - condition: trigger
            id:
              - Groß 2x
        sequence:
          - action: babybuddy.add_feeding
            metadata: {}
            target:
              device_id: 723fa9b1c8980c2cf8040cc4e5f0654e
            data:
              timer: true
              type: Breast milk
              method: Right breast
              notes: button red
          - if:
              - condition: time
                after: '22:00:00'
                before: '06:00:00'
              - condition: media_player.is_volume
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                options:
                  behavior: all
                  threshold:
                    type: above
                    value:
                      active_choice: number
                      number: 29
            then:
              - action: media_player.volume_set
                metadata: {}
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                data:
                  volume_level: 0.2
            continue_on_error: true
            enabled: false
          - action: notify.alexa_media_echo_pop
            metadata: {}
            data:
              message: Stillen timer gestoppt. Rechts.
      - conditions:
          - condition: trigger
            id:
              - Klein 2x
        sequence:
          - action: babybuddy.add_feeding
            metadata: {}
            target:
              device_id: 723fa9b1c8980c2cf8040cc4e5f0654e
            data:
              timer: true
              type: Breast milk
              method: Left breast
              notes: button red
          - if:
              - condition: time
                after: '22:00:00'
                before: '06:00:00'
              - condition: media_player.is_volume
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                options:
                  behavior: all
                  threshold:
                    type: above
                    value:
                      active_choice: number
                      number: 29
            then:
              - action: media_player.volume_set
                metadata: {}
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                data:
                  volume_level: 0.2
            continue_on_error: true
            enabled: false
          - action: notify.alexa_media_echo_pop
            metadata: {}
            data:
              message: Stillen timer gestoppt. Links.
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Klein 1x
        sequence: []
      - conditions:
          - condition: trigger
            id:
              - Groß halten
        sequence:
          - repeat:
              while:
                - condition: trigger
                  id:
                    - Groß halten
              sequence: []
      - conditions:
          - condition: trigger
            id:
              - Groß halten loslassen
        sequence: []
      - conditions:
          - condition: trigger
            id:
              - Klein halten
        sequence:
          - repeat:
              while:
                - condition: trigger
                  id:
                    - Klein halten
              sequence: []
      - conditions:
          - condition: trigger
            id:
              - Klein halten loslassen
        sequence: []
    enabled: false
mode: restart

alias: Bilresa beige - Baby Buddy
description: >-
  # Bilresa Beige – Baby Buddy


  ## 👶 Windeln

  - **Große Taste 2×:** Windel **nass + Stuhl** eintragen

  - **Kleine Taste 2×:** Windel **nass** eintragen


  ## 🔥 Wärmelampe

  - **Große Taste 1×:** Wärmelampe einschalten

  - **Kleine Taste 1×:** Wärmelampe ausschalten


  ## ⏱️ Halten

  - **Große Taste halten:** Keine Funktion

  - **Kleine Taste halten:** Keine Funktion


  ## 🌙 Nachtmodus (22:00–06:00 Uhr)

  - Vor Alexa-Sprachausgaben wird die Lautstärke des Echo Pop bei Bedarf
  automatisch auf **20 %** reduziert.
triggers:
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_1
    options:
      event_type:
        - multi_press_1
    id: Groß 1x
    alias: Groß 1x
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_1
    options:
      event_type:
        - multi_press_2
    id: Groß 2x
    alias: Groß 2x
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_1
    options:
      event_type:
        - long_press
    id: Groß halten
    alias: Groß halten
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_1
    options:
      event_type:
        - long_release
    id: Groß halten loslassen
    alias: Groß halten loslassen
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_2
    options:
      event_type:
        - multi_press_1
    id: Klein 1x
    alias: Klein 1x
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_2
    options:
      event_type:
        - multi_press_2
    id: Klein 2x
    alias: Klein 2x
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_2
    options:
      event_type:
        - long_press
    id: Klein halten
    alias: Klein halten
  - trigger: event.received
    target:
      entity_id: event.bilresa_beige_taste_2
    options:
      event_type:
        - long_release
    id: Klein halten loslassen
    alias: Klein halten loslassen
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Groß 1x
        sequence:
          - action: switch.turn_on
            metadata: {}
            target:
              entity_id: switch.plug_kinderzimmer_warmelampe
            data: {}
      - conditions:
          - condition: trigger
            id:
              - Groß 2x
        sequence:
          - action: babybuddy.add_diaper_change
            metadata: {}
            data:
              notes: Button
              type: Wet and Solid
            target:
              entity_id: sensor.karl_meinert_baby_karl_meinert
            enabled: true
          - if:
              - condition: time
                after: '22:00:00'
                before: '06:00:00'
              - condition: media_player.is_volume
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                options:
                  behavior: all
                  threshold:
                    type: above
                    value:
                      active_choice: number
                      number: 29
            then:
              - action: media_player.volume_set
                metadata: {}
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                data:
                  volume_level: 0.2
            continue_on_error: true
            enabled: false
          - action: notify.alexa_media_echo_pop
            metadata: {}
            data:
              message: beides eingetragen
      - conditions:
          - condition: trigger
            id:
              - Klein 1x
        sequence:
          - action: switch.turn_off
            metadata: {}
            target:
              entity_id: switch.plug_kinderzimmer_warmelampe
            data: {}
      - conditions:
          - condition: trigger
            id:
              - Klein 2x
        sequence:
          - action: babybuddy.add_diaper_change
            metadata: {}
            data:
              notes: Button
              type: Wet
            target:
              entity_id: sensor.karl_meinert_baby_karl_meinert
            enabled: true
          - if:
              - condition: time
                after: '22:00:00'
                before: '06:00:00'
              - condition: media_player.is_volume
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                options:
                  behavior: all
                  threshold:
                    type: above
                    value:
                      active_choice: number
                      number: 29
            then:
              - action: media_player.volume_set
                metadata: {}
                target:
                  device_id: d2786f52d7ba95e4851dfe4b0d83d93b
                data:
                  volume_level: 0.2
            continue_on_error: true
            enabled: false
          - action: notify.alexa_media_echo_pop
            metadata: {}
            data:
              message: nass eingetragen
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Groß halten
        sequence:
          - repeat:
              while:
                - condition: trigger
                  id:
                    - Groß halten
              sequence:
                - action: light.turn_on
                  metadata: {}
                  target:
                    entity_id: light.lampe_kinderzimmer_mond
                  data:
                    transition: 2
                    brightness_step_pct: 16.6
            enabled: false
          - action: light.turn_on
            metadata: {}
            target:
              entity_id:
                - light.kinderzimmer_lichterkette
                - light.lampe_kinderzimmer_mond
            data: {}
      - conditions:
          - condition: trigger
            id:
              - Groß halten loslassen
        sequence: []
      - conditions:
          - condition: trigger
            id:
              - Klein halten
        sequence:
          - repeat:
              while:
                - condition: trigger
                  id:
                    - Klein halten
              sequence:
                - action: light.turn_on
                  metadata: {}
                  target:
                    entity_id: light.lampe_kinderzimmer_mond
                  data:
                    transition: 2
                    brightness_step_pct: -16.6
            enabled: false
          - action: light.turn_off
            metadata: {}
            target:
              entity_id:
                - light.lampe_kinderzimmer_mond
                - light.kinderzimmer_lichterkette
            data: {}
      - conditions:
          - condition: trigger
            id:
              - Klein halten loslassen
        sequence:
          - repeat:
              while:
                - condition: trigger
                  id:
                    - Klein halten
              sequence: []
    enabled: true
mode: restart

Super, vielen Dank für deine Rückmeldung und vor allem für deine Beispiel-Automationen :blush:

Ich muss gestehen, dass ich Baby Buddy Dashboard nicht ausprobiert hatte und direkt mit deinem Addon gestartet bin. Daher habe ich keinen Vergleich, aber ich muss auf jeden Fall sagen, dass es mir persönlich optisch gut gefällt.

Ich möchte mir lediglich das Tracking erleichtern, so dass man nicht immer erst sein Handy schnappen muss um dann HA zu öffnen und im Dashboard den Timer zu starten. Daher hatte ich mir gestern auch bereits einen Sonoff 4-fach Button (Zigbee) bestellt, den man dann flexibel mitnehmen kann um die Automationen zu triggern. Dank deinem Beispiel weiß ich jetzt, wie ich das am besten aufbaue! :blush::+1:

Eine Frage hätte ich: habt ihr euch bewusst dazu entschieden, die Auswahl-Kategorien wenn man auf das „+“ drückt so dezent zu halten? Anfangs ist es mir gar nicht aufgefallen, dass da außer Füttern, Windel, etc. noch ganze Kategorien zur Auswahl stehen. Evtl würde es optisch hier helfen, die Feldumrandung etwas kräftiger und hervorhebender zu gestalten.

Hallo @Schenkendorf,

In deinem Baby Buddy Dashboard Plus können Termine eingetragen werden, an die man dann erinnert wird. Besteht die Möglichkeit diese Termine in einen vorhandenen Kalender CalDAV zu importieren bzw. die Termine aus einem Kalender in deine App zu übertragen?

Gruß Dennis

Hi,

ich hab dieses + Menü so vom Main Branch übernommen, fand es aber ganz gut so dezent, da wir es (zumindest nachts) im Dark Mode verwenden und da wollte ich möglichst wenig lichtquelle auf dem oled Screen haben will, wenn ich nachts was nachschaue.

Die Kalenderexport/import funktion schau ich mir an, ist ne gute Idee.

Grüße,
Max

Edit:
ich hab den ruhigen Sonntagmorgen genutzt und noch ein paar Updates fertig gemacht. Das mit dem Kalender läuft via Home Assistant und ist jetzt noch nicht vollständig getestet von mir, da ich bisher keinen privaten Kalender in HA integriert hab.
Außerdem hab ich ein paar Sachen fertig gemacht, die eh schon “auf Halde” lagen:
Kinderarzt-Bericht. Bei unserem Kinderarzt ist der Mobilfunkempfang non-existent, deshalb gibt es jetz ne Funktion, dass man für bestimmte Werte für einen bestimmten Zeitraum exportieren kann.
Abpumpen hab ich mir von einer anderen Baby Buddy Dashboard Fork abgeschaut und auch implementiert
Und die Option eine eigene Medikamentenliste anzulegen kam mit dem letzten Commit (2.4.4) dazu.

Hi @Schenkendorf,

ich hätte noch einen Wunsch. Könntest du auch noch das Abpumpen mit aufnehmen in die Funktionen?

Grüße :hugs:

Das mit dem Abpumpen gibt’s an sich schon aus ner andern Fork auf dem Auswertungstab in den Einstellungen lässt es sich aktivieren und dann auch tracken. Ist Designmäßig nicht schön gelöst, aber aktuell hab ich von der Arbeit her praktisch keine Zeit das Hübscher zu machen. Vielleicht setze ich da mal bei Zeiten eine AI drauf an.

Hi @Schenkendorf

ich bin gerade dabei dein Addon einzurichten und zu testen.
Gibt es aktuell eine Möglichkeit beim starten eines Timers für bspw. Füttern irgendwo die Methode und die Art gleich mit zu hinterlegen? Oder ist das aktuell nur über die Bearbeitung des Ereignisses möglich?

So funktioniert Baby Buddy selbst leider nicht. Ich werd es mir mal als food for thought hinterlegen, aber als ich den selben Gedanken vor ein paar Monaten hatte kam ich auf keine Lösung. Für uns hab ich das mit den Bilresa Buttons gelöst (siehe weiter oben im Thread) die beim beenden gleich die Info mitgeben.