SQLite3 Netzwerk Abfrage/Einfügen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
wusa
User
Beiträge: 40
Registriert: Dienstag 18. Februar 2014, 11:08

Hallo Zusammen,

ich habe einen Raspi auf dem SQLite3 läuft und auch schon fleißig mit Daten befüllt wird. Alles geschieht momentan lokal.

Ich würde jetzt gerne einen weiteren Raspi aufstellen, der auch Daten erfassen soll. Beispiel: meine Garage soll einen Magnetschalter erhalten, der von einem Raspi abgefragt wird, ob die Garage offen oder geschlossen ist. Das ganze würde ich gerne in der Datenbank speichern. Da auf dem anderen Raspi bereits die SQLite3 läuft, ist die Frage, kann ich von einem weiterem Raspi per Netzwerk, Daten in die vorhandene SQLite3 einfügen?

Später soll auch noch eine Abfrage möglich sein. Soll heißen, ich würde gerne Einfügen und auch Abfragen über Netzwerk machen wollen.

Ist das mit SQLite3 möglich?

Danke
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein. Dafür musst du eine netzwerkfähige DB wie zB postgres benuzten. Die Umstellung sollte nicht allzu schmerzhaft sein.

Ich würde noch anmerken, dass du für zb Ereignisse NICHT auf die Datenbank setzen solltest. Sondern zb MQTT verwendest. Sonst produzierst du nur unnötig last durch Pollen.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@wusa: zum Abfragen von einfachen Sensoren würde ich ja keinen Raspi nehmen. Zum einen teuer, zum anderen viel Strom und wenig Robust in der Staubigen Umgebung einer Garage.
Einfacheres Setup ist z.B. ein ESP8266 mit MircoPython, das die Daten per WLAN und REST-API an einen zentralen Server (z.B. auf einem RasPi) schickt. Der Web-Server kann einfach mit Flask/Bottle in Python geschrieben werden und weiterhin SQLite3 als Datenbank benutzen.
wusa
User
Beiträge: 40
Registriert: Dienstag 18. Februar 2014, 11:08

Sirius3 hat geschrieben: Freitag 3. Mai 2019, 09:58 @wusa: zum Abfragen von einfachen Sensoren würde ich ja keinen Raspi nehmen. Zum einen teuer, zum anderen viel Strom und wenig Robust in der Staubigen Umgebung einer Garage.
Einfacheres Setup ist z.B. ein ESP8266 mit MircoPython, das die Daten per WLAN und REST-API an einen zentralen Server (z.B. auf einem RasPi) schickt. Der Web-Server kann einfach mit Flask/Bottle in Python geschrieben werden und weiterhin SQLite3 als Datenbank benutzen.
ESP8266 und Python höre ich heute zum ersten mal. Das muss ich mir direkt ansehen. Das wäre natürlich super. Habe mit C++ keinerlei Erfahrung.
Arbeitet man in diesem Fall dann mit Sockets oder wie wird hier vor gegangen?

Natürlich wäre ein Raspi nur für diese Aufgabe zu unterfordert, das verstehe ich. Da ich eine relativ große Garage habe, wollte ich zusätzlich noch eine WLAN Bridge bauen.
Wenn das aber mit einem ESP8266 funktioniert dass überlege ich mir das mit der WLAN Bridge nochmal :wink:
__deets__ hat geschrieben: Freitag 3. Mai 2019, 09:42 Nein. Dafür musst du eine netzwerkfähige DB wie zB postgres benuzten. Die Umstellung sollte nicht allzu schmerzhaft sein.

Ich würde noch anmerken, dass du für zb Ereignisse NICHT auf die Datenbank setzen solltest. Sondern zb MQTT verwendest. Sonst produzierst du nur unnötig last durch Pollen.
MQTT sagt mir leider gar nichts.
Was meinst du genau mit Last und Pollen? Es handelt sich dabei ja nur um max. 6-8 Einträge pro Tag. So oft öffnet und schließt sich unser Garagentor nicht
Umstellen auf eine andere Datenbank sollte das kleinere Problem sein, solange die Syntax die gleich ist für die Abfragen oder die Inserts.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du kannst zB den ESP32 auch mit microPython betreiben. Und der hat auch MQTT, das ist ja ein Begriff der googlebar ist ;) Das ist im Grunde eine Nachrichten-Infrastruktur, mit der deine Sensoren mitteilen, wenn sich was getan hat.

Und was das pollen und die Last angeht: es ist unerheblich, wie oft eure Garagentuer sich oeffnet. Wichtig ist, wie schnell du das mitkriegen willst. Wenn du darauf innerhalb einer Sekunde reagieren willst, dann musst du 24*60*60 mal pro Tag abfragen. Dagegen ist zB ein MQTT-basierter Ansatz sparsamer, denn der schickt genau dann eine Nachricht, wenn eben was zu tun ist.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

