Forum: Haus & Smart Home Sonoff WLAN-Relay mit DynDNS?


von Andreas F. (solipo)


Lesenswert?

Hallo allerseits,

ich habe ein paar Sonoff Basics und da die Sonoff-Tasmota Firmware 
drauf. Diese Firmware ist ja in erster Linie für MQTT gedacht, aber 
damit kenne ich mich überhaupt nicht aus.

Mir ging es bisher nur darum, die Relays über eine eigene Weboberfläche 
ansprechbar zu machen und zwar nicht im lokalen Netz. Daher muss ich in 
den jeweiligen DSL-Routern auch immer ein Portforwarding zum Sonoff 
einrichten, damit ich vom Webserver aus dem Netz auf den Sonoff lokal 
zugreifen kann.

Doch das ist beim Wechsel der Örtlichkeit zu umständlich. Mit DynDNS 
bzw. einer ähnlichen Funktion im Sonoff wäre das doch viel einfacher und 
eleganter, nur wie machen? Sonoff-Tasmota kann kein DynDNS.

Kann man das irgendwie mit MQTT simulieren? Wie gesagt, keine Ahnung, 
wie MQTT im Detail funktioniert. Aber wäre es nicht möglich, dass man 
auf dem Sonoff einen MQTT-Servernamen einträgt, der in Wahrheit dem 
Domainnamen des Webservers beim Webhoster entspricht, welcher dort 
wiederum unter einer bestimmten URL per PHP den Sonoff-MQTT-Aufruf 
auswertet und die IP speichert?

Ich hab dazu nur leider nichts gefunden, wie man MQTT unter PHP nutzen 
könnte (also in einem normalen Shared Hosting, nicht auf einem eigenen 
Server, wo das mit entsprechender MQTT-Serversoftware wohl geht). Weiß 
jemand, wie man sowas machen kann?

Wenn sowas geht, wäre es natürlich genial, wenn man dann per PHP auch 
gleich die MQTT-Infos auswerten könnte, z.B. den übermittelten 
Knopfdruck am Sonoff.

Und der Sonoff müsste von sich aus zudem regelmäßig alle paar Sekunden 
die Verbindung zum Server aufbauen, damit die IP auf dem Server ständig 
aktuell und v.a. der Port im lokalen Router ohne Portforwarding offen 
bleibt.

Hat jemand eine Idee dafür? Vielleicht gibts auch ganz andere Firmwares 
für Sonoff, die das von Haus aus schon alles können und wo das Umflashen 
jetzt keine besonders aufwendige Sache ist.

Vielen Dank.

von Hmmm (Gast)


Lesenswert?

Andreas F. schrieb:
> Mit DynDNS bzw. einer ähnlichen Funktion im Sonoff

Das macht man auf dem Router, nicht auf den Clients dahinter.

von Andreas F. (solipo)


Lesenswert?

Mag schon sein, dass "man" das so macht, wenn man DynDNS will. Aber Du 
hast sicher gelesen, was ich erreichen möchte.

Ich will eben den Sonoff von "außen" ansprechen können, ohne ihn in 
jedem Anwendungsfall erst umständlich manuell per Portforwarding 
freizugeben.

von Thomas (Gast)


Lesenswert?

mag sein das du es so machen möchtest ...

... es geht so aber nicht weil dein Router keine Packet von außen nach 
innen durchlässt wenn du es ihm nicht explizit sagst.

>> https://de.wikipedia.org/wiki/Netzwerkadress%C3%BCbersetzung

Gruß
Thomas

von Thomas (Gast)


Lesenswert?

die etablierten Hersteller machen das dann in der Cloud. Das IoT Device 
sendet daten an einen Cloud-Server und von dort kann man dann mit einem 
Smartphone z.b. die Daten abrufen.

von Andreas F. (solipo)


Lesenswert?

Natürlich geht das. Man nehme ein Smartphone, installiere ein FTP- oder 
sonstwas Serverprogramm oder nutze gar einfach nur die eingebaute 
Google-Play-Services und schon ist man von außen überall erreichbar - 
ohne DynDNS.

von Andreas F. (solipo)


Lesenswert?

