Hauptmenü

Feuersoftware

Begonnen von Johannes B., 08 Januar 2024, 01:08:39

Vorheriges Thema - Nächstes Thema

Johannes B.

Hallo,
ich bin in der freiwilligen Feuerwehr und wir haben kürzlich die Feuersoftware Zusatzalarmierung bekommen. Hier kann man Webhooks einrichten um zum Beispiel Einsatzstichwort oder Meldebild abzufragen.
Nun zu meinem Problem... Auch nach mehreren Tagen und Wochen einlesen und rumprobieren bekomme ich die Webhooks einfach nicht zum laufen. Fester Token ist vergeben und portfreigabe ist auch eingerichtet.
Hat von euch schon jemand sowas realisiert?

Guybrush

Du solltest auch posten was du gemacht hast. Also Raw Definition der entsprechenden Devices. Ohne konkretes Beispiel wird die vermutlich niemand helfen können  ::)

Felix_86

Hallo Johannes,
bei einem Kumpel hatten wir die Feuersoftware auch mal an FHEM angebunden und dann die Lichter geschaltet und die Tür entriegelt. Ich kann mal schauen, ob ich dazu noch eine Config habe.
Grüße von Felix

Pi3, Raspbian 11, FHEM 6.2, ca 320 Device
SIGNALduino (TCM, TX, IT, SD_GT), CUL (EM, FS20, HMS), JeeLink (PCA301), HUEBridge, HUEDevice, mailcheck, echodevice, alexa, TelegramBot, Weather (OWM), DWD_OpenData, FRITZBOX, TabletUI, Calendar, Abfall, Vitoconnect, LGTV_WebOS

Johannes B.

#3
Zitat von: Guybrush am 08 Januar 2024, 01:33:37Du solltest auch posten was du gemacht hast. Also Raw Definition der entsprechenden Devices. Ohne konkretes Beispiel wird die vermutlich niemand helfen können  ::)

Das passiert wenn man einen Post zwischen Tür und Angel schreibt ;)

Hier mal eine kleine Übersicht:

Dummy, welches mir die Daten anzeigt
define Einsatz_Info dummy
attr Einsatz_Info alias Einsatz Info
attr Einsatz_Info readingList Einsatzstichwort Standort Sachverhalt Adresse Status
attr Einsatz_Info room Test
attr Einsatz_Info stateFormat Standort Einsatzstichwort Sachverhalt Adresse
#   CFGFN     
#   FUUID      659aceee-f33f-6ea1-7047-1458c560355c4736
#   NAME       Einsatz_Info
#   NR         429
#   STATE      Test4 Test2 Test3 Test1
#   TYPE       dummy
#   eventCount 44
#   OLDREADINGS:
#   READINGS:
#     2024-01-12 10:42:35   Adresse         Test1
#     2024-01-12 10:42:35   Einsatzstichwort Test2
#     2024-01-12 10:42:35   Sachverhalt     Test3
#     2024-01-12 10:42:35   Standort        Test4
#     2024-01-12 11:41:46   Status          Komme
#   hmccu:
#
setstate Einsatz_Info Test4 Test2 Test3 Test1
setstate Einsatz_Info 2024-01-12 10:42:35 Adresse Test1
setstate Einsatz_Info 2024-01-12 10:42:35 Einsatzstichwort Test2
setstate Einsatz_Info 2024-01-12 10:42:35 Sachverhalt Test3
setstate Einsatz_Info 2024-01-12 10:42:35 Standort Test4
setstate Einsatz_Info 2024-01-12 11:41:46 Status Komme


Hier WEBhook definiert
define WEBhook FHEMWEB 1121 global
attr WEBhook HTTPS 1
attr WEBhook csrfToken XXXXXXXXXXXXXXXXX
attr WEBhook hiddenroom (ALLE)
attr WEBhook room Test
#   BYTES_READ 114776
#   BYTES_WRITTEN 1454634
#   CFGFN     
#   CONNECTS   790
#   CSRFTOKEN  XXXXXXXXXXXXXXX
#   DEF        1121 global
#   FD         74
#   FUUID      659ad365-f33f-6ea1-1858-02e5b9e479d4448c
#   NAME       WEBhook
#   NR         430
#   NTFY_ORDER 50-WEBhook
#   PORT       1121
#   SSL        1
#   STATE      Initialized
#   TYPE       FHEMWEB
#   READINGS:
#     2024-01-12 11:23:51   state           Initialized
#   hmccu:
#
setstate WEBhook 2024-01-12 11:23:51 state Initialized


