Connector
Koppel hardware zoals printers en toegangssystemen aan Tillor via de connector
De Tillor Connector is een lokale service die Tillor verbindt met fysieke apparaten in je park - zoals printers, toegangscontrollers en betaalterminals. De connector draait op een computer in je netwerk en communiceert via MQTT met de Tillor-cloud.
Hoe werkt de connector?
Tillor Cloud <-> MQTT <-> Connector (lokaal) <-> Printers / Toegangscontrollers / TerminalsDe connector fungeert als brug: Tillor stuurt opdrachten via het internet naar de connector, die deze vervolgens uitvoert op de aangesloten apparaten in je lokale netwerk.
Connector installeren
De connector wordt uitsluitend als Docker-image uitgeleverd (registry.tillor.dev/tillor-public/connector:latest). Er is geen afzonderlijk installatieprogramma; je draait hem op een toestel in het lokale netwerk van het park.
Vereisten
- Een computer of server in het lokale netwerk van het park (bijv. een Raspberry Pi, NAS of Linux-server)
- Stabiele internetverbinding
- Docker en Docker Compose geïnstalleerd
- Een API-sleutel (zie hieronder)
Gegevens die je nodig hebt
Haal eerst deze twee waarden op in Tillor voordat je de container start:
| Waarde | Waar te vinden | Gebruikt in |
|---|---|---|
Organisatie-ID (org_xxx) | zichtbaar in de URL (/orgs/org_xxx/...) of via de HTTP API | TILLOR_ORG_ID |
API-sleutel (tkn_xxx) | Instellingen > API-sleutels > API-sleutel aanmaken | TILLOR_API_TOKEN |
Waarom een API-sleutel?
De connector haalt MQTT-broker-gegevens op via de Tillor HTTP API en vernieuwt die automatisch voordat ze verlopen. Zie HTTP API voor hoe je een API-sleutel aanmaakt en beheert.
Poorten
De connector luistert standaard op de volgende poorten. De HTTP-poort is configureerbaar via HEALTH_CHECK_PORT (standaard 3000); de WebSocket-poort ligt vast.
| Poort | Protocol | Gebruik | Nodig wanneer |
|---|---|---|---|
3000 | HTTP | Status, health-check en printer-dashboard (zie HTTP-endpoints) | Altijd |
8765 | WS | WebSocket-server voor Osmond ID-scanners | Alleen bij Osmond-identiteitslezers |
Eenvoudige setup (één replica)
Maak een map aan, zet hierin een docker-compose.yml en een .env met je gegevens, en start de container. Deze setup gebruikt een file-cache op /shared/cache zodat de toegangscontrole-gegevens herstartpersistent zijn.
services:
connector:
image: registry.tillor.dev/tillor-public/connector:latest
container_name: tillor-connector
restart: always
environment:
CACHE_DIR: /shared/cache
ports:
- "3000:3000"
volumes:
- ./shared:/shared
env_file:
- .env
healthcheck:
test: ["CMD-SHELL", "curl -sSf http://localhost:${HEALTH_CHECK_PORT:-3000}/health -o /dev/null || exit 1"]
interval: 15s
timeout: 10s
retries: 5
start_period: 10s
security_opt:
- no-new-privileges:trueStart met: docker compose up -d.
Osmond-identiteitslezers erbij
Voeg "8765:8765" toe aan ports wanneer je Osmond-identiteitsscanners gebruikt. Zonder Osmond is deze poort niet nodig.
Geavanceerde setup (meerdere replicas met gedeelde cache)
Voor parken met veel verkeer of redundantie wil je meerdere connector-replicas draaien. In dat geval moeten ze een gedeelde cache delen, anders synchroniseren ze niet onderling. Een klein Valkey- of Redis-image voldoet:
services:
valkey:
image: valkey/valkey:7-alpine
container_name: tillor-valkey
restart: always
command: valkey-server --appendonly yes --dir /data
volumes:
- ./valkey:/data
healthcheck:
test: ["CMD", "valkey-cli", "ping"]
interval: 5s
timeout: 3s
retries: 3
connector:
image: registry.tillor.dev/tillor-public/connector:latest
restart: always
deploy:
replicas: 2
environment:
REDIS_URL: redis://valkey:6379
depends_on:
valkey:
condition: service_healthy
volumes:
- ./shared:/shared
env_file:
- .env
healthcheck:
test: ["CMD-SHELL", "curl -sSf http://localhost:${HEALTH_CHECK_PORT:-3000}/health -o /dev/null || exit 1"]
interval: 15s
timeout: 10s
retries: 5
start_period: 10s
security_opt:
- no-new-privileges:trueDNS in het lokale netwerk
Praat de connector printers of controllers aan op een lokale hostnaam (bijvoorbeeld printer.lokaal)? Pin dan de DNS-resolver expliciet via dns: [10.x.x.1, 10.x.x.2] op de connector-service, anders gebruikt Docker zijn eigen resolver en kan de hostnaam niet gevonden worden.
Omgevingsvariabelen
| Variabele | Verplicht | Beschrijving |
|---|---|---|
TILLOR_ORG_ID | ja | Organisatie-ID (org_xxx) |
TILLOR_API_URL | ja | Basis-URL van de Tillor API, meestal https://app.tillor.eu |
TILLOR_API_TOKEN | ja | API-sleutel (tkn_xxx) uit Instellingen > API-sleutels |
HEALTH_CHECK_PORT | nee | HTTP-poort voor status/health/printers (standaard 3000) |
REDIS_URL | nee | Gedeelde cache bij meerdere replicas. Laat leeg voor file-cache |
CACHE_DIR | nee | Map voor file-cache als REDIS_URL leeg is (standaard /tmp/tillor-connector-cache; aanbevolen /shared/cache met een volume voor persistentie) |
ACCESS_CONTROL_SECRET | nee | Alleen nodig voor Hikvision ANPR-camera's die rechtstreeks op de connector-URL posten |
JSON_LOGGING | nee | Zet op true voor JSON-logs (handig bij loglevering naar een aggregator) |
Verbinding controleren
Controleer na het starten of de connector bereikbaar en verbonden is:
- Open
http://[connector-host]:3000/healthin een browser of viacurl. Antwoord{"status":"ok",...}betekent verbonden;"degraded"betekent geen MQTT-verbinding. - Open
http://[connector-host]:3000/voor een JSON-overzicht met organisatie-ID, MQTT-status, cache-driver en synchronisatiestatus van toegangscontrole. - In Tillor zelf krijg je automatisch een melding ("Connector offline") wanneer de connector 5 minuten of langer geen heartbeat heeft gestuurd.
Automatische updates met Watchtower
Om de connector automatisch bij te werken (elke 15 seconden controleren op nieuwe images):
# docker-compose.watchtower.yml
services:
watchtower:
image: nickfedor/watchtower:latest
container_name: watchtower
environment:
- TZ=Europe/Brussels
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_REVIVE_STOPPED=false
- WATCHTOWER_ROLLING_RESTART=true
- WATCHTOWER_POLL_INTERVAL=15
- DOCKER_API_VERSION=1.43
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stoppedStart naast je connector: docker compose -f docker-compose.watchtower.yml up -d
HTTP-endpoints
De connector serveert een kleine HTTP-API op HEALTH_CHECK_PORT (standaard 3000). Deze is bedoeld voor health-checks van een load balancer en voor lokaal opzicht; er staan geen authenticatiegevoelige operaties op.
| Endpoint | Beschrijving |
|---|---|
GET / | JSON-status: organisatie-ID, container-hostname, uptime, cache-driver (redis of file), MQTT-verbindingsstatus, toegangscontrole-sync (lastSyncAt, unsyncedEntries) en Osmond WebSocket-status |
GET /health | 200 met status: "ok" als de connector draait en verbonden is met MQTT; status: "degraded" zonder MQTT |
GET /printers | HTML-dashboard met CUPS-queues, recente PDF-prints, thermische bonnen-prints en geheugengebruik. Auto-refresh elke 5 seconden. Handig om printproblemen snel te diagnosticeren |
Printerdashboard openen
Open http://[connector-host]:3000/printers in een browser om live te zien welke CUPS-queues geregistreerd zijn, welke jobs in de wacht staan, en welke prints zijn gefaald. Bij self-hosted setups vervangt dit de noodzaak om in te loggen op de container voor lpstat -p.
Gekoppelde apparaten
Via de connector kun je de volgende apparaten aansturen:
Printers
Zie de printer-documentatie voor het instellen en gebruiken van printers via de connector.
Toegangscontrollers
Slagbomen, poorten en andere toegangspunten worden gesynchroniseerd via de connector. Wijzigingen in toegangsregels in Tillor worden automatisch doorgezet naar de controllers.
Zie de controllers-documentatie voor meer informatie.
Betaalterminals
Betalingen via een gekoppelde betaalterminal verlopen ook via de connector. Tillor stuurt de betaalaanvraag naar de connector, die hem doorstuurt naar de terminal.
Problemen oplossen
Connector niet verbonden
- Controleer of de container draait:
docker compose ps. - Controleer de internetverbinding van de host.
- Haal
http://[connector-host]:3000/healthop; bij"degraded"is er geen MQTT-verbinding - controleerTILLOR_API_URLenTILLOR_API_TOKEN. - Verifieer dat de API-sleutel nog geldig is in Instellingen > API-sleutels.
- Bekijk de logs:
docker compose logs -f connector.
Opdrachten worden niet uitgevoerd
- Controleer de verbindingsstatus via
GET /. - Bekijk de logs:
docker compose logs -f connector. - Controleer of het betreffende apparaat (printer, controller, terminal) bereikbaar is in het lokale netwerk.
- Bij hostname-problemen: zie de DNS-tip bij de geavanceerde setup.