Ilmoitusten yleiskatsaus

Apua ilmoituksiin

Kaikki mitä tarvitset saadaksesi Notifierin toimimaan TeslaMatesi rinnalla, ja mitä tarkistat kun tapahtuma ei saavu.

Ennen kuin aloitat

Kolme asiaa, ja kaksi ensimmäistä on useimmilla TeslaMate-asennuksilla jo.

  • TeslaMate ja MQTT-välittäjä. Mosquitto tulee TeslaMaten oletus-Compose-tiedoston mukana.
  • Docker samalla koneella kuin TeslaMate, tai millä tahansa isännällä joka tavoittaa välittäjän.
  • Ulospäin lähtevä internetyhteys. Ei sisääntulevaa porttia, eikä TeslaMatesi tarvitse olla julkinen.

Asenna Notifier

TeslaMatesi ei tavoita puhelintasi itse, ja iOS-ilmoitus voi saapua vain Applen kautta. Notifier on se pieni kontti, joka seuraa MQTT:tä ja luovuttaa tapahtumat eteenpäin. Se on TeslaMaten rinnalla eikä koskaan avaa porttia.

  1. Hae tokenisi sovelluksesta

    Avaa HedgieMate, siirry kohtaan Asetukset, sitten Push-ilmoitukset, ja ota ilmoitukset käyttöön. Sovellus näyttää liitostokenin, joka alkaa hm_, ja palvelintunnuksen sille TeslaMate-palvelimelle, johon olet yhteydessä. Kopioi molemmat.

    Token liittää sovelluksen konttiin. Kohtele sitä kuin salasanaa.

  2. Lisää kontti Compose-tiedostoosi

    Avaa se docker-compose.yml, jolla ajat TeslaMatea, ja lisää alla oleva palvelu. Koska se on samassa tiedostossa, se jakaa verkon välittäjäsi kanssa, ja silloin MQTT_HOST on vain välittäjän palvelunimi.

    docker-compose.yml
    # add under services: in the docker-compose.yml you run TeslaMate from
      hedgiemate-notifier:
        image: hedgiemate/notifier:latest
        restart: unless-stopped
        depends_on:
          - mosquitto
        environment:
          HEDGIEMATE_USER_TOKEN: "hm_your_token_here"
          SERVER_ID: "your-server-uuid"
          MQTT_HOST: "mosquitto"
          MQTT_PORT: "1883"
          CAR_IDS: "1"
          LOG_LEVEL: "info"
        volumes:
          - hedgiemate-notifier-data:/data
    
    # and under the top-level volumes: key, adding it if the file has none
      hedgiemate-notifier-data:

    Levyosio on valinnainen. Se säilyttää autojen nimet uudelleenkäynnistyksen yli; ilman sitä relay täyttää nimen silti. Käytä nimettyä levyosiota bind mountin sijaan: kontti ajetaan muuna kuin root-käyttäjänä eikä voi kirjoittaa isäntähakemistoon, jonka Docker on luonut rootina.

  3. Käynnistä se

    Nosta uusi palvelu ylös. Muuta pinossasi ei tarvitse käynnistää uudelleen.

    Pääte
    docker compose up -d hedgiemate-notifier

    Lue sitten lokit. Onnistuneessa käynnistyksessä näkyy yhteys välittäjään ja ne autotunnukset, joita se seuraa.

    Pääte
    docker compose logs -f hedgiemate-notifier
  4. Vahvista sovelluksessa

    Sovellus merkitsee palvelimen yhdistetyksi muutamassa sekunnissa. Sen jälkeen kytket yksittäiset tapahtumat päälle tai pois autokohtaisesti.

    Mitään ei saavu ennen kuin auto todella vaihtaa tilaa. Johdon kiinnittäminen on nopein tapa nähdä ensimmäinen tapahtuma.

Ilman Composea

Jos TeslaMatea ei hallita Composella, docker run tekee saman. Osoita MQTT_HOST isäntään, jonka kontti tavoittaa.

Pääte
docker run -d \
  --name hedgiemate-notifier \
  --restart unless-stopped \
  -e HEDGIEMATE_USER_TOKEN="hm_your_token_here" \
  -e SERVER_ID="your-server-uuid" \
  -e MQTT_HOST="your-mqtt-host" \
  -e CAR_IDS="1" \
  hedgiemate/notifier:latest