wusa hat geschrieben: Freitag 3. Mai 2019, 10:19 Arbeitet man in diesem Fall dann mit Sockets oder wie wird hier vor gegangen?
Sockets sind zu Lowlevel. Man arbeitet entweder mit ganz normalen HTTP-Requests (den Webserver auf dem Raspi brauchst Du ja wahrscheinlich eh, um z.B. Statusinformationen auf Dein Handy zu bekommen), oder wie __deets__ angesprochen hat, mit einem speziell dafür designtes Protokoll wie MQTT.
wusa
User
Beiträge: 40
Registriert: Dienstag 18. Februar 2014, 11:08

Also einen Webserver habe ich zufällig auf dem Raspi, aber ich brauche diesen nicht, um mit Infos aufs Handy schicken zu lassen. Das mache ich mit Telegram.

Ich werde mir mal MQTT ansehen, auf die schnelle was ich jetzt so gelesen habe, muss nur die Bibliothek eingefügt werden.

Geht MQTT in Verbindung mit MircoPython auf einem ESP8266?
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Ja.
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

Wenn du mit Telegram arbeitest kannst du auch MQTT und Telegram verbinden. Hier hat das mal jemand gemacht
wusa
User
Beiträge: 40
Registriert: Dienstag 18. Februar 2014, 11:08

Vielen Dank für die Hilfe.

Wollte mir einen ESP8266 bestellen, damit ich das ganze mal testen kann. Leider habe ich festgestellt, dass es verschiedene ESP8266 gibt. Sind die grundsätzlich alle gleich oder gibt es wirklich Unterschiede?

Auch habe ich festgestellt, dass es preisliche Unterschiede gibt.

Habe mir verschiedene im großen Internethandel E..y angesehen. Vorzugsweise gerne Händler aus DE.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@wusa: die unterscheiden sich nur darin, ob sie einen USB und/oder Akku-Adapter haben, wie viele Ausgänge sie durchschleifen und wie viel Flash-Speicher zur Verfügung steht. Für Micro-Python sind 2 bis 4 Megabytes ganz nützlich. USB ist ein Muss, da sonst das Aufspielen der Images schwierig wird und Du so auch gleich eine einfache Stromversorgung hast. Wichtig: ESP arbeitet mit 3.3V, so dass Du Sensoren brauchst, die mit der gleichen Spannung arbeiten.
wusa
User
Beiträge: 40
Registriert: Dienstag 18. Februar 2014, 11:08

Ich hoffe jetzt mal das es i.O. ist, wenn ich Links poste. Ansonsten bitte entfernen..

Diese 2 habe ich mir einfach mal angesehen:
1. https://www.ebay.de/itm/5x-ESP-12F-Wi-F ... SwdC5cayfa

2. https://www.ebay.de/itm/D1-Mini-ESP8266 ... Sw~LBb3Zht

Grundsätzlich glaube ich, dass diese 2 ESP gleich sind. Nur bei dem 2. sind die Pins nach außen verlegt? Anlöten kann man denke ich bei beiden etwas?


Im Internet finde ich Anleitungen zu NodeMCU, welche mit MicroPython verwendet werden können.
NodeMCU
https://www.ebay.de/itm/NodeMCU-V3-2-Ar ... SwI7Fb3x~a


Jetzt stehe ich natürlich wieder am Schlauch. Bei den ersten 2 steht nichts von NodeMCU, bei dem 3. schon.


Ich möchte klein Anfangen und erstmal meine Garage abfragen, ob diese offen oder geschlossen ist.
Da ich aber nicht nur 1 ESP kaufen will, da ich wenn alles funktioniert auch noch Pläne für später habe.

Vielleicht kannst du mir eine Empfehlung geben? Gerne auch auch andere ESP die nicht aufgelistet sind.

Wichtig ist für mich, dass es mit Python funktioniert. Habe mir Python etwas beigebracht. Andere Sprache kann ich gar nicht.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es besteht ein großer Unterschied. Das zweite Angebot sind nur pure Module, mit denen kannst du nichts anfangen. Das erste ist ok.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Der erste Link ist ja nur das Modul, also ohne Spannungsversorgung und direkter serieller Schnittstelle, die müßtest Du selbst bauen.
Das ist beim zweiten Link alles schon dabei, NodeMCU heißt hier nur, das ein NodeMCU-Image schon aufgespielt ist, man also theoretisch gleich damit loslegen kann (serielle Terminal-Verbindung über USB und los). Da Du aber MicroPython selbst flashen willst, ist das eigentlich egal.
Und das letzte unterscheidet sich nur darin, dass es noch mehr Pins hat, und schon eine Leiste zum einfachen Anstecken angelötet ist.
Also das erste ist zum selber basteln, wegen fehlender Spannungsversorgung, die beiden anderen sind fast gleich und zum sofort loslegen gedacht.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Oh, ich muss mich korrigieren- Sirius3 hat recht, habe die Reihenfolge der links vertauscht.
Antworten