Soweit ich bisher gesehen habe, hat sich bei meiner Installation mit dem Update nichts sichtlich geändert und es treten auch keine Fehler auf.
Danke für die Rückmeldung - “es treten auch keine Fehler auf“ höre ich natürlich am liebsten!
Ich habe gestern die Version v1.7.0 in HACS online gestellt, mit folgenden Veränderungen:
- Verbesserung der Art und Weise, wie “Peilungen” (also die Kompass-Richtung zum Ereignis) behandelt werden. Dazu wurden zwei neue Attribute eingeführt, bearing_deg_geo und bearing_text_geo, die die geodätisch korrekte Peilung in Grad und als Text anzeigen. In früheren Versionen waren diese Werte in den Attributen bearing_deg und bearing_text gespeichert. JETZT enthalten die Attribute bearing_deg und bearing_text intuitive besser verständliche Werte, die die Peilung (in Grad und als Text) in einer Karten-korrekten Weise angeben. Für lokale Erdbeben spielt das keine Rolle. Der Unterschied wird erst dann wichtig, wenn Ereignisse über etwa 1/10 des Erdumfangs entfernt sind. Dann weicht die geodätisch korrekte Peilung (das ist die Richtung des kürzesten Weges zum Ereignis) signifikant von der als natürlich empfundenen Peilung ab. Zum Beispiel führt die kürzeste Entfernung von Europa in die Südsee über den Arktis, die Peilung wird also zB als Nord-Nord-Ost angegeben, obwohl die Südsee natürlich süd-östlich von Europa liegt. Man kennt das ja von Transatlantikflügen von Europa an die US-Ostküste - diese verlaufen auf kürzestem Weg, der Flugweg erscheint auf einer (flachen) Karte aber als Kurve, die zuerst in Richtung Island/Grönland zeigt. Die Peilung ändert sich wegen der Kugelgestalt der Erde bei einem solchen Flugweg also ständig. Ab Version v1.7.0 gibt das Attribut relative_location jetzt die geodätisch korrekte Peilung an, wenn das Ereignis unter 4000 km entfernt stattfindet, bzw die intuitivere karten-korrekte Peilung bei Ereignissen über 4000 km. Die Grosskreis-Peilung des kürzesten Weges wird jetzt immer in den Attributen bearing_deg_geo und bearing_text_geo angegeben (für die Nerds, denen das wichtig ist), die karten-korrekten Peilungen in bearing_deg und bearing_text. Für normale Benutzer ändert sich “sichtbar” nichts, ausser daß die Peilungen in in bearing_deg und bearing_text jetzt bei weit entfernten Erdbeben mehr Sinn ergeben.
- der Wortwahl des status Attributes wurde von “cleared“ auf “clear” verändert, um die Behandlung des Sensor-Status konsistenter zu machen. “Clear” ist der Sensor jetzt sowohl nach der Ersteinrichtung (also bevor das erste Erdbeben aufgezeichnet wurde), als auch nach dem automatischen Klären des Sensors nach der eingestellten Sensor-Lebensdauer.
- das README.md wurde entsprechend angepasst und verbessert
- kleinere Verbesserungen im Code
Wie immer bin ich für Rückmeldungen, Bugreports und Verbesserungsvorschläge dankbar!
Ne, läuft bei mir glaube ich echt gut. Muss wohl nur nochmal die Einstellungen durchgehen. Theoretisch hätte ja das Beben vom 08.05. auch auf der Karte von “Ioannina” auftauchen sollen!?
Muss ich mal die Kilometerangaben prüfen, die ich da hinterlegt habe.
Es freut mich wenn’s bei dir auch funktioniert ![]()
Ja, mit meinen Einstellungen habe ich seit Anfang Mai folgende Erdbeben in meinen “Ioannina”-Sensor (aus dem HA-Recorder ausgelesen):
| Zeitpunkt | Mag | Tiefe (km) | Nächste Stadt | Land | Distanz (km) | Richtung |
|---|---|---|---|---|---|---|
| 2026-05-11 01:35:14 | M2.5 | 8.6 km | Kozáni | Greece | 93.6 km | ENE |
| 2026-05-09 08:10:40 | M2.8 | 6.1 km | Ioánnina | Greece | 38.5 km | WNW |
| 2026-05-02 21:13:10 | M2.9 | 11.1 km | Agrínio | Greece | 84.6 km | SSE |
Die Einstellungen des Sensors sind folgendermassen:
Breitengrad des Referenzpunkts*: 39.67
Längengrad des Referenzpunkts*: 20.86
Radius um den Referenzpunkt (km): 125
Minimale lokale Magnitude: 2.5
Minimale Magnitude für globale Erdbeben*: 10
Wie bekommst Du das mit der Karte hin?
Mach eine Map-Karte, zB mit
type: map
entities:
- entity: zone.home
label_mode: icon
focus: false
- entity: sensor.letztes_erdbeben
label_mode: attribute
attribute: magnitude
default_zoom: 8
auto_fit: true
theme_mode: auto
wobei du bei sensor.xxx den Namen deiner Entität verwendest, wenn du sie anders benannt hast.
type: map
entities:
- sensor.athen
- sensor.ioannina
- sensor.kleidonia
hours_to_show: 0
default_zoom: 6
theme_mode: auto
grid_options:
columns: full
rows: 6
Und das Dashboard (da bastel ich noch… Die Anzeige aktiv/abgeklungen usw. läuft nicht rund)
- title: Erdbebenmonitor
path: erdbeben
subview: true
type: sections
max_columns: 2
sections:
- type: grid
column_span: 2
cards:
- type: heading
heading: Erdbebenmonitor — Griechenland
heading_style: title
icon: mdi:earthquake
- type: heading
heading: EMSC Live-Feed · 50 km Radius · Mag ≥ 2.5 lokal / 6.0 global
heading_style: subtitle
- type: grid
column_span: 1
cards:
- type: heading
heading: Epizentren — Letzte Ereignisse
heading_style: title
icon: mdi:map-marker-radius
- type: map
entities:
- sensor.athen
- sensor.ioannina
- sensor.kleidonia
hours_to_show: 0
default_zoom: 6
theme_mode: auto
grid_options:
columns: full
rows: 6
- type: grid
column_span: 1
cards:
- square: false
type: grid
columns: 2
cards:
- type: vertical-stack
cards:
- type: heading
heading: Globales Großereignis
heading_style: title
icon: mdi:earth
- type: markdown
content: >-
{%- set s = 'sensor.athen' -%}
{%- macro a(k, u='') -%}{{ (state_attr(s,k) ~ u) if
state_attr(s,k) not in [None,'none',''] else '–' }}{%-
endmacro -%}
{%- set status = state_attr(s, 'status') -%}
{% if state_attr(s, 'within_radius') == False %}
### M {{ states(s) }} {{ a('magtype') }}
| | |
|:---|:---|
| **Status** | {{ '🔴 Aktiv' if status == 'active' else '✅
Abgeklungen' }} |
| **Region** | {{ a('region') }} |
| **Land** | {{ a('country') }} |
| **Nächste Stadt** | {{ a('nearest_city') }} |
| **Tiefe** | {{ a('depth',' km') }} |
| **Koordinaten** | {{ a('latitude') }}° N, {{
a('longitude') }}° E |
| **Zeitpunkt** | {{ a('time') }} |
| **Aktualisiert** | {{ a('lastupdate') }} |
{% else %}
*Kein aktives globales Ereignis — alle regionalen Monitore
zeigen lokale Daten.*
{% endif %}
grid_options:
columns: 9
rows: 1
- type: vertical-stack
cards:
- type: heading
heading: Athen
heading_style: title
icon: mdi:city
- type: markdown
content: >-
{%- set s = 'sensor.athen' -%}
{%- macro a(k, u='') -%}{{ (state_attr(s,k) ~ u) if
state_attr(s,k) not in [None,'none',''] else '–' }}{%-
endmacro -%}
{%- set status = state_attr(s, 'status') -%}
{% if states(s) in ['unknown','unavailable','none'] %}
{% if status == 'cleared' %}
*✅ Letztes Ereignis abgeklungen — kein aktives lokales
Ereignis.*
{% else %}
*Warte auf erstes Ereignis...*
{% endif %}
{% elif state_attr(s, 'within_radius') == False %}
*Kein lokales Ereignis — letztes gespeichertes war global
(M {{ states(s) }}, {{ a('region') }}).*
{% else %}
### M {{ states(s) }} {{ a('magtype') }} ⚠️
| | |
|:---|:---|
| **Status** | {{ '🔴 Aktiv' if status == 'active' else '✅
Abgeklungen' }} |
| **Region** | {{ a('region') }} |
| **Land** | {{ a('country') }} |
| **Nächste Stadt** | {{ a('nearest_city') }} |
| **Tiefe** | {{ a('depth',' km') }} |
| **Entfernung** | {{ a('relative_location') }} |
| **Zeitpunkt** | {{ a('time') }} |
| **Aktualisiert** | {{ a('lastupdate') }} |
{% endif %}
grid_options:
columns: 9
rows: 1
card_mod:
style: >-
ha-card { min-height: 260px; height: auto; overflow:
visible; }
- type: vertical-stack
cards:
- type: heading
heading: Ioannina
heading_style: title
icon: mdi:city
- type: markdown
content: >-
{%- set s = 'sensor.ioannina' -%}
{%- macro a(k, u='') -%}{{ (state_attr(s,k) ~ u) if
state_attr(s,k) not in [None,'none',''] else '–' }}{%-
endmacro -%}
{%- set status = state_attr(s, 'status') -%}
{% if states(s) in ['unknown','unavailable','none'] %}
{% if status == 'cleared' %}
*✅ Letztes Ereignis abgeklungen — kein aktives lokales
Ereignis.*
{% else %}
*Warte auf erstes Ereignis...*
{% endif %}
{% elif state_attr(s, 'within_radius') == False %}
*Kein lokales Ereignis — letztes gespeichertes war global
(M {{ states(s) }}, {{ a('region') }}).*
{% else %}
### M {{ states(s) }} {{ a('magtype') }} ⚠️
| | |
|:---|:---|
| **Status** | {{ '🔴 Aktiv' if status == 'active' else '✅
Abgeklungen' }} |
| **Region** | {{ a('region') }} |
| **Land** | {{ a('country') }} |
| **Nächste Stadt** | {{ a('nearest_city') }} |
| **Tiefe** | {{ a('depth',' km') }} |
| **Entfernung** | {{ a('relative_location') }} |
| **Zeitpunkt** | {{ a('time') }} |
| **Aktualisiert** | {{ a('lastupdate') }} |
{% endif %}
grid_options:
columns: 9
rows: 1
card_mod:
style: >-
ha-card { min-height: 260px; height: auto; overflow:
visible; }
- type: vertical-stack
cards:
- type: heading
heading: Kleidonia / Konitsa
heading_style: title
icon: mdi:mountain
- type: markdown
content: >-
{%- set s = 'sensor.kleidonia' -%}
{%- macro a(k, u='') -%}{{ (state_attr(s,k) ~ u) if
state_attr(s,k) not in [None,'none',''] else '–' }}{%-
endmacro -%}
{%- set status = state_attr(s, 'status') -%}
{% if states(s) in ['unknown','unavailable','none'] %}
{% if status == 'cleared' %}
*✅ Letztes Ereignis abgeklungen — kein aktives lokales
Ereignis.*
{% else %}
*Warte auf erstes Ereignis...*
{% endif %}
{% elif state_attr(s, 'within_radius') == False %}
*Kein lokales Ereignis — letztes gespeichertes war global
(M {{ states(s) }}, {{ a('region') }}).*
{% else %}
### M {{ states(s) }} {{ a('magtype') }} ⚠️
| | |
|:---|:---|
| **Status** | {{ '🔴 Aktiv' if status == 'active' else '✅
Abgeklungen' }} |
| **Region** | {{ a('region') }} |
| **Land** | {{ a('country') }} |
| **Nächste Stadt** | {{ a('nearest_city') }} |
| **Tiefe** | {{ a('depth',' km') }} |
| **Entfernung** | {{ a('relative_location') }} |
| **Zeitpunkt** | {{ a('time') }} |
| **Aktualisiert** | {{ a('lastupdate') }} |
{% endif %}
grid_options:
columns: 9
rows: 1
card_mod:
style: >-
ha-card { min-height: 260px; height: auto; overflow:
visible; }
background:
opacity: 33
alignment: center
size: cover
repeat: no-repeat
attachment: fixed
image:
media_content_id: media-source://image_upload/34fe82ca0b4a85b3681e84c9d8098759
media_content_type: image/jpeg
metadata:
title: texture-1893783_1280.jpg
thumbnail: /api/image/serve/34fe82ca0b4a85b3681e84c9d8098759/256x256
media_class: image
children_media_class: null
navigateIds:
- {}
- media_content_type: app
media_content_id: media-source://image_upload
Version v1.7.5 ist raus. Das hat sich verändert:
-
Die Datenbasis für die Bestimmung des Epizentrum-Landes wurde verändert - es benutzt jetzt eine optimierte Version der “Marine Regions EEZ/land-union data”
von https://www.marineregions.org/ um auch Meeresregionen korrekt zu erfassen, die legal zu Ländern gehören. Die vorherige Version hatte diese Epizentren als “offshore” bezeichnet, auch wenn sie in nationalen Gewässern lagen -
kleine Verbesserungen im Code
-
verbessertes, erweitertes README.md
Für die nächste Version plane ich, die zugrunde liegende Logik noch weiter zu verbessern und ein neues Attribut einzuführen, das anzeigt ob ein Erdbeben auf Land oder im Meer war. Zusätzlich gibt diese Unterscheidung noch die Möglichkeit, grob das Potential für einen Tsunami abzuschätzen.
gleich noch eine kleine Verbesserung hinterher, in Version v1.7.6:
-
neues Attribut “offshore” hinzugefügt (nutzt Natural Earth Land-Polygone, von https://www.naturalearthdata.com/), das anzeigt ob das Epizentrum auf Land (offshore = false) oder im Meer (offshore = true) liegt
-
neues Attribut “tsunami_potential” hinzugefügt, das auf Grund der Magnitude, Tiefe und offshore-Status das Potential für einen Tsunami abschätzt (nur bei offshore-Erdbeben)
-
erweitertes README.md um die beiden neuen Attribute zu erklären
Ein Update auf v1.8.0 ist raus, mit zwei neuen Attributen zur Tektonik - die nächstliegende Plattengrenze (`nearest_tectonic_boundary`) und die Entfernung davon (`tectonic_boundary_distance_km`). Die Details sind ausführlich im Readme beschrieben.
Das verwendete Tektonik-Datenset ist von GitHub - fraxen/tectonicplates · GitHub mit einigen Optimierungen meinerseits.
Rückmeldungen, Fragen, Bugreports und Anregungen nehme ich wie immer sehr gern entgegen!
Jetzt ist nur die Frage warum der Monitor nie ein Update meldet ![]()
Aber als Feedback…Sackstark das Teil ![]()
Hab jetzt mal die Daten auf realistisch gesetzt, 3 Beben am Tag brauch ich dann auch nicht
Bei mir kam die Meldung in HA unter Updates, wie bei jeder anderer HACS-Integration aus.
Bei mir ist es das einzigste aus dem HACS was eben keine Meldung bringt ![]()
das scheint leider ein generelles Problem mit HACS zu sein - die Dokumentation von HACS sagt zwar, daß HACS “regelmässig” nach Updates sucht, aber ich habe auch für andere Integrationen gelesen daß sie erst verzögert angezeigt werden (zum Beispiel erst nach dem nächsten HA-Boot).
Was (für mich) immer geht ist ein manueller Check nach Updates: in HACS unter “Heruntergeladen” die Integration suchen, dann ganz rechts auf das “drei-Punkte”-Menü klicken und dort “Informationen aktualisieren” wählen.


