Angelos Orfanakos

Σεισμολογικά δεδομένα Πανεπιστημίου Αθηνών στο Home Assistant

🇬🇷

Το παρόν άρθρο περιέχει οδηγίες για το πώς μπορούμε να έχουμε διαθέσιμα δεδομένα για τον πιο πρόσφατο σεισμό μιας περιοχής από το Εργαστήριο Σεισμολογίας του Πανεπιστημίου Αθηνών στο Home Assistant. Ως παράδειγμα τοποθεσίας χρησιμοποιείται η Σαντορίνη με ακτίνα 35 km.

Χρησιμοποιώντας το File editor Add-on, δημιουργούμε νέο φάκελο (directory) με όνομα packages (αν δεν υπάρχει ήδη) και μέσα του δημιουργούμε νέο αρχείο με όνομα earthquake_santorini.yaml και περιεχόμενο:

earthquake_santorini:
  rest:
    - resource_template: 'http://www.geophysics.geol.uoa.gr/stations/gmapv3_db/index.php'
      method: 'POST'
      payload: 'lang=en&outflag=csv&selmode=circle&CATDB=SC3DB&circlat=36.4102&circlon=25.3894&circrad=35&fromdepth=0&todepth=200&frommagn=3&tomagn=8&search=.csv'      headers:
        Content-Type: 'application/x-www-form-urlencoded'
      scan_interval: 3600
      sensor:
        - name: 'Santorini earthquake datetime'
          unique_id: earthquake_santorini_datetime
          device_class: 'timestamp'
          value_template: '{{ ((value.split("\n")[-2].split(",")[0].split(".")[0].strip() + "Z") | regex_replace(find="\s+", replace="T") | replace("/", "-") | as_datetime).isoformat() }}'
          
        - name: 'Santorini earthquake latitude'
          unique_id: earthquake_santorini_latitude
          unit_of_measurement: '°'
          value_template: '{{ value.split("\n")[-2].split(",")[1] | float }}'

        - name: 'Santorini earthquake longitude'
          unique_id: earthquake_santorini_longitude
          unit_of_measurement: '°'
          value_template: '{{ value.split("\n")[-2].split(",")[2] | float }}'
          
        - name: 'Santorini earthquake depth'
          unique_id: earthquake_santorini_depth
          device_class: 'distance'
          unit_of_measurement: 'km'
          value_template: '{{ value.split("\n")[-2].split(",")[3] | float }}'
          
        - name: 'Santorini earthquake magnitude'
          unique_id: earthquake_santorini_magnitude
          unit_of_measurement: 'richter'
          value_template: '{{ value.split("\n")[-2].split(",")[4] | float }}'
          
        - name: 'Santorini earthquake location'
          unique_id: earthquake_santorini_location
          value_template: '{{ value.split("\n")[-2].split(",")[5] }}'
          
        - name: 'Santorini earthquake distance'
          unique_id: earthquake_santorini_distance
          device_class: 'distance'
          unit_of_measurement: 'km'
          value_template: '{{ value.split("\n")[-2].split(",")[6] }}'

  template:
    sensor:
    - name: 'Santorini earthquake location coordinates'
      unique_id: earthquake_santorini_location_coordinates
      state: '{{ states("sensor.earthquake_santorini_magnitude") }}'
      attributes:
        latitude: '{{ states("sensor.earthquake_santorini_latitude") | float }}'
        longitude: '{{ states("sensor.earthquake_santorini_longitude") | float }}'

Η τιμή του payload στην πέμπτη γραμμή περιέχει τις παραμέτρους που ορίζουν τα δεδομένα που επιθυμούμε:

lang=en&outflag=csv&selmode=circle&CATDB=SC3DB&circlat=36.4102&circlon=25.3894&circrad=35&fromdepth=0&todepth=200&frommagn=4&tomagn=8&search=.csv

Πιο συγκεκριμένα:

  • lang — Γλώσσα κειμένου για τον σένσορα earthquake_santorini_location (en για αγγλικά, el για ελληνικά)
  • outflag — Μορφή δεδομένων (csv για CSV)
  • selmode — Ορισμός σχήματος περιοχής γύρω από την τοποθεσία ενδιαφέροντος (circle για κύκλο)
  • CATDB — Η βάση δεδομένων που χρησιμοποιείται (SC3DB για NKUA analysis)
  • circlat, circlon — Γεωγραφικό πλάτος και μήκος του στίγματος της τοποθεσίας ενδιαφέροντος
  • circrad — Η ακτίνα του κύκλου ενδιαφέροντος (σε km)
  • fromdepth — Ελάχιστο εστιακό βάθος σεισμού (σε km)
  • todepth — Μέγιστο εστιακό βάθος σεισμού (σε km)
  • frommag — Ελάχιστο μέγεθος σεισμού (σε Richter)
  • tomagn — Μέγιστο μέγεθος σεισμού (σε Richter)

Για να βρούμε τις κατάλληλες τιμές των παραμέτρων circlat και circlon μπορούμε να πάμε στο vouna.gr και να σημειώσουμε τις συντεταγμένες του στίγματος οι οποίες εμφανίζονται κάτω-αριστερά στον χάρτη καθώς κουνάμε το ποντίκι.

Τέλος, πάλι στο File editor Add-on, πηγαίνουμε ένα επίπεδο πίσω και ανοίγουμε το αρχείο configuration.yaml προσθέτοντας:

homeassistant:
  packages: !include_dir_merge_named packages

Κάνουμε επανεκκίνηση στο Home Assistant.

Αυτό θα έχει ως αποτέλεσμα να δημιουργηθούν οι ακόλουθοι σένσορες:

  • earthquake_santorini_datetime — Ημερομηνία και ώρα σεισμού (timestamp)
  • earthquake_santorini_latitude — Γεωγραφικό πλάτος επίκεντρου σεισμού σε μοίρες (float)
  • earthquake_santorini_longitude — Γεωγραφικό μήκος επίκεντρου σεισμού σε μοίρες (float)
  • earthquake_santorini_depth — Εστιακό βάθος σεισμού σε km (distance)
  • earthquake_santorini_magnitude — Μέγεθος σεισμού σε Richter (float)
  • earthquake_santorini_location — Περιγραφή τοποθεσίας σεισμού (string)
  • earthquake_santorini_distance — Απόσταση επίκεντρου σεισμού από το στίγμα τοποθεσίας σε km (distance)
  • earthquake_santorini_location_coordinates — Στίγμα επίκεντρου σεισμού για εμφάνιση σε χάρτη

Ακολουθεί παράδειγμα κάρτας σε dashboard:

type: vertical-stack
title: Santorini last earthquake
cards:
  - type: map
    entities:
      - entity: sensor.earthquake_santorini_location_coordinates
        label_mode: state
    theme_mode: auto
  - type: entities
    entities:
      - entity: sensor.earthquake_santorini_datetime
        name: When
      - entity: sensor.earthquake_santorini_distance
        name: Distance
      - entity: sensor.earthquake_santorini_depth
        name: Depth
        icon: mdi:arrow-up-down
      - entity: sensor.earthquake_santorini_location
        name: Location
    show_header_toggle: false

Και ένα ενδεικτικό αποτέλεσμα:

Home Assistant dashboard card