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.
Andreas F. schrieb: > Mit DynDNS bzw. einer ähnlichen Funktion im Sonoff Das macht man auf dem Router, nicht auf den Clients dahinter.
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.
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
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.
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.
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.
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.
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?
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.
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?
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
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?
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.
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.
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?
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.
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.
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?
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.
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?
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
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.
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
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.