Alamos-MQTT Anbindung an Alarmiator - ERH

Nur hier kurz zur Info.

Die Kreisbrandinspektion Erlangen-Höchstadt bietet die Statusausleitung an Drittsysteme in naher Zukunft nur noch über die MQTT Schnittstelle von Alamos an.

Ein passendes Plugin für den Alarmiator ist in der Entwicklung.

Sobald die Anbindung auf unserem System läuft, folgt eine Anleitung über die erforderliche Installation und Konfiguration.

Hallo,

bei uns (Lkr. Haßberge) wir auch gerade auf Alamos umgestellt. Wie ist der Stand mit dem Plugin?

Wäre schön, wenn ich den aktuellen Stand vorab schon mal zum basteln/testen haben könnte.

Gruß Patrick

Hallo zusammen,

wir haben jetzt ein Plugin hierfür in der beta Version released. alarmiator/alarmiator - Docker Image

Wenn ihr Docker nutzt mit latest tag oder Versionstag des Release könnt ihr auf latest-beta umstellen, um das Image zu nutzen.

Viele Grüße

Edit: Falls jemand nativ unterwegs ist hier ein Weg wie man Sachen leicht aus dem latest-beta Docker Container kriegt:

docker create --name alarmiator-temp alarmiator/alarmiator:latest-beta

Das erstellt den Container ohne ihn aber zu starten.

docker cp alarmiator-temp://alarmiatorserver/plugins/inbound/alamos ./alamos-plugin

Kopiert den Ordner für z.B das Alamos Plugin aus dem Container auf dein lokales Filesystem.

docker rm alarmiator-temp

Damit kannst du den temp container wieder entfernen. Das ist generell für alles möglich.

Falls du nicht weißt wo der Ordner oder das File ist das du suchst musst du den Container starten:

docker run --rm -it --entrypoint /bin/bash alarmiator/alarmiator:latest-beta

Hiermit wird der Container gestartet, dir ein Bash Terminal aufgemacht indem du mit ls und cd suchen kannst. Tippst du dann exit um das Terminal zu verlassen wird dieser Container auch direkt wieder entfernt durch das –rm Flag.

Wir haben unseren Server gestern von KatSys auf den ALAMOS MQTT Connector umgestellt. Anbei unsere Konfig:

Hinweis: Die folgende Konfig wurde für einen Raspi unter DietPi erstellt.
Bei Installationen zB. auf einem vServer kann es erforderlich sein, die Konfig anzupassen.

/home/alarmiator/alarmiatorserver/docker-compose.yaml:

networks:
  alarmiator-network:
    name: alarmiator-network
    driver: bridge

services:
  alarmiator_service:
    networks:
      - alarmiator-network
    restart: always
    image: alarmiator/alarmiator:latest-beta
    healthcheck:
      test: curl --fail http://localhost:5000 || exit 1
      interval: 20s
      retries: 5
      start_period: 600s
      timeout: 10s
    volumes:
      - alarm-db:/alarmiatorserver/store
      - alarm-katsys-uploads:/alarmiatorserver/plugins/inbound/katsys/uploads
      - alarm-public-img:/alarmiatorserver/public/assets/img
      - alarm-uploads:/alarmiatorserver/uploads
      - alarm-logs:/alarmiatorserver/logs
      - alarm-backups:/alarmiatorserver/backup

  caddy:
    networks:
      - alarmiator-network
    image: vnxme/caddy:2.10
    restart: always
    depends_on:
      alarmiator_service:
        condition: service_healthy
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
      - "8883:8883"
    healthcheck:
      test: wget -q -O /dev/null http://localhost || exit 1
      interval: 20s
      retries: 5
      start_period: 15s
      timeout: 10s
    volumes:
      - /home/alarmiator/alarmiatorserver/caddy:/etc/caddy
      - caddy_data:/data
      - caddy_config:/config

  mosquitto:
    networks:
      - alarmiator-network
    restart: always
    image: eclipse-mosquitto:latest
    volumes:
      - /home/alarmiator/alarmiatorserver/mosquitto/config:/mosquitto/config
      - /home/alarmiator/alarmiatorserver/mosquitto/certs:/mosquitto/certs
      - /home/alarmiator/alarmiatorserver/mosquitto/data:/mosquitto/data
      - /home/alarmiator/alarmiatorserver/mosquitto/log:/mosquitto/log

