Hallo liebe PY-Gemeinde.
Mein kleines Projekt "Terrarium-Kontrolle" funktioniert soweit (lokal) - hat aber dabei diverse Probleme an den Tag gelegt, die ich gerne auch irgendwie lösen möchte.
Als Idee habe ich, das Demo-Script des Sensor-Lieferanten (GY-21 von AZ-Delivery) genutzt, um damit dann die Beregnung zu steuern.
Das funktioniert auch soweit, aber nun zum Problem:
Das Script läuft auf einem RasPi und wird nach dem einloggen mit "script.py" gestartet.
Dann macht es brav seine Ausgabe von Luftfeuchte und Temp und scrollt dann im eingestellten Rhytmus die Ausgabe immer weiter rauf (auf dem Screen).
Das mit dem "Mailversenden" werde ich per Funktion mit einbinden, so denn das Mail-Script als Funktion im ersten Script einbindbar ist.
Wie könnte ich es nun erreichen, das diese Ausgabe auch irgendwie zu Kontroll-Zwecken genutzt werden kann, wenn ich z.B. im Urlaub bin, und sehen möchte, ob das Script noch läuft?
Oder wie die aktuelle Temp/Luftfeuchte gerade ist? Kann ich mich quasi "von extern" auf den PI einloggen und das Script dann noch mal (also ein zweites Mal) aufrufen? Auch wenn es noch/schon läuft?
Ich habe davon leider zu wenig (besser "keine") Erfahrung, wie man so etwas auf die Beine stellt.
Oder kann der Pi die Werte in eine Datei schreiben und diesen dann auf einem Externen Server ablegen - oder Google-Drive, o.ä. - so, das ich dann von Extern irgendwie an die Daten komme.
Oder was ganz anderes?
Bin gespannt auf Eure Anregungen.
Danke schon mal.
Neuling: Grund-Ansatz gesucht
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@dermaxem: Ich würde ja erst einmal ganz generell davon abraten das Wohlergehen von Lebewesen von einem Skript auf einem normalen Betriebssystem abhängig zu machen.
Am einfachsten wäre es das Programm in einer ``screen``- oder ``tmux``-Sitzung laufen zu lassen. Vielleicht mit ``byobu`` als Frontend. Dann kann man sich da jederzeit per SSH drauf schalten. Bleibt noch die Frage wie man im Urlaub dann von draussen da dran kommt, aber das ist dann mehr eine Frage Deines Netzwerks und was Dein Router und Dein Internetanbieter leisten können. Eventuell noch in Kombination mit einem DynDNS-Dienst.
Am einfachsten wäre es das Programm in einer ``screen``- oder ``tmux``-Sitzung laufen zu lassen. Vielleicht mit ``byobu`` als Frontend. Dann kann man sich da jederzeit per SSH drauf schalten. Bleibt noch die Frage wie man im Urlaub dann von draussen da dran kommt, aber das ist dann mehr eine Frage Deines Netzwerks und was Dein Router und Dein Internetanbieter leisten können. Eventuell noch in Kombination mit einem DynDNS-Dienst.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Es gibt verschiedenste Wege das zu erreichen, persoenlich wuerde ich mal in MQTT und entsprechende cloud-angebote reinschauen, bei denen du fuer kein oder kleines Geld oeffentlich erreichbare Dashboards bauen kannst.
Liest sich spannend, aber ich bin ja froh, das ich ein Script anpassen und zum laufen gebracht habe. Die Integration von E-Mail via PY machte schon die ersten Kopfschmerzen.
Meine Idee war ja schon, das der pi Daten an einen Web- oder SFTP-Server (oder Googlecloud) schickt. Dann könnte ich die dort ansehen. MQTT-Broker ist da schon eine stärkere Herausforderung denke ich.
Hallo,
es ist trotzdem machbar, du brauchst nur "etwas" Durchhaltevermögen. Eins meiner ersten Projekte war so etwas ähnliches, nur für Schildkröten. Ich habe mir die Werte auf einer Webseite darstellen lassen. Zum einen die aktuellen und zum anderen ein Diagramm, damit man den Verlauf der letzten 24 Stunden sehen kann.
Wenn du das machen willst, dann musst du dich damit abfinden, dass das Projekt erst mal still steht und du dich mit Python vertraut machen musst. Da führt meiner Meinung nach kein Weg daran vorbei und dann tauchen immer noch genügend Fragen auf.
Grüße
Dennis
es ist trotzdem machbar, du brauchst nur "etwas" Durchhaltevermögen. Eins meiner ersten Projekte war so etwas ähnliches, nur für Schildkröten. Ich habe mir die Werte auf einer Webseite darstellen lassen. Zum einen die aktuellen und zum anderen ein Diagramm, damit man den Verlauf der letzten 24 Stunden sehen kann.
Wenn du das machen willst, dann musst du dich damit abfinden, dass das Projekt erst mal still steht und du dich mit Python vertraut machen musst. Da führt meiner Meinung nach kein Weg daran vorbei und dann tauchen immer noch genügend Fragen auf.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Hallo Dennis,
danke für die Idee. Mein Haupt-Problem ist, das ich eine "Deadline" habe, da wir ende der Sommerferien NRW weg wollen. Bis dahin würde ich gerne was haben, was erst mal funktioniert und zumindest die Werte transportiert.
Mein Script läuft, stellt die Werte fest und gibt sie aus. Liegt ein Wert außerhalb eines Vergleichswertes, dann wird eine Mail geschickt. Darauf hin kann ich dann das Beregnen extern antriggern.
Das passiert via Hausautomation, schaltbare Steckdose.
Fehlt halt der Transport der Werte. Ich dachte auch schon mal dran, auf dem Pi einen Mini-Webserver zu installieren, der dann die Werte "irgendwie" sehen/darstellen kann. Via FB und DynDNS sollte ich auch da drauf kommen können.
danke für die Idee. Mein Haupt-Problem ist, das ich eine "Deadline" habe, da wir ende der Sommerferien NRW weg wollen. Bis dahin würde ich gerne was haben, was erst mal funktioniert und zumindest die Werte transportiert.
Mein Script läuft, stellt die Werte fest und gibt sie aus. Liegt ein Wert außerhalb eines Vergleichswertes, dann wird eine Mail geschickt. Darauf hin kann ich dann das Beregnen extern antriggern.
Das passiert via Hausautomation, schaltbare Steckdose.
Fehlt halt der Transport der Werte. Ich dachte auch schon mal dran, auf dem Pi einen Mini-Webserver zu installieren, der dann die Werte "irgendwie" sehen/darstellen kann. Via FB und DynDNS sollte ich auch da drauf kommen können.
Hmm... Wenn das E-Mail versenden schon klappt. Wieso gehst du nicht erstmal hin und lässt dir in regelmässigen Abständen die jeweiligen Werte zusenden? Wenn dann KEINE Werte kommen, weißt du, dass was faul ist .
Ich gehe ja mal davon aus, dass du das mit dem Zugriff von außen das schon probiert hast? Viele Provider machen CG-NAT, das heißt dann, dass du eben nicht so ohne weiteres von außen per DynDNS drauf kommst. Dann wirds ein wenig aufwendiger. ich hatte das so gelöst, dass ich mich per VPN aus meinem Netz auf einen vserver verbunden hab und dann von unterwegs über den vserver auf mein internes Netz bin. Hat super funktioniert. Jetzt mit einem Vertragswechsel hab ich endlich einen richtigen Dualstack und ich kann direkt auf den Router gehen ...
Ich gehe ja mal davon aus, dass du das mit dem Zugriff von außen das schon probiert hast? Viele Provider machen CG-NAT, das heißt dann, dass du eben nicht so ohne weiteres von außen per DynDNS drauf kommst. Dann wirds ein wenig aufwendiger. ich hatte das so gelöst, dass ich mich per VPN aus meinem Netz auf einen vserver verbunden hab und dann von unterwegs über den vserver auf mein internes Netz bin. Hat super funktioniert. Jetzt mit einem Vertragswechsel hab ich endlich einen richtigen Dualstack und ich kann direkt auf den Router gehen ...
In meiner FB kann ich unter "Heimnetz-Netzwerk-Netzwerkeinstellungen" den DNS-Rebind für meine DYN-DNS-Adresse aufheben. Somit komme ich aus meinem LAN via Dyn-Dns auch wieder auf meinen Router und dann auf den PI.
Mit vielen Provider-Routern geht das aus "Sicherheits-Gründen" nicht.
Aber das ist nicht das Thema.
Ja, das mit der Mail ist schon ein erster Schritt, und auch kann ich durch Aufrufen einer URL das Beregnen starten. Aber mein Haupt-Problem hat sich leicht verändert. ICh brauche etwas, das auch dem PI sofort beim Starten losläuft, dann auch "Sichtbar" ist, wenn ich mich einlogge.
Aktuell wird das Script ja gerstoppt, wenn ich die SSH-Session kille.
Mit vielen Provider-Routern geht das aus "Sicherheits-Gründen" nicht.
Aber das ist nicht das Thema.
Ja, das mit der Mail ist schon ein erster Schritt, und auch kann ich durch Aufrufen einer URL das Beregnen starten. Aber mein Haupt-Problem hat sich leicht verändert. ICh brauche etwas, das auch dem PI sofort beim Starten losläuft, dann auch "Sichtbar" ist, wenn ich mich einlogge.
Aktuell wird das Script ja gerstoppt, wenn ich die SSH-Session kille.
Das hat doch __blackjack__ in seiner ersten Antwort schon geschrieben: screen bzw. tmux ist die Lösung.
Falls noch keine Vorkenntnisse in der korrekten Konfiguration öffentlich erreichbarer SSH Server (und Server generell) bestehen, kann ich nur raten, sich vorab damit zu befassen, wie man so etwas sicher konfiguriert (dazu gibt es diverse Anleitungen im Netz). Wenn du SSH einfach so nach außen öffnest, kann es ansonsten gut sein, dass der Raspi und im ungünstigsten Fall weitere Teile deines Netzwerks, nach deinem Urlaub nicht mehr dir gehorchen. Erfahrungsgemäß dauert es höchstens wenige Stunden, bis man die ersten automatisierten Login-Versuche verzeichnen kann, wenn man SSH auf dem Standard-Port betreibt. Persönlich würde ich es wenn möglich immer vermeiden, SSH überhaupt nach außen zu öffnen.
Habe mich für das Thema:
"https://tutorials-raspberrypi.de/raspbe ... auswerten/"
Hier werden - wenn es denn klappt - die Messdaten übertragen an https://thingspeak.com/
Das Beispiel möchte ich nutzen, erhalte aber diesen Fehler:
Aber genau so ist es im Beispiel angegeben. Was kann das sein?
"https://tutorials-raspberrypi.de/raspbe ... auswerten/"
Hier werden - wenn es denn klappt - die Messdaten übertragen an https://thingspeak.com/
Das Beispiel möchte ich nutzen, erhalte aber diesen Fehler:
Code: Alles auswählen
channel = thingspeak.Channel(id=channel_id, write_key=write_key, api_key=read_key)
TypeError: __init__() got an unexpected keyword argument 'write_key'
OK, habe "rausgefummelt". Aktuell darf man wohl nur "api_key" übertragen und dieser muss dann den write oder read enthalten.
Daten werden transportiert und können auch aktuell eingesehen werden.
(steht aktuell auf 2public")
https://thingspeak.com/channels/1776318
Soweit schon mal das Daten-Sammeln.
-
Was ich noch nicht geschafft habe, das in meiner Schleife die Funktion zum mailen aufgerufen wird.
-
Und ich müsste irgendwie das Script als "autostart" anlegen, das es weiterläuft, wenn ich die SSH-Verbindung trenne.
Mit "Multiplexer" usw, habe ich mir angefangen durch zu lesen, aber wenn das Programm als Autostart losläuft, wenn der Pi strom bekommt, dann langt das erst mal.
Daten werden transportiert und können auch aktuell eingesehen werden.
(steht aktuell auf 2public")
https://thingspeak.com/channels/1776318
Soweit schon mal das Daten-Sammeln.
-
Was ich noch nicht geschafft habe, das in meiner Schleife die Funktion zum mailen aufgerufen wird.
-
Und ich müsste irgendwie das Script als "autostart" anlegen, das es weiterläuft, wenn ich die SSH-Verbindung trenne.
Mit "Multiplexer" usw, habe ich mir angefangen durch zu lesen, aber wenn das Programm als Autostart losläuft, wenn der Pi strom bekommt, dann langt das erst mal.
Wenige Stunden ist gut. Ich habe vor ein paar Monaten bei mir zu Hause am Router (Unifi USG) ein VPN zum Testen eingerichtet. Es hat keine 2 MINUTEN gedauert, da kamen schon die ersten Login-Versuche.nezzcarth hat geschrieben: ↑Dienstag 21. Juni 2022, 17:48 Erfahrungsgemäß dauert es höchstens wenige Stunden, bis man die ersten automatisierten Login-Versuche verzeichnen kann, wenn man SSH auf dem Standard-Port betreibt. Persönlich würde ich es wenn möglich immer vermeiden, SSH überhaupt nach außen zu öffnen.
Auf meinem vServer gings sogar noch schneller, Fail2Ban ist glaub ich im Moment das wichtigste Programm auf dem vServer..
SSH vom Standardport wegnehmen hält aber heute auch nur wenige Bots ab. Ich habs vor einige Zeit auch mal probiert. Die Anzahl der Login-Versuche ist nicht fühlbar zurückgegangen. Dann lieber ein aktuelles SSH mit Keys (+ vielleicht Passwort)
Für diesen Fall hier, wenn ja eine Fritzbox vorhanden ist würde ich halt einfach den FritzVPN Dienst (soferns den noch gibt) nutzen.
Zum "Problem" mit dem Autostart: Auf die Schnelle hab ich das hier gefunden (habs selbst eeewig nicht mehr gemacht) https://askubuntu.com/questions/919054/ ... 059#919059
Wenn Du in der SSH-Session bist kannst Du mit strg + Zdermaxem hat geschrieben: ↑Mittwoch 22. Juni 2022, 00:13 Und ich müsste irgendwie das Script als "autostart" anlegen, das es weiterläuft, wenn ich die SSH-Verbindung trenne.
Mit "Multiplexer" usw, habe ich mir angefangen durch zu lesen, aber wenn das Programm als Autostart losläuft, wenn der Pi strom bekommt, dann langt das erst mal.
das script pausieren und dann mit z.B. dem kommando "bg 1"
in den Hintergrund "schieben", sodass es auch beim beenden der ssh-session noch weiter läuft
Siehe auch hier: https://oracle-base.com/articles/linux/ ... 20commands.
Schöne Grüße
und funktioniert auch irgendwie nicht. Wenn ich das so machen, dann den Putty schliesse, dann werden keine Daten mehr an den Server gesendet.
- __blackjack__
- User
- Beiträge: 13111
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@dermaxem: Das kann nicht sein. `systemd` ist ein Dienst der dauerhaft läuft und der für das starten/stoppen/… von Diensten zuständig ist, die dauerhaft laufen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
ich meinte das mit dem "bg 1" - das mit dem SystemMD ahbe ich noch nicht gestestet.__blackjack__ hat geschrieben: ↑Mittwoch 22. Juni 2022, 14:40 @dermaxem: Das kann nicht sein. `systemd` ist ein Dienst der dauerhaft läuft und der für das starten/stoppen/… von Diensten zuständig ist, die dauerhaft laufen.