Ziel
Im Moment ist es Kata, Cyberangriffe und Datenexfiltration sind fast täglich, ich muss beruhigt sein, dass meine E-Mail-Adressen durchgesickert sind.
Daher habe ich diese HA-Karte erstellt:

Grundsatz
Es gibt mehrere Websites, die testen können, ob meine E-Mail-Adresse kompromittiert ist oder nicht.
Die Kompromittierung einer E-Mail-Adresse tritt auf, wenn die mit dieser E-Mail-Adresse verbundenen Informationen (wie Passwort, Kontakte oder personenbezogene Daten) unberechtigten Dritten zugänglich gemacht werden, in der Regel als Folge einer Datenschutzverletzung. Dies kann passieren, wenn Datenbanken von Online-Diensten gehackt werden und Benutzerinformationen gestohlen und dann in Foren oder Darknet-Sites veröffentlicht oder verkauft werden. Eine kompromittierte E-Mail-Adresse kann für Spam, Phishing-Angriffe oder den Zugriff auf andere mit dieser E-Mail-Adresse verknüpfte Konten verwendet werden, wodurch die Sicherheit und Vertraulichkeit des Nutzers gefährdet wird.
Die bekannteste Website von allen ist:
Aber diese Website bietet keine APIs mehr ohne Abonnement, ich habe nach einer anderen Lösung gesucht und die Website gefunden:
Diese Website bietet eine kostenpflichtige APIV2, hat aber ihre APIV1 online gelassen, sie ist leichter, aber sie reicht aus, um zu wissen, ob meine E-Mail kompromittiert ist und ob sie kompromittiert ist, wie viele Lecks es gibt. Diese API benötigt auch kein Authentifizierungstoken, so dass es viel einfacher ist.
Hier der Link zur API-Dok.:
Ich erstelle REST-Abfragen in sensors.yaml
Ich habe meine Konfigurationsdateien sehr klassisch in YAML-Dateien organisiert, die nach configuration.yaml aufgerufen werden.
sensor: !include rest.yaml
Die Aufforderung zur Einreichung von Vorschlägen ist in folgendem Format zu übermitteln:
https://leakcheck.io/api/public?check=monmail@mail.fr
Das Ergebnis ist im JSON-Format, z. B.:
{ "Erfolg": true, "found": 7, "Felder": [ "last_name", "country", "first_name", "username", "dob", "password", "city" ], "sources": [ { "name": "Deezer.com", "Datum": "2019-09" }, { "name": "Badoo.com", "Datum": "2013-07" } ] }
- found gibt die Anzahl der Kompromittierungen oder vielmehr die Anzahl der Hacker-Datenbanken an, die die E-Mail enthalten.
- Fields ist in diesem Stadium nutzlos
- Quellen gibt die Namen und Datenbanken der Kompromittierungen an, aber in der kostenlosen Version ist die Vollständigkeit offensichtlich nicht gegeben.
Hier ist der Code, den ich für eine Beispiel-E-Mail hinzufüge:
- Quelle: "https://leakcheck.io/api/public?check=demo46@mail.com" scan_interval: 86400 Sensoren: - name: "demo46@mail.com" einzigartig_id: Durchsickern_demo46_mail_com value_template: "{{ value_json.success }}" json_attributes: - found - Quellen
Ich benenne den erstellten Sensor um
Ich muss HA neu starten oder zumindest die Yaml-Konfig neu laden, und der Sensor kommt.

Ich bin immer wieder überrascht, dass die einzige _id nicht berücksichtigt wird, nichts Schlimmes, ich behebe sie manuell. Ich verwende sensor.fuite*, da es sich um eine Selbstentitätskarte handelt, die ich später verwenden werde.

Ich werde die Karte erstellen
Der Kodex ist ziemlich komplex, ich habe vom Kodex des Ausgezeichneten ausgegangen. Herveaurel für seine Batterien.
Folgendes habe ich im Konfigurationseditor hinzugefügt, um type einzurichten: custom:button-card und template: leak_card
button_card_templates: leak_card: Variablen: entity: '[[[ return entity.entity_id ]]]' entity: '[[[ return variable.entity ]]]' icon: | [[ return entity.state === "True"? "mdi:car-brake-alert": "mdi:shield-lock-outline" ]]] name: '[[[ return entity.attributes.friendly_name ]]]' Label: | [[ return entity.state === "True"? ¿Kompromiss<br>${entity.attributes.found} undicht: "Geschützt" ]]] show_icon: true show_state: false show_label: true template: - no_style - Schriftart tap_action: Maßnahme: more-info double_tap_action: Maßnahme: toggle custom_fields: Stange: Card: Typ: custom:bar-card entities: - entity: '[[[ return variable.entity ]]]' color: | [[ var state = entity.state; if (state === "True") { return "var(--card-red)"; } else { return "var(--card-green)"; } ]] Richtung: right positions: name: 'off'-Indikator: 'off' value: 'off' height: 50px width: 100% Icon: 'off' entity_row: True Styles: Card: - height: 40px - padding: 2px - Animation: blink 0.8s ease infinite icon: - Position: absolute - width: 25px - color: var(--orange) - left: calc(7%) - 5px) - margin-bottom: 2px name: - Position: absolut - font-size: 13px - color: var(--orange) - font-weight: 500 - left: calc(20%) - 15px) Label: - Position: absolut - font-size: 13px - color: | [[ var state = entity.state; if (state === "True") return "var(--red)" else return "var(--green)" ]]] - font-weight: 600 - width: 100% - text-align: center - left: calc(10%) + 70px) custom_fields: Stange: - top: '-19%' - left: '-50%' - width: 100% - Position: Absolut - z-index: 0 state: - value: 'False' Stile: Icon: - color: var(--green) name: - color: var(--green) card: - Animation: none - value: unknown styles: name: - color: var(--grey) label: - color: var(--grey) card: - Animation: blink 0.8s ease infinite - value: unavailable Stile: name: - color: var(--grey) label: - color: var(--grey) card: - Animation: blink 0.8s ease unendlich
Und hier ist der Code der Karte:
Typ: entities card_mod: Stil: | ha-card { background-color: var(--card-background-color); Border-Radius: var(--ha-card-border-radius)!wichtig; } entities: - Typ: custom:decluttering-card template: Header-Variablen: - name: E-Mail-Lecks - Icon: mdi:home-battery - Typ: custom:auto-entities card: Typ: entities show_header_toggle: true filter: include: - entity_id: sensor.fuite* Optionen: Typ: custom:button-card template: leak_card veröffentlicht: Methode: state numeric: true ignore_case: false ip: false show_empty: true
Und die fertige Karte erscheint