Thomas schrieb:
> die etablierten Hersteller machen das dann in der Cloud. Das IoT Device
> sendet daten an einen Cloud-Server und von dort kann man dann mit einem
> Smartphone z.b. die Daten abrufen.

Ah joh, was meinst Du denn, was ich hier bauen will? Meine eigene Wolke 
eben.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Andreas F. schrieb:
> Natürlich geht das. Man nehme ein Smartphone, installiere ein FTP- oder
> sonstwas Serverprogramm oder nutze gar einfach nur die eingebaute
> Google-Play-Services und schon ist man von außen überall erreichbar

Ein auf einem Smartphone laufender FTP-Server ist von überall 
erreichbar?

Ach.

von Dirk (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Ach.

Und das mit IPv4?

von Bilb (Gast)


Lesenswert?

Dirk schrieb:
> Rufus Τ. F. schrieb:
>> Ach.
>
> Und das mit IPv4?

Und das mit 47110815?

von Andreas F. (solipo)


Lesenswert?

Rufus Τ. F. schrieb:
> Ein auf einem Smartphone laufender FTP-Server ist von überall
> erreichbar?
>
> Ach.

Ja, ach:

https://play.google.com/store/apps/details?id=com.icecoldapps.ftpserverultimate

Ich habe nicht behauptet, dass das ohne DynDNS geht, aber es gibt 
FTP-Server-Programme, die selbst DynDNS unterstützen. Die Behauptung 
oben war aber, dass man DynDNS zwingend im Router machen müsste, weil 
das sonst nicht ginge. Und das muss man eben nicht.

Kann vielleicht gnädigerweise auch mal jemand was zur eigentlichen 
Thematik beitragen?

von Oliver S. (phetty)


Lesenswert?

Andreas F. schrieb:
> Kann man das irgendwie mit MQTT simulieren? Wie gesagt, keine Ahnung,
> wie MQTT im Detail funktioniert. Aber wäre es nicht möglich, dass man
> auf dem Sonoff einen MQTT-Servernamen einträgt, der in Wahrheit dem
> Domainnamen des Webservers beim Webhoster entspricht, welcher dort
> wiederum unter einer bestimmten URL per PHP den Sonoff-MQTT-Aufruf
> auswertet und die IP speichert?

Da fällt mir nur ein: Jemand der nur einen Hammer als Werkzeug kennt 
sieht in jedem Problem einen Nagel.

Das hört sich für mich doch nach totalem Gemurkse an. Wenn Du Dich nicht 
selber in MQTT einarbeiten möchtest (es ist nicht so kompliziert, gibt 
viel bei Youtube) dann nimm doch einen der vielen öffentlichen 
MQTT-Server (die man broker nennt). https://www.cloudmqtt.com/ zum 
Beispiel. Da verbinden sich Deine Sonoffs hin und du kannst sie da 
ansprechen.
Im nächsten Schritt ersetzt Du dann cloudmqtt durch einen eigenen Broker 
innerhalb oder ausserhalb Deines Netzes.

von Andreas F. (solipo)


Lesenswert?

Ich bin nicht gegen MQTT, ich kenne es bisher nur nicht. Aber wenn es 
einfacher ginge, wäre ich eben dankbar, nicht dieses Fass aufmachen zu 
müssen.

Außerdem war meine Frage ja ganz offen und nicht speziell auf einen 
"Hammer" gemünzt.

Ich will ungern Wolkendienste nutzen, weil ich ja selbst hintendran was 
programmieren will auf meinem Webserver und nicht einfach nur dort in 
der Weboberfläche rumklicken.

Mosquitto zu installieren geht leider nicht auf Shared Hosting. Oder 
weißt Du, wie es doch geht?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Andreas F. schrieb:
> Die Behauptung oben war aber, dass man DynDNS zwingend im Router machen
> müsste, weil das sonst nicht ginge. Und das muss man eben nicht.

Wenn Du ein Gerät hinter einem Router betreibst, ist es zwar möglich, 
daß das Gerät DynDNS-Updates anstößt, aber nicht sinnvoll, da das Gerät 
nicht mitbekommt, wann sich die öffentliche Adresse des Routers ändert. 
So muss das Gerät also raten, wann sich die öffentliche Adresse ändert 
und/oder zyklisch (überflüssige) DynDNS-Updates anstoßen (was nicht 
jeder DynDNS-Provider mit Begeisterung quittiert).

Das aber ist zweitrangig, denn am wesentlichen größeren Problem der 
nötigen Portweiterleitungen im Router ändert das überhaupt nichts.

Wenn Du ein Gerät hinter einem Router betreibst, ist ein Zugriff von 
außen auf das Gerät ohne Portweiterleitungen oder Tricks wie 
"NAT-Tunneling*", wie es Skype und Teamviewer betreiben, nicht möglich.

Ein ftp-Server auf einem Smartphone ist üblicherweise von außen nicht 
erreichbar, weil Smartphones mobile Datenverbindungen verwenden, und die 
meisten Mobilprovider nur NAT-Adressen aus einem privaten Netz vergeben.

Wenn Dein Smartphone ein WLAN nutzt, unterscheidet sich die Situation 
nicht von der eines beliebigen anderen Gerätes - d.h. ohne 
Portweiterleitungen ist Dein Smartphone nicht erreichbar.

Insofern ist Deine ftp-Server-App für die meisten Anwender ziemlich 
nutzlos.

*) 
https://www.heise.de/security/artikel/Wie-Skype-Co-Firewalls-umgehen-270856.html