Und hier das allowed Device

define allowedWEBhook allowed
attr allowedWEBhook allowedCommands set
attr allowedWEBhook allowedDevices Einsatz_Info
attr allowedWEBhook basicAuth (Zahlen und Buchstabenkombination, wird selbstständig erstellt, wenn Benutzer und Passwort bei set eingetragen wird)
attr allowedWEBhook room Test
attr allowedWEBhook validFor WEBhook
#   CFGFN     
#   FUUID      659ad751-f33f-6ea1-3306-7700204be8bf009c
#   NAME       allowedWEBhook
#   NR         431
#   STATE      validFor:WEBhook
#   TYPE       allowed
#   eventCount 5
#   READINGS:
#     2024-01-07 17:54:57   state           validFor:WEBhook
#   hmccu:
#
setstate allowedWEBhook validFor:WEBhook
setstate allowedWEBhook 2024-01-07 17:54:57 state validFor:WEBhook


Ein Fehler habe ich schon mal gefunden, das meine Portfreigabe nicht funktioniert hat, da Port forwarding von meinem Internetanbieter gesperrt war. Dieses hat er mir auf Nachfrage entsperrt.

Und hier den Webhook den die Feuersoftware aufrufen soll:
https://BENUTZERNAME:PASSWORT@XXX.XX.XX.XX:1121/fhem?cmd=set%20Einsatz_Info%20Adresse%20{Adresse};set%20Einsatz_Info%20Einsatzstichwort%20{Stichwort};set%20Einsatz_Info%20Sachverhalt%20{Sachverhalt};set%20Einsatz_Info%20Standort%20{Standort}&fwcsrf=XXXXXXXXXXXXXXX
Jetzt habe ich "nur" noch ein Zertifikatsfehler.
Fehlermeldung Feuersoftware:
An error occurred while sending the request. The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

passibe

Vermutlich verwendest du ein selbst signiertes Zertifikat und die Feuersoftware meckert deshalb?
Die einfachste Lösung wäre wohl ein Zertifikat von Let's Encrypt zu nutzen.

Johannes B.

Beim Beantragen des Zertifikats bekomme ich eine Fehlermeldung.
usage:
  certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ...

Certbot can obtain and install HTTPS/TLS/SSL certificates.  By default,
it will attempt to use a webserver both for obtaining and installing the
certificate.
certbot: error: argument --dns-cloudflare-credentials: expected one argument
Hab ich hier was vergessen einzutragen?
Ist für mich alles Neuland mit dem Zertifikat Krempel.

Wernieman

Du must Port 80 offen haben und dieser muß auf den beantragenden PC zeigen. Dann kannst Du ein Zertifikat "beantragen".

Eigentlich ist letsencrypt relativ simpel ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Johannes B.

Port 80 ist schon durch Apache2 belegt, deshalb wollte ich die DNS Plugin Variante benutzen.

Wernieman

Das geht auch .... wie ist Dein Aufruf von certbot?

Wie im Footer steht: Bitte um Input für Output
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Johannes B.

So wie es im Wiki beschrieben ist.
ZitatSind diese Schritte erledigt, kann ein Zertifikat beantragt werden:

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /root/.secrets/cloudflare.ini \
  --dns-cloudflare-propagation-seconds 20 \
  -d www.example.com -d example.com

Was trage ich bei www.example.de ein? Meine öffentliche IP-Adresse von FHEM?

Wernieman

Ahhh DNS Authentifizierung per cloudflare. Da wäre dann noch die Frage des Inhaltes bezüglich der cloudflare.ini (Hinweis: Token Anonymisieren!)

Was bekommst Du, wenn Du im certbot den verbose Level erhöhst? (-v)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Johannes B.

Habe gerade gelesen das diese Methode von Let´s Encrypt nicht empfohlen wird aufgrund der zu Investierenden Zeit und das Zertifikat muss wohl öfter aktualisiert werden.