Useampi kuin yksi TeslaMate

Aja yksi Notifier jokaisen palvelimen rinnalla. Sama liitostoken toimii kaikkialla. Palvelintunnus erottaa ne sovelluksessa.

Määritykset

Kaikki määritetään ympäristömuuttujilla. Kolme on pakollisia, muilla on toimivat oletukset.

Muuttuja Oletus Kuvaus
HEDGIEMATE_USER_TOKEN pakollinen ei mitään Liitostoken sovelluksesta. Alkaa hm_.
MQTT_HOST pakollinen ei mitään MQTT-välittäjän isäntänimi. Composen sisällä se on palvelunimi, useimmiten mosquitto.
SERVER_ID pakollinen ei mitään Palvelimen UUID sovelluksesta. Kontti käynnistyy ilmankin, mutta silloin sovelluksessa tehdyt palvelin- ja autokohtaiset asetukset ohitetaan.
MQTT_PORT 1883 Välittäjän portti.
MQTT_USERNAME ei mitään Välittäjän käyttäjänimi, jos omasi vaatii tunnistautumisen.
MQTT_PASSWORD ei mitään Välittäjän salasana.
MQTT_CLIENT_ID hedgiemate-notifier Asiakastunnus, jota käytetään välittäjää vasten. Vaihda se, jos jokin muu yhdistää jo samalla nimellä.
MQTT_TLS false Aseta arvoon true, jos välittäjä käyttää TLS:ää. Oletusportti siirtyy silloin arvoon 8883.
MQTT_NAMESPACE ei mitään Vastaa TeslaMaten MQTT_NAMESPACE-arvoa, jos olet asettanut sen. Aiheet muuttuvat muotoon teslamate<namespace>/cars/#.
CAR_IDS 1 Seurattavat autotunnukset pilkulla erotettuna, esimerkiksi 1,2. Jokainen auto saa oman tilakoneensa.
LOG_LEVEL info debug, info, warn tai error.
RELAY_URL https://push.hedgiemate.com Relayn endpoint. Tätä ei ole syytä muuttaa.

Kaikki tapahtumat

Jokainen rivi on oma autokohtainen kytkin sovelluksessa. Live-toimintojen päivitykset eivät ole ilmoituksia eivätkä ne ole tässä listassa.

Ilmoitus Lähetetään kun
Ajo
Ajo aloitettu state → driving
Ajo päättyi state leaves driving
Lataus
Lataus aloitettu charging_state → Charging
Lataus valmis charging_state → Complete
Lataus keskeytyi charging_state leaves Charging without Complete
Johto kiinni plugged_in → true
Johto irti plugged_in → false
Akku
Akku vähissä battery_level ≤ BATTERY_LOW_THRESHOLD
Lataustavoite saavutettu battery_level ≥ BATTERY_HIGH_THRESHOLD
Sijainti
Geoaidan sisään geofence set
Geoaidasta ulos geofence cleared or changed
Turvallisuus
Vartiotila tallentaa center_display_state = 7
Auto
Ohjelmistopäivitys update_available → true
Nukahtaa state → asleep pending
Nukkuu state → asleep
Heräsi state leaves asleep

Mitään ei saavu

Käy lista läpi ylhäältä alas. Useimmiten kyse on jostakin kolmesta ensimmäisestä.

Sovellus sanoo yhä, ettei palvelin ole yhdistetty

Tarkista komennolla docker compose ps, että kontti todella on käynnissä, ja lue sitten lokit. Väärä MQTT_HOST on tavallisin syy: Composen sisällä se on välittäjän palvelunimi, mosquitto, ei localhost.

Kontti on käynnissä, mutta yksikään tapahtuma ei laukea

CAR_IDS:n on vastattava TeslaMaten käyttämää autotunnusta. TeslaMate numeroi autot ykkösestä, ja usean auton kanssa listaat ne: CAR_IDS=1,2.

MQTT yhdistää ja loki pysyy hiljaisena

Jos asetit TeslaMateen MQTT_NAMESPACE-arvon, aseta sama arvo Notifieriin. Muuten aiheiden nimet eivät täsmää ja kontti odottaa ilman mitään luettavaa.

Jotkin tapahtumat saapuvat, toiset eivät koskaan