volumes:
  alarm-db:
  alarm-katsys-uploads:
  alarm-public-img:
  alarm-uploads:
  alarm-logs:
  alarm-backups:
  caddy_data:
  caddy_config:

/home/alarmiator/alarmiatorserver/caddy/Caddyfile:

{
  email ${caddy_email}
  layer4 {
    :8883 {
      @dot tls sni ${caddy_domain}
      route @dot {
        tls
        proxy mosquitto:1883
      }
    }
  }
}

localhost:80 {
  respond 80
}

(proxy_options) {
  header_down Strict-Transport-Security "max-age=31536000"
  header_down Content-Security-Policy "upgrade-insecure-requests"
  header_down Referrer-Policy "strict-origin-when-cross-origin"
  header_down X-Content-Type-Options "nosniff"
  header_down Permissions-Policy "geolocation=(self \"https://${caddy_domain}\"), microphone=()"
}

${caddy_domain} {
  log {
    output file /etc/caddy/caddy.log
    format json
  }
  header {
    -Server
  }
  handle_path /api/* {
    reverse_proxy alarmiator_service:5010 {
      import proxy_options
    }
  }
  handle /socket.io/* {
    reverse_proxy alarmiator_service:5020 {
      import proxy_options
    }
  }
  handle /spaceport/socket.io/* {
    reverse_proxy alarmiator_service:5555 {
      import proxy_options
    }
  }
  handle {
    reverse_proxy alarmiator_service:5000 {
      import proxy_options
    }
  }
}

/home/alarmiator/alarmiatorserver/mosquitto/config/mosquitto.conf

plugin_load pwd /usr/lib/mosquitto_password_file.so
plugin_opt_password_file /mosquitto/config/passwd

plugin_load acl /usr/lib/mosquitto_acl_file.so
plugin_opt_acl_file /mosquitto/config/aclfile

# External listener configuration
listener 1883
listener_allow_anonymous false
plugin_use pwd
plugin_use acl

# Internal listener configuration
listener 1884
listener_allow_anonymous false
plugin_use pwd

# Persistence
persistence true
persistence_location /mosquitto/data/

# Logging
log_dest file /mosquitto/log/mosquitto.log
#log_type error
#log_type warning
#log_type notice
log_type information
#log_type subscribe
#log_type unsubscribe
#log_type all

/home/alarmiator/alarmiatorserver/mosquitto/config/aclfile

user statusausleitung
topic write alamos/alarmiator

user alarmiator
topic read alamos/alarmiator

/home/alarmiator/alarmiatorserver/mosquitto/config/passwd

alarmiator:$7$1000$0xhRdgLHXLeqgMYzSFTKbkOJi1VSbux3mS2ylDqIplpVVCjqkgwBrlmknH9roaFI3CsMZ3F8tS99mmSRcDnEhw==$ySuO02IltqVfYlTRq/4LXV1A3r8TSwCcbAu6YcKlcRNuRFfJbIpSBFkMq+Zv/zVWY4D7iiq4qy3gUzL/EvWVvA==
statusausleitung:$7$1000$qtrvMIlOtjZE/GD4x3juvylINcRs1CbIRUUzoeRqulv0Wtmy4BdXl05d1CbkzGTPjqMqFWcPNfcXm8SbGR5vlw==$Wy8poJaXCE5p55Cz93eNtHWlNk17rJaz00W4Ke5sWEd2AriZKn/N1BOaFA5yiRoVpzx4UaA88328ONeH4b3wXQ==

Der mosquitto ist etwas wählerisch mit den Dateirechten, folgende Anpassungen sind nötig in der Shell:

chown alarmiator:1883 /home/alarmiator/alarmiatorserver/mosquitto/config
chown alarmiator:1883 /home/alarmiator/alarmiatorserver/mosquitto/log
chmod 775 /home/alarmiator/alarmiatorserver/mosquitto/config
chmod 775 /home/alarmiator/alarmiatorserver/mosquitto/log
chown 1883:1883 /home/alarmiator/alarmiatorserver/mosquitto/config/aclfile
chmod 660 /home/alarmiator/alarmiatorserver/mosquitto/config/aclfile
chown 1883:1883 /home/alarmiator/alarmiatorserver/mosquitto/config/passwd
chmod 660 /home/alarmiator/alarmiatorserver/mosquitto/config/passwd

Das passwd File für Mosquitto definiert die User statusauslietung und alarmiator mit dem Default Passwort feuer. Um dieses zu ändern kann man folgenden Befehl in der Shell verwenden:

docker exec -it alarmiatorserver-mosquitto-1 /bin/su -l mosquitto -s /bin/sh -c "/usr/bin/mosquitto_passwd -b /mosquitto/config/passwd ${mqtt_user} ${mqtt_password}"

Wenn das Ganze gestartet wird, dann haben wir neben dem Alarmiator einen MQTT Broker laufen, der von außen per SSL über Port 8883 (Routerweiterleitung nicht vergessen) erreichbar ist. Der User statusausleitung kann in das Topic alamos/alarmiator schreiben, der User alarmiator kann das Topic lesen. Intern ist der Broker über Port 1883 erreichbar. In der Konfig ist auch der Port 1884 definiert, wo beide User lesen und schreiben können.

Im Alamos MQTT-Connector muss man folgende Werte eingeben:

  • Broker URL: mqtt://mosquitto
  • Broker Port: 1883
  • Username: alarmiator
  • Password: feuer (oder neu definiertes Passwort)
  • Topic: alamos/alarmiator

Im Container befinden sich die Parser im Verzeichnis

/alarmiatorserver/plugins/inbound/alamos/parsers

Einen Parser für die Statusausleitung der Kreisbrandinspektion ERH kann ich auf persönliche Nachricht gerne weitergeben.

Servus,
Ich bin im Bereich der ILS Nürnberg angesiedelt. Könntest du mir aber bei der allgemeinen Einrichtung Hilfe leisten, da bei uns KatSys zum 30.06 abgeschalten wird.

Hallo,

ein paar Nachrichten weiter oben im Thread ist beschrieben wie du an das neue Plugin kommst, welches für die Anbindung über die Alamos Schnittstelle gebraucht wird, welches ab nun von der ILS Nürnberg genutzt wird. Die einfachste Variante ist wieder via Docker. Hier musst du lediglich auf die beta umstellen, also das image in der docker-compose.yml ändern: Installation des Servers via Docker Compose (empfohlen) | ALARMiator Dokumentation Hier musst du statt image alarmiator/alarmiator einfach alarmiator/alarmiator:latest-beta schrieben. Steht auch in der Dokuseite nochmal zum copy-pasten.

Du musst dann statt dem Katsys-Plugin dieses Plugin nutzen. Für die eigentliche Anbindung Zugangsdaten usw musst du bei der TTB anfragen bzw. wer auch immer euer Katsys verwaltet wird hier der richtige Ansprechpartner sein. Mir wurde gesagt die Deadline bei uns ist der 30.11. Aber eventuell staffeln Sie hier auch die Umstellung stückweise.

Wenn du die beta version hast und das Plugin, musst du wie bei Whoopsadaisy beschrieben, den MQTT-Broker aufsetzen. Das ist bei ihm auch via docker gemacht also kannst du hier im Thread die config abschauen.

Hoffe das hilft dir.

Sag gerne Bescheid, falls es da Probleme gibt!

Die Zusatzalarmierung funktioniert dann über einen MQTT Export durch einen Alamos Server?

Sag’ mir wo Du Hilfe brauchst.

Prinzipiell steht das Wichtigste in meinem Post:

Neben dem Alarmiator musst Du noch einen MQTT Broker laufen lassen, an den Alamos den Alarm senden kann. Das Wichtigste dazu findest Du in meinem Post vom 17. April.

Da jede ILS den genauen Inhalt der Message “frei” definieren kann, müsste man mal sehen, was da ankommt und den Parser entsprechend anpassen.

Vielen Dank euch. Ich melde mich, falls Probleme vorliegen.

Vielen Dank.

Ich habe heute unseren Server von nginx auf Caddy umgestellt, um es problemlos darstellbar machen zu können.

Die Frage, die ich mir heute gemeinsam mit dem MA der ILS gestellt habe ist, ob bei euch die Stati der KFZ übermittelt werden, da es bei denen mit denen mit Divera Nutzern bisher nie geklappt hatte.

Falls es bei euch geht und ich Probleme haben sollte, würde ich mich melden. Oder wir schaffen es gemeinsam eine Lösung zu erarbeiten. Das würde mich freuen, wenn ich das Projekt auch ein wenig vorantrieben kann.

Grüße

Statusmeldungen, soweit sie von Alamos gesendet werden, können vom Alarmiator verarbeitet werden. Die Verarbeitung selbst muss im Parser implementiert sein/werden.