: Bearbeitet durch User
von Andreas F. (solipo)


Lesenswert?

Rufus Τ. F. schrieb:
> und/oder zyklisch (überflüssige) DynDNS-Updates anstoßen (was nicht
> jeder DynDNS-Provider mit Begeisterung quittiert).

Hallo, ICH bin der DynDNS Provider, also mein Webspace, und um den Port 
offenzuhalten muss ich eh die Anfragen regelmäßig stellen.


> Ein ftp-Server auf einem Smartphone ist üblicherweise von außen nicht
> erreichbar, weil Smartphones mobile Datenverbindungen verwenden, und die
> meisten Mobilprovider nur NAT-Adressen aus einem privaten Netz vergeben.

Ich rede hier rein von Smartphones im WLAN. Dass das geht, weiß ich, 
habe ich selbst genutzt, siehe die verlinkte App.


> Wenn Dein Smartphone ein WLAN nutzt, unterscheidet sich die Situation
> nicht von der eines beliebigen anderen Gerätes - d.h. ohne
> Portweiterleitungen ist Dein Smartphone nicht erreichbar.

Doch natürlich ist es das. Nimm beliebige Apps, die nach draußen 
Verbindungen aufbauen, z.B. VoIP-Apps. Die sind selbstverständlich auch 
von draußen ansprechbar, sonst könnte ich ja seit zig Jahren gar nicht 
telefonieren - und ich kann es, glaub mir.

Aber nochmals meine Bitte: Kann mir mal jemand einen Beitrag zu meiner 
eigentlichen Frage bringen? Ist mir ja im Grunde genommen egal, was nun 
wie angeblich nicht geht, aber wie GEHT es denn, was ich haben möchte?

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Andreas F. schrieb:
> Aber nochmals meine Bitte: Kann mir mal jemand einen Beitrag zu meiner
> eigentlichen Frage bringen? Ist mir ja im Grunde genommen egal, was nun
> wie angeblich nicht geht, aber wie GEHT es denn, was ich haben möchte?

Tja, hör auf zuj ammern. Du wirst nicht drumherum kommen dich selbst in 
die Materie einzuarbeiten. Momentan bist du nicht einmal in der Lage 
genau auszudrücken was du machen willst. Alles was du sagst ist "soll so 
funktionieren wie ich will".

Unter solchen Umständen ist es sinnlos dir irgendwelche 
Netzwerktechnologien nahe bringen zu wollen. Als Reaktion würde es 
keinen Dank geben sondern nur weiteres Gejammer von dir.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Andreas F. schrieb:
> Ich rede hier rein von Smartphones im WLAN. Dass das geht, weiß ich,
> habe ich selbst genutzt, siehe die verlinkte App.

Das kann nicht funktionieren. Ein ftp-Server hinter einem NAT-Router ist 
ohne Portweiterleitungen nicht erreichbar.

