Allgemeiner Weg über übers Internet zu schalten

  • Hallo,

    ich schalte momentan über eine VPN-Verbindung(Stellt Fritzbox bereit, dahinter befindet sich der RPI) Relais, die an einem RPI B+ angeschlossen sind.
    Das funktioniert soweit sehr gut.
    Nun würde ich gerne einen ESP8266 benutzen, um den RPI Befehle schicken zu können.
    Der ESP8266 müsste ja erstmal eine VPN Verbindung herstellen können.

    Um das zu vermeiden würde ich gerne eine Internetadresse mit einem php-skript aufrufen, dass bei entsprechendem GET-Wert zB in ein txt-File schreibt, dass Relais 1 nun aktiviert ist.
    Diese Datei wird nun alle Sekunde vom RPI abgerufen und überprüft ob darin steht, Relais 1 AN oder Relais 1 AUS.

    In der anderen Richtung habe ich das schon erfolgreich laufen. Alle paar Minuten lädt der Raspberry Temperaturdaten, die in einer txt-Datei stehen über FTP auf einen Server.

    Ich frage mich nur jetzt, wenn ich alle Sekunde den RPI die Relais-Datei abrufen lasse, ob das sich negativ auf die Lebensdauer der SD-Karte auswirkt??

    Sind meine Bedenken berechtigt?

  • Ob Deine Bedenken berechtigt sind, kann ich Dir nicht sagen - ich teile sie aber. Daher habe ich für meine feuchtegesteuerte Kellerlüftung den Weg gewählt, häufig aktualisierte Dateien auf eine kleine Ramdisk zu schreiben.

    Einmal editiert, zuletzt von Manul (20. Mai 2016 um 15:43)

  • Das ist ein Teil des Arbeitsspeichers, der wie eine Platte angesprochen werden kann. Sieht bei mir in der /etc/fstab so aus:

    Code
    none           /opt/klima/graphics   tmpfs    defaults,noatime,uid=klima,gid=klima,size=10M  0       0

    Wenn ich dann in das Verzeichnis /opt/klima/graphics schreibe, landen die Dateien nicht auf der SD-Karte, sondern eben im Arbeitsspeicher. Damit sind sie nach einem reboot natürlich weg, aber für "flüchtige" Daten ist das ja nicht schlimm, die werden ja regelmäßig neu erzeugt.

  • Du kannst auch einfach, wenn du das Relais mit wiringPi ansteuerst, den Befehl aus PHP heraus ausführen lassen, mit shell_exec() zum Beispiel.

    Weiterhin wirkt sich ein reiner Lesezugriff nicht merklich auf die Lebensdauer einer SD Karte aus, die Schreibvorgänge hingegen schon. Da empfiehlt sich die Ramdisk, vor allem wenn es sich nur um "unwichtige" Dateien(mit 1 oder 0 darin) handelt, da diese zwar einen Neustart nicht überleben, die SD Karte jedoch deutlich entlasten.

    Gruß

    Einmal editiert, zuletzt von Flllo (20. Mai 2016 um 18:17)

  • Hallo, ja momentan wird direkt aus php auf die shell zugegriffen.
    Wie ich schrieb möchte ich aber auch ohne VPN-Verbinung darauf zugreifen, dh. das ich dann nicht im gleichen Netzwerk bin, daher die andere Lösung

    Manul
    Wie funktioniert das denn?
    Das heißt ich kann die Datei einfach auf diesen Pfad herunterladen -> /opt/klima/graphics
    Damit wäre die Datei dann automatisch im Ram und kann auch so ausgelesen werden ?


  • Hallo, ja momentan wird direkt aus php auf die shell zugegriffen.
    Wie ich schrieb möchte ich aber auch ohne VPN-Verbinung darauf zugreifen, dh. das ich dann nicht im gleichen Netzwerk bin, daher die andere Lösung

    Okay okay, ich glaube ich verstehe was du meinst. Du möchtest deinen Pi nicht selbst freigeben, sondern quasi einen "Vermittlungsserver" mit eben jener Textdatei verwenden? Nun, das sollte deinem Raspberry prinzipiell wenig ausmachen, lediglich /var/log/ würde ich in eine RAM Disk auslagern, da je nach Methode dann an dieser Stelle jede Sekunde der Verbindungslog geschrieben wird.

    Gruß

  • Ja genau das wäre der Sinn der Datei.

    Das Skript, welches die Datei herunter lädr liegt in diesem Verzeichnis bei mir momentan
    pi@raspberrypi ~/skripte $

    Eine Frage noch zur Ramdisk
    muss ich das genau so mit dem vorangestellten "none" in sudo nano /etc/fstab eintragen?

    welches wär denn der einfachste Pfad? Muss ich das opt mit in den Namen nehmen, oder ist das von dir?


    none /opt/klima/graphics tmpfs defaults,noatime,uid=klima,gid=klima,size=10M 0 0

    f = open( "/opt/klima/graphics/schalten.txt", 'w' )
    f.write( content )
    f.close()

    Wäre der Pfad so korrekt dann?

  • Ist das Thema nicht eher unter Software gut aufgehoben ?!?!

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

  • Also ich habe das jetzt mal mit Ramdisk eingetragen, aber sobald der log eingetragen ist, funktioniert mein webserver auf dem rpi nicht mehr. (verwende Lighttpd)

    tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=10m 0 0
    tmpfs /var/tmp_kasten tmpfs nodev,nosuid,size=1M 0 0

    Habt ihr ne Idee an was das liegen könnte?

  • Hey, ja da liegt momentan ein php-skipte das GET ausliest und es in eine Datei schreibt. Die Datei muss ja aber vom Pi abgerufen werden und speichert sie ja zwischen. Das geschieht alle Sekunde..deshalb die Frage

  • Unter /var/log eine Ramdisk zu mounten, ist keine gute Idee - damit ist dann die gesamte dort sonst vorhandene Verzeichnisstruktur nicht mehr verfügbar und Programme, die da reinschreiben wollen, könnten auf die Nase fallen. Lieber eigenes Verzeichnis dafür anlegen.

  • Hey,
    ok, das hatte ich aus einem Artikel wo es darum ging die Karte zu schonen, weil in das log-file wohl im Betrieb regelmäßig geschrieben wird.
    Das hatte ich da so übernommen.
    Ich habe noch Probleme mit supervisor. Das lief anfangs, aber nachdem ich jetzt hier das mit der ramdisk probiert habe, bekomme ich das nicht mhr zum laufen.
    Momentan steht in der konfiguration dies:

    [program:datenbank]
    command = python /var/www/html/eintragen.py
    autorestart=true
    autostart=truej

    wenn ich das starten will kommt nun diese Fehlermeldung:
    sudo service supervisor start
    Job for supervisor.service failed. See 'systemctl status supervisor.service' and 'journalctl -xn' for details.

    ->
    systemctl status supervisor.service
    ● supervisor.service - LSB: Start/stop supervisor
    Loaded: loaded (/etc/init.d/supervisor)
    Active: failed (Result: exit-code) since Mo 2016-05-23 19:05:39 CEST; 4min 18s ago
    Process: 7515 ExecStart=/etc/init.d/supervisor start (code=exited, status=2)

    Ich komme hier nicht mehr weiter :/

  • Hat noch jemand eine Idee zu supervisor?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!