Cloudflare möchte weder meine öffentliche IP-Adresse, noch die MyFritz Freigabe Adresse annehmen.
Gibt es eine Alternative Variante die für Anfänger besser geeignet ist?

Wernieman

Google-DNS?

Das mit Cloudflare ist mir neu ... habe hier es genau so laufen, allerdings mit dem Docker-Container. Vor längerer Zeit eingerichtet und es läuft ...


Und ich wiederhole mich ungerne: Bitte um mehr Input für Output. Aufruf mit Verbose, Inhalt von Configdateien ...

P.S.
Es geht auch noch, in dem Du "--webroot" verwendest ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Johannes B.

Inhalt der cloudflare.ini ist ja uninteressant, da ich erst gar keinen Token bekomme.

Was meinst du mit --webroot ?
Wie gesagt bin neu in dem Thema.

passibe

#14
Sorry, da habe ich wohl mit meinem Verweis auf die Certbot-Anleitung etwas zu schnell aus der Hüfte geschossen, es sieht nämlich nicht so aus, als würdest du diese Voraussetzung erfüllen:
ZitatVerwendung eines unterstützten DNS-Providers zur Verwaltung der eigenen Domain

Aber erstmal grundlegend:
Deine öffentliche IP-Adresse zu benutzen ist nicht sinnvoll. Die ändert sich nämlich, spätestens dann, wenn deine Fritzbox eine neue Internetverbindung herstellt. Dann würde auch dein Webhook nicht mehr funktionieren, und du müsstest manuell überwachen, wann sich deine IP-Adresse ändert und das dann auch in der Feuersoftware hinterlegen.
Deshalb brauchst du dynamisches DNS, dynamisch, weil es sich an deine wechselnde öffentliche IP-Adresse anpasst und DNS damit du einen (statischen) Domainnamen kriegst, der dann zu dieser IP-Adresse aufgelöst wird. MyFritz ist genau so ein dynamisches DNS.

Certbot würde dir – theoretisch – auch ein Zertifikat für deine MyFritz-Domain (bzw. eine Subdomain) ausstellen, aber Certbot muss irgendwie verifizieren, dass dir diese Domain gehört. Das läuft bei Certbot über zwei Wege, entweder darüber, dass Certbot eine Verbindung zu einem unter dieser Domain laufenden Webserver aufbaut (hier geht wohl nur Port 80 oder 443 (extern! intern kann das natürlich ein anderer Port sein)) oder, dass Certbot einen TXT-Record der Domain abfragt, auf dem der Token hinterlegt ist.

Lösungsmöglichkeiten:
Variante 1 (Certbot verbindet sich mit Webserver) könnte funktionieren (siehe hier), ist aber ggfs. etwas aufwendiger (das geht vermutlich in die Richtung von dem, was Wernieman mit dem Verweis auf "webroot" meinte).
Variante 2 (TXT-Record) wäre hier wohl die bessere Lösung – dann kannst du aber nicht MyFritz verwenden, weil du ja nicht auf AVMs Servern TXT-Einträge hinzufügen kannst. Das einfachste ist dann, dass du dich einer Lösung wie z.B. https://desec.io bedienst, die sich recht einfach mit Certbot verknüpfen bzw. automatisieren lassen dürfte (siehe hier). Dann gibst du der Feuersoftware einfach deine desec-Domain und alles ist gut.

Alternativen zu desec wären z.B. noch Duck DNS oder du kaufst dir einfach deine eigene Domain (z.B. bei IONOS), setzt Cloudflare als Nameserver ein und kannst dann Cloudflare mit Certbot benutzen.

Noch eine weitere Alternative, die das ganze Zertifikatsproblem skippen könnte wäre die Testversion von Cloudflare Tunnels, siehe hier. Ich glaube aber, dass das keine wirkliche Lösung ist, weil du dann immer eine neue Subdomain kriegst, wenn cloudflared neustartet (abgesehen davon, dass es da irgendwelche Limits gibt usw.).

Hoffe das hilft etwas!

Edit: Das aller einfachste wäre natürlich, wenn du in der Feuersoftware die Zertifikatsverifizierung abschalten könntest:D