Oder hast Du nur den Trivialfall getestet, daß Dein Smartphone und Dein 
PC im gleichen WLAN sind?

> Nimm beliebige Apps, die nach draußen Verbindungen aufbauen, z.B.
> VoIP-Apps.

Das ist was komplett anderes als ein ftp-Server oder auch sonst 
irgendein Server - das ist das von mir beschriebene "NAT-Tunneling".

Weder ftp-Server noch Web-Server machen so etwas, ganz zu schweigen 
davon, daß das ohne ein damit zusammenarbeitendes Gegenstück, das 
irgendwo im Internet auf einem Server mit einer öffentlichen IP-Adresse 
läuft, auch nicht möglich ist.


Trotziges Aufstampfen à la "Ich will aber" hilft hier nicht.

von Andreas F. (solipo)


Lesenswert?

Also, um es abzukürzen und diese persönlichen Angriffe zu ignorieren:

Hat jemand einen konkreten Vorschlag, was ich tun kann?

Angenommen ich HÄTTE einen Mosquitto auf einem eigenen Webserver, wie 
kann ich das dann OHNE Portforwarding und OHNE DynDNS lösen, sodass der 
Sonoff an einem beliebigen WLAN zum Server und der Server zu ihm 
verbinden kann, um zu schalten?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Es geht nicht. Das ist kein persönlicher Angriff, sondern eine Tatsache. 
Es geht einfach nicht.

Zwar kann sich ein Gerät aus Deinem WLAN durch Deinen Router hindurch 
mit einem Webserver verbinden, der im öffentlichen Netz erreichbar ist, 
aber der Webserver (oder irgendein anderer Server) kann sich nicht durch 
Deinen Router hindurch mit einem Gerät in Deinem WLAN verbinden, ohne 
daß im Router entsprechende Portweiterleitungen eingerichtet sind.

Die Alternative habe ich Dir schon mehrfach genannt - das wäre 
"NAT-Tunneling", wie im verlinkten (schon etwas älteren) c't-Artikel 
beschrieben.

Wenn Du Deinen Webserver in Deinem persönlichen Netz (also in Deinem 
WLAN) betreibst, dann genügt natürlich ein einzelner weitergeleiteter 
Port im Router, nämlich auf Deinen lokalen Webserver, um das zu 
erreichen, was Du vermutlich erreichen willst.

von Oliver S. (phetty)


Lesenswert?

Andreas F. schrieb:
> Mosquitto zu installieren geht leider nicht auf Shared Hosting. Oder
> weißt Du, wie es doch geht?

Einen kleinen vServer mieten. Ich habe einen für grad mal 12EUR im Jahr 
bei Noez.

von Andreas F. (solipo)


Lesenswert?

Auch wenn der vServer so günstig sein mag: Ich kenn mich mit Linux nicht 
soweit aus, dass ich den sicher administrieren kann. Bei Shared Hosting 
kenn ich mich aus, aber darüber hinaus nicht. Daher will ich mir das für 
ein Spielprojekt nicht wirklich antun, denn das muss man auch unter 
Kontrolle haben.

Warum geht es eigentlich, den Sonoff per Cloud-Broker von außen 
anzusprechen ohne Portforwarding? Oder geht das auch nicht?

von Oliver S. (phetty)


Lesenswert?

Andreas F. schrieb:
> Warum geht es eigentlich, den Sonoff per Cloud-Broker von außen

Der Sonoff verbindet sich von innen heraus mit dem Broker. Per 
Handy-MQTT verbindest Du Dich auch mit dem Broker. Da holt der Sonoff 
dann seine Kommandos ab. Es gibt keine direkte Verbindung vom Handy zum 
Sonoff nach innen.

Wenn es ein "Spielprojekt" ist dann spiel dich doch langsam an MQTT ran. 
Erstmal mit dem Cloudbroker.

von Andreas F. (solipo)


Lesenswert?

D.h. Sonoff holt sich alle x Min oder Sek per Polling die Infos ab? Das 
macht bei einem Schalter ja so nicht wirklich Sinn, oder?

Im Prinzip habe ich ja schon das, was ich möchte, nämlich einen Sonoff 
über meine eigene Webseite per PHP übers Internet im lokalen Netz 
hinterm DSL-Router umzuschalten.

