Installation eigener DNS Server - SBorg2014/WLAN-Wetterstation GitHub Wiki
Die bisherige/aktuelle Funktionsweise des Projektes basiert darauf, dass man zB. mittels einer App wie WS View einen eigenen Wetterdienst-Server eintragen kann. Auf diesem "Server" läuft dann das WLAN-Wetterstationskript und gaukelt so der Wetterstation einen Wetterdienst-Server vor, nimmt die Daten von der Wetterstation entgegen, dekodiert, konvertiert diese ggf. und wertet diese aus. Danach werden sie an den ioBroker und optional an AWEKAS, OpenSenseMap, Windy oder Wetter.com geschickt.
Viele Stationen werden allerdings von der App nicht unterstützt und im Web-Interface der Station besteht keine Möglichkeit einen eigenen Wetterdienst-Server anzugeben.
Mit etwas Aufwand und einem Trick kann man diesen Stationen trotzdem ihre Daten entlocken. Man benötigt dafür einen eigenen DNS-Server. Dies hört sich erst mal erschreckend, aufwändig und nach Kosten (zB. für Hardware) an, ist es aber bei weitem nicht. Es bedarf lediglich kostenloser Software.
Jede Station die ihre Daten an Wunderground/Ecowitt schickt muss dies über das interne Netzwerk bewerkstelligen, um es dann über den Router in die Weiten des WWW (oder eben an Wunderground/Ecowitt) zu übermitteln. Netzwerke basieren dabei auf der IP-Adressierung und das WWW ist auch nichts anderes als ein Netzwerk. Nur etwas größer als das heimische 😉 Da sich aber kein Mensch eine Adresse wie bspw. 142.250.186.174 auf Dauer merken kann, wurde das Domain Name System oder kurz DNS eingeführt. Möchte man also zB. eine Adresse wie www.google.com im Browser ansurfen, fragt der Rechner beim Router nach der passenden IP-Adresse. Der schaut dann bei dem/den eingetragenen DNS-Server (meist vom eigenen Internet-Provider) nach und bekommt dann zur Adresse die passende IP (in unserem Fall 142.250.186.174) mitgeteilt und der Rechner kann eine Verbindung zu dieser IP aufbauen. Nichts anderes macht auch die Wetterstation, nur eben mit anderer Adresse und IP.
Hier setzt nun der "Trick" an. Wir nutzen einen eigenen DNS-Server wie bspw. dnsmasq oder Pi-hole, um die Anfragen an Wunderground/Ecowitt nicht mehr ins WWW zu lassen, sondern "verbiegen" sie in unser eigens Netzwerk auf unseren eigenen Wetterdienst-Server (oder einfach ausgedrückt auf den Rechner, auf dem das WLAN-Wetterstationskript läuft).
Für Pi-hole hat XxJooO freundlicherweise eine sehr ausführliche Beschreibung erstellt: ioBroker-Forum
Da Ports kleiner als 1024 idR. root-Rechte benötigen und wir durch das "verbiegen" Port 80 nutzen müssen, kann man mittels sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/nc.openbsd
auch dem normalen User den Port zugänglich machen. Dies sollte aber nur auf internen Rechnern erfolgen, keinesfalls für Systeme die über das Internet erreichbar sind!