INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
18.11.2018, 16:30
Beitrag #1
Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
Hallo,
lokal läuft bei mir ein RaspberryPi mit Mosquitto als MQTT Broker. (Datenquellen sind diverse Geräte im lokalen Netzwerk.)

Ich suche jetzt ein Stück Software mit dem ich einzelne MQTT Topics abon­nie­ren kann und das mir diese Topics in eine SQL Datenbank schreibt die auf einem Webserver im WWW liegt. Dieses Stück Software sollte sinnvollerweise auf dem RaspberryPi laufen auf dem auch der MQTT Broker läuft.

Auf dem Webserver im WWW steht PHP 7.2 und MySQL 5.6.41 zur Verfügung.

Hat jemand eine Idee oder kann mir bei einer möglichen Lösung unter die Arme greifen?

Tante Gooogle habe ich schon hinlänglich bemüht aber irgendwie passte keine der Lösungen richtig.
Meist liegt bei den beschriebenen Lösungen die Datenbank auch lokal und nicht auf einem Webspace.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2018, 16:46
Beitrag #2
RE: Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
Ich kenne Mosquitto / MQTT nicht. Aber auf einem Raspi kann man auch PHP installieren. Dann kommt es darauf an, ob Dein Provider im WWW einen Fernzugriff auf die DB erlaubt oder nur von seinen eigenen Servern aus.
Das kannst Du z.B. prüfen, indem Du über HeidiSQL einen direkten Zugriff versuchst.
Wenn das funktioniert, kannst Du vom lokalen PHP oder einer beliebigen anderen Sprache direkt zugreifen. Wenn das nicht geht, musst Du auf dem Webserver eine Website / ein PHP-Script schreiben, die die Daten bekommt und in die DB einträgt.
Benutze dabei prepared Statements über PDO, der direkte Zugriff wird seit PHP 7 nicht mehr unterstützt.

Wenn die näheren Bedingungen klar sind, kann ich Dir einige PHP-Funktionen geben, die manches etwas vereinfachen.

Wie Du die Daten aus dem Broker raus bekommst, da kann ich Dir nicht helfen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2018, 17:02
Beitrag #3
RE: Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
Danke schon mal für die Tipps.

PHP auf dem RasPi ist möglich, das wusste ich. Aber dann fehlt mir wohl noch das Stückchen Software von MQTT zu PHP.

Auf dem Webserver habe ich die Wahl zwischen PHP 5.6, 7.0, 7.1 und 7.2.
Könnte es also auch auf 5.6 umstellen wenn es dann einfacher wird. Aber wie zukunftssicher ist das dann?

HeidiSQL muss ich mir wohl runterladen, auf einem PC installieren und kann dann probieren was geht?
Das mache ich und berichte dann.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2018, 17:11 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2018 17:25 von Tommy56.)
Beitrag #4
RE: Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
Es wird mit dem direkten Zugriff, den es bei PHP 5.6 noch gibt zwar scheinbar einfacher, aber gleichzeitig auch unsicherer. (SQL-Injection)
Zukunftssicherer ist es auch nicht, da irgendwann die Provider 5.6 nicht mehr unterstützen werden.

Ich würde da eher zur höchsten Version tendieren. Ich habe im Frühjahr alles auf 7.2 umgestellt.

Gruß Tommy


Evtl. könnte diese Lib beim Zugriff auf Mosquito auf dem Raspi helfen. Die muss aber speziell installiert werden.

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2018, 17:35 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2018 17:47 von ardu_arne.)
Beitrag #5
RE: Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
Habe mir die portable Version von Heidi herunter geladen und ausgeführt.

Als Verbindungstyp "MySQL (TCP/IP)" gewählt
Hostname ist der von meinem Provider vorgegebene Server "x.y.de"
Dann noch Benutzername und Passwort angegeben.
Port ist 3306.

Beim Verbinden kommt eine Fehlermeldung "Unkown MySQL server host 'x.y.de' "

Wenn ich die Daten in Heidi richtig und vollständig angegeben habe würde das bedeuten dass bei meinem Provider (Strato) kein direkter Fernzugriff auf die DB erlaubt ist?

(18.11.2018 17:11)Tommy56 schrieb:  ...
Evtl. könnte diese Lib beim Zugriff auf Mosquito auf dem Raspi helfen. Die muss aber speziell installiert werden.
Fehlt da ein Link?