Was ich gern zusätzlich hätte: Das Ganze soll ohne extra im Router 
einzurichtendes DynDNS und Portforwarding funktionieren. Ist das also 
nicht realisierbar?

von Oliver S. (phetty)


Lesenswert?

Andreas F. schrieb:
> D.h. Sonoff holt sich alle x Min oder Sek per Polling die Infos ab? Das

Der verbindet sich mit dem Broker und wartet dann da "auf der Leitung" 
ob was kommt.
Da braucht man kein Dyndns und keine Portfreigabe weil der Sonoff sich 
von innen nach aussen verbindet.
Bei cloudmqtt gibt es sogar php, dann kannst Du Dir eine Webseite bauen 
über die du deine Befehle an cloudmqtt sendest und der Sonoff es 
bekommt.
https://www.cloudmqtt.com/docs-php.html

: Bearbeitet durch User
von Andreas F. (solipo)


Lesenswert?

Ach so läuft das, also wie bei IMAP z.B.

Da frag ich mich, warum man das dann nicht 1:1 auch auf einen URL-Aufruf 
einer normalen Webseite umstricken können sollte, das ist ja nichts 
anderes.

Müsste doch gehen, wenn man das in der Sonoff-Firmware einbaut, oder?

Dann hätte ich ja, was ich brauche.

von Oliver S. (phetty)


Lesenswert?

Es steht Dir ja frei eine eigene Firmware für den Sonoff zu 
programmieren die das macht was Du möchtest. Als Basis kannst du den 
tasmota oder easy-esp verwenden. Oder natürlich gleich auf der grünen 
Wiese anfangen.

mqtt hat eben den Vorteil das es einerseits schon drin ist und ausserdem 
wenig Bandbreite braucht.

: Bearbeitet durch User
von Andreas F. (solipo)


Lesenswert?

Danke, da sind wir dann wieder bei meiner Ausgangssituation. Ich wollte 
ja wissen, ob man mit wenig Aufwand oder ein paar Tricks das Gewünschte 
erreichen kann.

Was ich nicht verstehe: Warum gibt es keine MQTT-Funktion, die man rein 
per PHP nutzen kann? Warum braucht man zwingend einen Mosquitto 
dahinter?

Mir würde es ja schon genügen, dem Sonoff einen broker vorzugaukeln per 
PHP, denn ich brauche die sonstige Funktionalität des brokers nicht. 
Wenn man einen Mosquitto auf nem eigenen vServer installiert, läuft das 
dann ohne PHP? Unter was läuft denn der broker? Python?

Es wäre super, wenn es wenigstens so ein kleines PHP-script irgendwo 
gäbe, das MQTT verstehen und sprechen kann. Da das ja sehr einfach 
gestrickt sein soll, müsste man das doch eigentlich machen können, wenn 
man sich auskennt. Gibts das schon was?

von Hmmm (Gast)


Lesenswert?

Andreas F. schrieb:
> Warum gibt es keine MQTT-Funktion, die man rein per PHP nutzen kann?
> Warum braucht man zwingend einen Mosquitto dahinter?

Theoretisch kannst Du auch einen MQTT-Broker in PHP implementieren.

Auch dann reicht aber nicht Dein Shared-Hosting-Paket, weil dort der 
PHP-Interpreter nur im Rahmen eines HTTP-Requests gestartet wird und die 
Laufzeit des Scripts i.d.R. begrenzt ist.

von Andreas F. (solipo)


Lesenswert?

Ach so, das ist also das wesentliche Problem, verstehe. D.h. deshalb ist 
der Port von außen auch nur solange auf, wie das PHP-Script noch nicht 
geantwortet hat?

Tja dann kann ich das so wohl vergessen.

von Hmmm (Gast)


Lesenswert?

Genau, bei Standard-Einstellungen darf Dein PHP-Script maximal 30 
Sekunden lang laufen.

Ein eigener (virtueller) Server ist meines Erachtens am sinnvollsten, 
aber ohne entsprechende Kenntnisse bzgl. Administration wird der schnell 
zur Spam- oder Malware-Schleuder.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.