Pi 4 mit Temperatur- und Feuchtigkeitssensor, Thema einer BA

  • Hallo,


    bitte entschuldigt, falls (bzw. dass) ich das Thema falsch eingeordnet habe bzw. hier im Fred gleich mehrere Fragen stelle, die voneinander unabhängig sind.

    Informatik ist nicht mein Steckenpferd, ich kann allerdings damit umgehen wenn man mir sagt was ich zu tun habe. Wenn ich aber bezüglich meiner Probleme suche, finde ich häufig nur fachchinesisch und steige irgendwann aus. Mein Hirn funktioniert über learning by doing, aber ich hab ziemlich Schiss den Pi aufgrund meiner Ahnungslosigkeit zu zerschießen oder zumindest in einen Zustand zu versetzen, in dem ich ihn zurückschicken muss, sodass ihn jemand wieder herrichtet.

    Ich schreibe derzeit meine BA zum Thema smart farming. Das ist aus einem Projekt an der Uni hervorgegangen.

    Dazu habe ich einen Raspberry Pi 4 bekommen, mit Temperatur- und Feuchtigkeitssensor. Damit soll ich "spielerisch" und experimentell in meinem Garten smart Farming betreiben :)

    Er gibt 3 Werte aus: Temperatur, Luft- und Bodenfeuchtigkeit. Ist auch erstmal (!) alles, was er können soll. Das Ganze wurde mir zusammengebaut und verlötet mit analog-digital-Wandler von den Betreuern geschickt.

    Ich möchte aber nicht wegen allem meine Betreuer fragen, sondern auch selbst Leistung bringen und mir Informationen besorgen. Sie haben mir schon viel geholfen indem sie ihn zusammengebaut geschickt haben und ich ihn nur noch konfigurieren musste. Deshalb meine Anmeldung hier, weil ich bisher immer gut mit Foren gefahren bin und beim recherchieren und nachlesen nicht weiterkomme.


    Das erste Problem vor dem ich stehe: ich habe ihn (mit Anleitung der Betreuer) ins WLAN eingeloggt. Das funktioniert zunächst und ich kann die Sensordaten in Echtzeit bzw. zum aktuellen Zeitpunkt abrufen: sudo python readsensors.py

    Leider wird er nach einer gewissen Zeit vom Netzwerk nicht mehr als Pi, sondern als unbekannt identifiziert. Dadurch kann ich über PuTTY nicht mehr darauf zugreifen, weil der Host fehlt. Vom Fremdzugriff ganz zu schweigen (der Pi steht in meinem Elternhaus, ich sitz in meiner Studentenbude, den passenden Port (22) habe ich am Router geöffnet). Wenn ich ihn neustarte (vom Strom trenne) geht es danach wieder. Sowohl mit der Adresse pi@raspberrypi4 als auch mit pi@[IP-Adresse des Pi] kann ich ihn im eigenen Netzwerk über PuTTY ansteuern.

    Ich habe es schon geschafft (und da bin ich stolz drauf) das Power-Management des WLAN auszuschalten, das Problem besteht aber nach wie vor.

    sudo iwconfig zeigt mir Power-Management: off an. :bravo2:

    Vor der möglichen Lösung, die LAN-Buchse quasi zu deaktivieren, scheue ich mich etwas, weil ich dann ja aufs WLAN angewiesen bin.

    Würde mich außerdem freuen, wenn mir in diesem Zusammenhang auch jemand erklären kann, wie ich aus einem fremden Netzwerk auf den Pi zugreifen kann.


    Das Nächste, was ich angehen möchte, ist Folgendes:

    Der Pi misst wohl automatisch selbst. Über den Befehl tail -f results.csv kann ich die letzten 8 Messungen im Viertelstundentakt auslesen. Ist mir aber zu wenig. Um einen lückenlosen Bericht zu erhalten, müsste ich dadurch ja alle 2h die Daten (manuell) auslesen. Gerade nachts schwierig... Gibt es eine Möglichkeit, die Anzahl an ausgegebenen Werten zu vergrößern? Optimalerweise auf 12, am besten 24h, sprich 60 - 100 Werte? Zur Not in Kombination mit Verlängerung des Messintervalls, allerdings höchstens auf eine halbe Stunde, zur größten Not auch eine ganze. Ich gehe davon aus, dass das nur eine Kleinigkeit ist, da ich nach einem Neustart des Pi immernoch die Werte von vorher abrufen kann, weshalb ich davon ausgehe, dass er speichert. Aber wie gesagt, Informatik ist nicht mein Steckenpferd.


    Ich hoffe, ihr könnt bzw. werdet ;) mir helfen. Ihr bzw. das Forum würdet eventuell auch in der Danksagung erwähnt... :P


    Viele Grüße


    Philipp

  • Hallo,


    Quote

    über den Befehl tail -f results.csv kann ich die letzten 8 Messungen im Viertelstundentakt auslesen.

    Nee, stimmt nicht. `tail` zeigt standardmäßig die letzten 10 Zeilen einer Datei an, die Option `-f` steht für "follow", d.h. tail zeigt dir "live" an, wenn eine Zeile hinzugefügt wurde.


    Wenn du die _komplette_ Datei sehen willst, dann nimm' am besten den Pager `less`.


    Wenn du den Pi "von außerhalb" erreichen musst, dann muss er eine IP-Adresse haben, die aus dem Internet erreichbar ist. Dazu gibt es Dienste wie DynDNS, die so was ermöglichen. Das musst du aber im Router deiner Eltern konfigurieren. Wie das genau geht hängt vom Router ab.


    Bzgl. der Verbindungsabbrüche: kannst du den Raspi nicht per LAN-Kabel an den Router anschließen? Dann hast du zumindest kein Problem mit möglichen Verbindungsabbrüchen wegen Signalstärke oder so im WLAN.


    Gruß, noisefloor

  • Ich habe schon sehr oft von Verbindungsabbrüchen beim Raspberry Pi 4 gehört.

    HDMI-Signal stört WLAN des Raspberry Pi 4


    Über den Befehl tail -f results.csv kann ich die letzten 8 Messungen im Viertelstundentakt auslesen. Ist mir aber zu wenig.

    Eigentlich 10, aber das wurde bereits gesagt.


    Code
    tail -n20 results.csv  # letzen 20 Zeilen ausgeben und programm beenden
    tail -fn20 results.csv # letzen 20 Zeilen ausgeben und auf neue Daten warten

    Ich wollte so ein Projekt auch mal machen, habe aber keinen Garten.
    Jedenfalls würde ich die Messung noch erweitern: PH-Wert (leider sind die Sonden teuer), Feuchtigkeit im Boden, Feuchtigkeit in der Luft, Bodentemperatur, Lufttemperatur, Sonneneinstrahlung, Windgeschwindigkeit, Luftdruck und CO2-Sättigung.

  • Hallo philet,

    den Port 22 am Router freizugeben ist noch keine gute Idee, weil es zu unsicher ist, das einfach so zu machen. Du müsstest dir erst Gedanken machen wie du den SSH Zugang und Netzwerke absichern kannst, herausfinden welche Internetanschlüsse vorhanden sind, ob dyndns eingesetzt werden kann usw.

    Im schlimmsten Fall hättest du innerhalb kürzester Zeit nach dem Öffnen von Port 22 schon die Kontrolle über den Raspberry verloren und Eindringlinge im elterlichen Netzwerk gehabt.


    Viele Grüße,

    Tigerbeere

  • erstmal danke für eure Antworten :)


    noisefloor

    sorry, dann 10 statt 8, zu wenige jedenfalls :D

    was ist denn ein pager? wie sieht der Befehl dann aus? tail less results.csv?

    Woran erkenne ich, ob eine IP Adresse aus dem Internet erreichbar ist? ich hab die genommen, die der Router mir angezeigt hat. Der ist übrigens eine Unitymedia connectbox. Dieses weiße Ding.

    Mit extra Programmen muss ich mich erst noch auseinandersetzen, dazu komme ich dann wahrscheinlich erst Mitte August (derzeit ist Prüfungsphase), außer es juckt mich zu arg in den Fingern (was durchaus möglich ist, bin leidenschaftlicher Prokrastinierer). hatte aber gehofft das direkt in PuTTY erledigen zu können.

    per LAN-Kabel die Verbindung halten ist unmöglich. Router ist im 2. OG, der Garten ist logischerweise draußen. Ein derart langes, für den Außeneinsatz fähiges LAN Kabel habe ich nicht und auch keine passende Öffnung am Haus um es nach draußen zu führen.

    Ich habe nicht das Problem, dass er die Verbindung abbricht, sondern nur nicht mehr vom Netzwerk als Pi identifiziert wird. Als verbundenes Gerät wird er weiterhin angezeigt.


    DeaD_EyE

    der Pi wird nur als unbekannt identifiziert, die Verbindung bleibt (laut Router) erhalten. HDMI Signale sollten keine in der Nähe sein. Trotzdem danke für den Link, ich schaue mal rein.

    mit tail -n100 results.csv bekäme ich die letzten 100 Werte? Muss ich am Wochenende gleich mal testen! :) Stelle mir das so vor, einmal am Tag die letzten Werte auszulesen und sie mir in eine Excel zu packen, um ne Statistik zu erstellen. Um das unter der Woche zu können, wär aber auch der Fremdzugriff zwingend notwendig.

    Je nachdem wie fit ich mit der ganzen Angelegenheit werde, kann der Pi das ja von selbst? Sind aber noch Träumereien, ich muss erstmal die anderen Dinge in den Griff bekommen.

    Weitere Sonden klingen nice, aber die von dir genannten sind auch schwer zu beeinflussende Werte (im Vergleich zur Bodenfeuchte). Außerdem ist er mir ja so von der Uni zur Verfügung gestellt worden. Ich weiß bzw. glaube nicht, dass ich ihn nach dem Projekt behalten darf.

    Vom Gärtnerstandpunkt kann ich dich ermutigen, es braucht nur einen Balkon, große Töpfe und Disziplin beim Gießen. Mit Tomatensamen (alte Sorten, gelb, schwarz, weiß, ....) könnte man dich sicher versorgen... ;)


    Tigerbeere

    danke für den Hinweis! dann mach ich das gleich mal rückgängig wenn ich am Freitag zurück komme.

    wie meinst du welche Internetanschlüsse vorhanden sind? wie könnte ich mich da schützen? wie finde ich raus, ob dyndns funktioniert?

    Ist es ratsam, das Netzwerk zu plätten und neu einzurichten (Reset-Knopf am Router)? jetzt, wo das eine Woche lang so war.


    ich hoffe, ich habe auf alles geantwortet :)


    Viele Grüße


    Philipp

  • Ich habe zum Beispiel eine öffentliche dynamische IP-Adresse, die sich täglich ändert. Da ist dyndns eine Möglichkeit das heimische Netzwerk über eine gleichbleibende Domain anzusprechen, anstelle jeden Tag die neue IP Adresse herauszusuchen und für den Verbindungsaufbau zu benutzen. Einige Anbieter bieten optional auch eine feste IP, die sich gar nicht ändert. Dann braucht man kein dyndns. Nun gibt es aber viele Internetanbieter, die keine öffentliche IP-Adressen rausrücken, sondern sozusagen nochmal einen Router bei sich hinstellen mit NAT. Du kannst dann kein Portforwarding benutzen, weil du deinen Anbieterrouter nicht konfigurieren kannst. Du bist also vor Angreifern geschützter, kannst aber auch nicht auf dein Netzwerk zugreifen und musst dich mit den Tricks der Netzwerktechnik anfreunden.

    In meinem Fall wäre Fremdzugriff also ziemlich einfach.

    • Öffentliche IP-Adresse steht im Router (alternativ z.B. wieistmeineip.de besuchen)
    • Der Raspberry bekommt eine feste private IP-Adresse im lokalen LAN z.B, 192.168.178.2
    • Router macht Portforwarding Port 22 auf 192.168.178.2 Port 22.
    • Angreifer übernehmen mein Netzwerk (oder ich verbinde mich auf Port 22 mit der herausgesuchten öffentlichen IP-Adresse)

    So geht es also nicht. Du musst Benutzeraccounts ändern, brauchst SSH-Keys für den Zugriff, solltest Passwortauthentication generell ausschalten und niemals unbeaufsichtigte Updates durchführen. Mit den Keys noch eine Passwortphrase erstellen, ggf. weitere Sicherheitsvorkehrungen treffen, fail2ban, SSH Einstellungen, Firewall...

    Am Besten am Router auch einen anderen Port wählen z.B. 19999, den du intern auf 22 weiterleitest und dann beim Verbindungsaufbau ssh -p 19999 verwenden. Das Authentication Logfile /var/log/auth.log im Auge behalten, ggf. noch andere Logs. Und das ist schon der leichteste Weg mit SSH und IP-Adresse/dyndns, ansonsten musst du dich noch mit Tunneltechnologien VPN / SSH beschäftigen.

    Kleine Fehler können die komplette Sicherheit schon stark kompromittieren. Das Thema ist also sehr komplex.


    Der Router muss nicht unbedingt resettet werden, es könnte aber sein. Der Raspberry sollte aber auf keinen Fall eingeschaltet werden! Weiteres kann man aus der Entfernung leider nicht mit Sicherheit sagen, da uns deine Netzwerkeinstellungen nicht bekannt sind.

  • wow, ok, danke!

    in dem Fall also: Schuster bleib bei deinen Leisten.. klingt wesentlich zu aufwändig, als dass ich das in Eigenregie wirklich sicher auf die Beine stellen könnte. dynamisch ist meine IP glaube ich schon. ich habe definitiv mal über die lange IP (2a02.... oder so), also nicht die mit 192.168... (das ist ja die lokale IP?) auf den Raspi zugegriffen.

    dann resette ich den Router einfach mal wenn ich zu Hause bin, so lange dauert es ja nicht und schwer is es auch nicht.

    Raspi läuft die ganze Zeit :-S ich hab diese Woche ja ausprobiert, ob meine naive Lösung funktioniert. Seither war ich nicht im Elternhaus.

    an VPN dachte ich auch schon, das kenne ich von der Uni. Bin da nur komplett ahnungslos, was die Einrichtung betrifft.

    ich dachte außerdem nicht, dass die Sicherung der ganzen Angelegenheit derart aufwändig sei. Um ehrlich zu sein, hab ich gar nicht an Sicherheit gedacht.

    Müsste ich mich bei VPN ähnlich schützen? wie aufwändig ist die Einrichtung eines VPN? bei chip.de erklären sie es, aber ich check es nicht 100% und da steht dann man solle die IP-Adresse eingeben und ich frage mich, welche... die vom Router? vom Raspi?

    Die Portöffnung lief btw folgendermaßen vonstatten: in den Routereinstellungen unter Reiter Fremdzugriff den Haken gesetzt, ich kann da (glaube ich) nur einen Port öffnen. das Kästchen mit 22 gefüllt (weil das der Port vom Raspi ist) und fertig.


    letztendlich wird der Fremdzugriff zweitrangig, wenn ich die results.csv beliebig verlängern kann. wär nur nice gewesen von unterwegs, im Idealfall mit dem Handy da reingucken zu können. just for fun...

  • Die lange ist eine öffentliche IPv6 Adresse. Das ist schonmal gut. Allerdings bin ich mit v6 noch nicht so warm wie bei v4 und mit VPN nicht so wie bei SSH. Klar ist aber, dass du dir bei VPN auch Gedanken machen musst, aber es gibt für alles auch Anleitungen und auch konkrete Hilfe bei Fragen. Du sollst hier auch nicht abgeschreckt werden, sondern erstmal nur sensibilisiert werden.

    Es gibt hier im Forum auch VPN-Experten, vielleicht machst du für den Netzwerkteil deiner Frage ein eigenes Thema im Netzwerkbereich auf und belässt hier den Rest.

  • Tigerbeere

    alles klar, dankeschön :) morgen kann ich überprüfen, ob sich die IPv6 geändert hat.


    DeaD_EyE

    habe mir den Link mit dem HDMI angesehen. am Pi ist nix angeschlossen, außer Strom. ich steuere ihn über PuTTY mit meinem Laptop


    nochmal Tigerbeere

    in PuTTY wähle ich ja eine Verbindung über SSH, gibts da sicher keine integrierte Lösung?

    Edited once, last by philet ().

  • Hallo Leute,


    Netzwerk ist neu gemacht.


    tail -n2000 hat gereicht, um mir alle je aufgezeichneten Werte auszugeben. Problem solved, danke! :) Raspi speichert also. Wieviele Werte kann er so? Hört er irgendwann, wenn er voll ist, auf zu schreiben oder überschreibt er dann die ältesten?


    Viele Grüße

  • Bis die MicroSD Karte voll ist. Den freien Speicherplatz kannst du mit df -h anzeigen lassen. Bei einer 8GB Karte könnte es demnächst relevant werden, bei 16GB eher nicht. Schau dir die Größe der csv-Datei im Dateimanager an oder in der Konsole ls -osah /<Dateipfad>.


    Ist dein WLAN Problem auch gelöst?



    Ob dein Netzwerk nun wieder sicher ist, ist weiterhin fraglich. War das Passwort noch "raspberry", oder hattest du es damals bei der Installation geändert? Wenn das Passwort nicht geändert war, ist die Wahrscheinlichkeit höher dass du ungebetenen Besuch hattest und ob das Netzwerk neuzumachen wirklich geholfen hat.


    Versuche die nachfolgenden Befehle nacheinander einzugeben:

    Code
    cat /var/log/auth.log | grep 'Accepted password'
    cat /var/log/auth.log.1 | grep 'Accepted password'

    Schaue dir die Ergebnisse genau an. Wenn keine fremden Zugriffe dabei sind, sondern nur deine eigenen, ist das ein gutes Zeichen.

  • Wieviele Werte kann er so?

    Das kannst du doch selbst ausrechnen.
    Erst den freien Platz ausgeben:

    Code
    df -h /


    Dann schauen, wie groß dein Logfile ist:

    Code
    du -h /home/server/deine_logs.log # Größe, Präfix beachten
    wc -l /home/server/deine_logs.log # Anzahl der Zeilen

    Dann nur noch free_space / size / lines

    Vorher die Einheiten umrechnen.