Jokainen tapahtuma on autokohtainen kytkin sovelluksessa. Avaa palvelin Asetuksissa ja katso kyseisen auton tapahtumalista.

Akkuilmoitukset eivät laukea koskaan

BATTERY_LOW_THRESHOLD ja BATTERY_HIGH_THRESHOLD ovat oletuksena 20 ja 90. Ne laukeavat kerran latausta kohti, joten auto joka ei ole ylittänyt rajaa latauksen alkamisen jälkeen ei lähetä yhtään.

Ilmoitukset lakkaavat parin päivän jälkeen

Varmista, että palvelulla on restart: unless-stopped, jotta se palaa isännän mukana. Katso sitten iOS:ää: keskittymistila tai sovelluksen ilmoitusasetukset voivat niellä ne.

Live-toiminnot eivät näy

Live-toiminnot on sallittava HedgieMatelle iOS:n asetuksissa, ja aktiivinen istunto on tarpeen. Dynamic Island vaatii iPhone 14 Pron tai uudemman.

Välittäjä vaatii kirjautumisen tai TLS:n

Aseta MQTT_USERNAME ja MQTT_PASSWORD. TLS:ää varten aseta MQTT_TLS arvoon true, mikä siirtää oletusportin arvoon 8883.

Haluat nähdä mitä se tekee

Aseta LOG_LEVEL arvoon debug, toista tilanne ja palauta se sitten. Debug-tasolla tulostuu jokainen MQTT-viesti ja jokainen siitä tehty päätös.

Kysymyksiä

Miksi tarvitsen Notifieria ylipäätään?

TeslaMatesi on omalla palvelimellasi eikä se tavoita puhelintasi, ja iOS-ilmoituksen voi toimittaa vain Apple. Notifier kattaa tuon aukon: se seuraa MQTT-aiheitasi, huomaa tilan muutoksen ja lähettää tapahtuman ulos toimitettavaksi.

Pitääkö TeslaMateni olla tavoitettavissa internetistä?

Ei. Notifier tekee vain ulospäin lähteviä yhteyksiä, joten mitään ei tarvitse avata eikä porttia ohjata, jotta ilmoitukset toimivat.

Mitä palvelimeltani oikeastaan lähtee?

Tapahtuman tyyppi, akun taso, lataustila ja geoaidan nimi, jos käytät geoaitoja. Koordinaatit ja ajetut reitit pysyvät TeslaMatessasi, eikä palvelimesi osoitetta koskaan lähetetä. Tapahtumatiedot poistetaan muutaman tunnin jälkeen.

Voiko se olla eri koneella kuin TeslaMate?

Kyllä, kunhan se tavoittaa MQTT-välittäjäsi. Aseta MQTT_HOST kyseiseen isäntään ja varmista, että välittäjän portti on sieltä tavoitettavissa.

Toimiiko se usean auton kanssa?

Kyllä. Listaa tunnukset CAR_IDS-muuttujaan, ja jokainen auto saa oman tilanseurantansa ja omat kytkimensä sovelluksessa.

Mitä tapahtuu, jos relay ei ole tavoitettavissa?

Kontti yrittää uudelleen muutaman kerran kasvavalla viiveellä ja pudottaa sitten kyseisen tapahtuman. Se jatkaa toimintaansa ja ottaa seuraavan tilan muutoksen normaalisti.

Tallentaako se mitään?

Vain autojen nimet, ja vain jos liität valinnaisen levyosion. Kaikki muu pidetään muistissa niin kauan kuin kontti on käynnissä.

Miten päivitän sen?

Hae vedos uudelleen ja luo palvelu uudestaan. Versiotiedot löytyvät GitHubin releases-sivulta.

Miten otan ilmoitukset pois käytöstä?

Kytke ne pois sovelluksessa tai pysäytä kontti. Molemmat toimivat erikseen, eikä mikään muu TeslaMate-pinossasi ole siitä riippuvainen.

Lähdekoodi

Notifier on Go MIT-lisenssillä. Lue se läpi, tai avaa issue jos jokin ei täsmää.

LukStankovic/hedgiemate-notifier

Docker-vedos hedgiemate/notifier:latest Docker Hub

Tarvitsetko apua?

Eikö asennus etene odotetusti? Autamme sinut mielellämme alkuun.