kleiner Nachtrag:
Die Datenbank ist nur angelegt aber noch völlig leer. Es gibt noch keine Tabellen darin.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2018, 17:54 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2018 18:15 von Tommy56.)
Beitrag #6
RE: Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
(18.11.2018 17:35)ardu_arne schrieb:  Wenn ich die Daten in Heidi richtig und vollständig angegeben habe würde das bedeuten dass bei meinem Provider (Strato) kein direkter Fernzugriff auf die DB erlaubt ist?
Evtl. könnte diese Lib beim Zugriff auf Mosquito auf dem Raspi helfen. Die muss aber speziell installiert werden.

Strato hat keinen Direktzugriff.

Dann wird es etwas aufwändiger. Auf dem Raspi die Daten aus MQTT holen, in einen https-Request verpacken und an die Website schicken. Die schreibt es dann in die DB.

Ich würde Dir zur Entwicklung einen lokalen Server, z.B. XAMPP empfehlen, das geht flotter, als immer erst alles auf den fernen Server zu laden.

Ich löse mal ein paar Zugriffsfunktionen aus meinen Anwendungen raus und hänge die dann hier an.

Für den Anfang solltest Du auf Deinem Webserver beim Provider eine datei "phpinfo.php" anlegen und aufrufen (danach wieder löschen)
Code:
<?PHP
phpinfo ();
?>

Da sollte PDO und pdo_mysql auftauchen.

Gruß Tommy


Angehängte Datei(en)
.zip  php_db.zip (Größe: 2,96 KB / Downloads: 19)

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2018, 20:15
Beitrag #7
RE: Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
Hat etwas gedauert. Habe mir noch einen Zugang zum Webspace über FTP-Watchdog gelegt. Damit kann man lokal so arbeiten als würde man direkt am Webserver bei Strato arbeiten. Das erspart mir (so hoffe ich) eine lokale XAMPP Installation und Einrichtung.
Und Hunger war auch noch im Spiel. Wink

Ich mache das Testverzeichnis hier mal öffentlich, das macht es insgesamt vielleicht einfacher. Link zur "phpinfo.php"
Dort ist also PDO und pdo_mysql enthalten.

Die vier PHP-Scripte müssen vermutlich erst mal angepasst werden und dann zum Webserver im WWW und dort in das Rootverzeichnis der neu zu gestaltenden Webseite die später die Datenbank nutzen soll?

Die verlinkte Mosquitto-PHP Lib. schaue ich mir später an. Denn die braucht vermutlich schon die vier PHP-Scripte auf der Webseite?
Habe ich das soweit richtig verstanden?

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.11.2018, 20:28 (Dieser Beitrag wurde zuletzt bearbeitet: 18.11.2018 20:38 von Tommy56.)
Beitrag #8
RE: Wie schickt man am besten lokale MQTT Topics zu einer SQL-DB im WWW
Also der Server kann mit PDO arbeiten.
Die eigentliche Konfiguration der Datenbank ist in config_inc.php.

Die Insert/Update/Select/Delete musst Du natürlich nach Deinem Tabellenaufbau gestalten. Der Datensatz sollte einen PK haben, z.B. die UNIX-Time. Wenn das nicht eindeutig genug ist muss der PK anders gebildet werden.
Es gibt auch die Möglichkeit ein Feld mit Autoincrement zu nutzen. Ich ziehe Zeiten vor, wenn die Daten zeitabhängig sind. In dem Beispiel ist es ein Autoincrement-Feld.
Ansonsten müssen wir erst mal ein Datenmodell bearbeiten.
Das direkte Arbeiten auf dem fernen Server hat einen entscheidewnden Nachteil: Dort sind im Normalfall die Fehlerausgaben abgeschaltet. Es passiert also nichts und Du weißt nicht warum. Beim lokalen XAMPP bekommst Du es angezeigt.

Man kann zwar auch remote die Ausgabe wollen, das hat bei mir aber nicht immer funktioniert. Gerade in der Entwicklungsphase ist das extrem lästig.
Das ist ungefähr so, als wenn Dir die Arduino IDE keine Fehlermeldung gibt und einfach nur nicht hochlädt.

Gruß Tommy

Ich würde sie nicht ins Webroot stellen, sondern in ein eigenes Verzeichnis

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste