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.
-
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.
-
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.
-
Käynnistä se
Nosta uusi palvelu ylös. Muuta pinossasi ei tarvitse käynnistää uudelleen.
Päätedocker 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äätedocker compose logs -f hedgiemate-notifier
-
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.
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
Tarvitsetko apua?
Eikö asennus etene odotetusti? Autamme sinut mielellämme alkuun.