Posts by LamaA

    Da unterliege ich wohl einem Missverständnis:

    rc.local ist tatsächlich etwas Anderes. Ich habe ja ein Shell-Script in init.d geschrieben.

    Wahrscheinlich weil man die rc.d aktualisieren muss habe ich eine Verknüpfung zu rc.local gezogen.

    Mittlerweile finde ich System.d wirklich einfacher: Wenn man weiss was eine Unit ist und wie man eine erstellt, ist das wirklich nicht schwer.

    Ich glaube, dass wird auch bei mir die Zukunft.

    Ich habe einen aktiven Buzzer in der Schaltung.

    Den kann ich mit 3 Zeilen Code für 100ms einschalten.

    indem ich einmal am Anfang und einmal am Ende piepen lasse, kann ich es ganz gut eingrenzen:

    Ich habe die Pfade aktualisiert. Jetzt läuft es zumindest durch - Auch wenn es noch ein andres Problem gibt.

    Ich denke der Pfad kann geschlossen werden:

    Schon ulkig. Ich wette ich bekomme den Code nun auch mit rc.local zum laufen ... Aber immerhin kann ich jetzt ein Script mit systemd starten!

    :danke_ATDE::danke_ATDE::danke_ATDE:

    So ich habe es eingegrenzt.

    Ich könnte mir in den A... beissen. Meine C-Kenntnisse sind jetzt aber nicht so groß, dass ich nun wüsste, wie ich es anders schreiben sollte.

    Das Programm macht an entsprechender Stelle folgendes:

    Code
    Karten = fopen("UID.txt", "r")

    Stichwort relativer Pfad ... Wie gibt man das jetzt absolut an?

    Code
    Karten = dopen("/home/pi/Project/UID.txt", "r") 

    so?

    Tausend Danke.

    Also die Tasterüberwachung funktioniert tadellos. Erstaunlich einfach ;)

    Aber das Hauptprogramm macht Probleme:

    RFID.service

    Code
    [Unit]
    Description=RFID
    
    [Service]
    Type=Simple
    ExecStart=/home/pi/Project/RFID
    
    [Install]
    wantedBy=multi-user.target

    So müsste es laufen, da der Taster absolut unabhängig vo RFID ist.

    Mit

    Code
    sudo systemctl enable /etc/systemd/RFID.service

    kommt aber eine Meldung:

    Code
    sudo systemctl start RFID.service

    liefert leider genau die anfangs geschilderten Probleme.

    Bitte sag mir, dass ich einfach irgendwo einen Tipfehler habe?!?


    Gruß;

    LamaA

    Vielen Dank.

    #Es liest sich so, als wirke systemd deswegen so kompliziert, weil man sehr viel damit erledigen kann - oder eben nicht.

    Fragen:

    [UNIT]

    -Als .service Unit anlegen?

    -Description: einfach ein beschreibender Name

    -ggf. Wants = Unit-Description für die Taster-Überwachung?!? Oder lieber getrennt von einander starten?

    [INSTALL]

    -Welchen Wert als Target, wenn alle anderen Dienste schon gestartet sein sollen? Sind root-Rechte immer dabei oder muss irgendwo noch etwas konfiguriert werden?

    Gruß, LamaA

    Bezüglich der Pfade:

    RTFM Im Programm und in den Unterprogrammen sind keine relativen Pfade angegeben. Aber kompiliert wird gcc mit Unterpfadangaben. Spielt das eine Rolle? Was mir noch kam: Ist es egal wie ich die Bibliotheken einbinde? also z.b.

    C
    #include <string.h>
    #include "string.h"
    Quote

    Als Krückenworkaround kannst Du in rc.kocal aber eine Pause vor Deinem C-Programm eintragen, falls es wirklich nur zu früh startet

    Kannst du mir mit dem Befehl auf die Sprünge helfen?

    Das Startscript lautet rpi444 :


    noisefloor: Richtig, wer den Kopf sofort in den Sand steckt, kann gar nicht erst scheitern xD Allerdings: Ich bin beim Suchen irgendwann immer hier her geleitet worden. Und das ist definitiv eine eigene Kiste. Ich habe mal den Fehler gemacht Maschinenbau zu studieren statt IT xD Insofern fühle ich mich angesichts systemd wie ein Erstklässler vorm Zentralabi.

    hier klingt alles recht einfach. Reicht das für meine Zwecke.

    RTFM:

    systemd ist mein nächstes Anliegen, (wenn es sich mit den Pfaden nicht beheben lässt). Aber das ist doch echt schade....

    Wieso gibt es keine simple Aufgabenplanung: "wenn du sauber hochgefahren bist, dann führe Programm xyz aus"... so wie bei "hust" 'Fenstern'. Als Laie brauche ich Tage bis ich die systemd -Mechaniken kapiert habe.

    Gruß,

    LamaA

    Hallo,

    Ich habe hier ein kleines Programm, dass mir Eingaben von einem Sensor überwacht (=darauf wartet). Wenn eine Eingabe kommt, frisst es eine Textdatei, Verarbeitet diese und schreibt diese Datei neu auf die SD Karte.

    Das Programm liegt in einem Unterordner von /home/pi.

    Damit das daraus baldig gebaute Gerät praktikabler ist, bekommt es einen Taster: Bei dessen Betätigung, Soll der Pi rebooten --> das klappt super über rc.local in init.d

    Das Hauptprogramm soll ebenfalls nach einem Reboot automatisch starten (so schließt sich der Kreis: Falls das Programm irgendwann mal irgendein Problem hat, kann man den Pi neu booten und das Programm startet neu).

    Dieses Programm bekomme ich jedoch nicht so gestartet, dass es funktioniert:

    1.) rc.local:

    Das Programm startet "zu früh". Ich sehe anhand zweier LED, dass es "wie gewohnt" startet. Anhand der LED's kann ich auch erkennen dass das Programm auf eine Eingabe des Sensors (SPI-Schnittstelle) wartet. Es stürzt aber in dem Moment ab, in dem es die Textdatei öffnen muss um die dortigen Daten als Array einzulesen.

    Ähnliche symptomatik kommt vor, wenn das Programm ohne sudo ausgeführt wird... aber Programm die über rc.local gestartet werden haben doch eigentlich immer root-rechte?

    Wenn ich mit

    Code
    "sudo su"

    Das Programm ausführe funktioniert es einwandfrei.

    Ebenfalls mit sudo und dem Aufruf des Start-Scripts in init.d ... daran liegt es also nicht?

    Es funktioniert auch, dass ich sudo vor den Programmaufruf im Startscript schreibe und das Startscript ohne sudo aufrufe. Aber nichts davon funktioniert beim rebooten.

    Kann man mit der Änderung des Runlevels etwas bewirken (damit kenne ich mich nicht aus)? Es startet ja bevor die 4 Himbeeren von Jessie zu sehen sind.

    2.)LXDE Autostart

    Die Probleme mit rc.local haben mich auf LXDE Autostart gebracht - Hier sollen die Programme ja erst starten, wenn der Benutzer angemeldet ist.

    Die Eingaben hier habe ich nach bestem Gewissen gemacht (Man findet nicht sehr viel). Ich bekomme aber überhaupt keine Reaktion. Es startet nichts und ich weiss auch nicht wie man hier eine Fehlersuche starten kann. In die Autostart-Datei habe ich eingefügt:

    Code
    "@sudo /home/pi/Project/Programm"

    3.) Cron

    Scheint es in Jessie ja nicht mehr zu geben. Es gibt jedoch noch die Ordner. Daher habe ich den Programmaufruf in crontab-e mit der Startbedingung @rebooot eingegeben.

    Aber auch hier gibt es beim Autostart keine Reaktionen.

    Hat jemand einen Tip?

    Das Programm möchte ich ungern posten. Es wird aus mehreren Dateien kompiliert und hat insgesamt ca. 2000 Zeilen Code. Und es funktioniert ja.

    Teile davon kann ich natürlich posten (wenn mir jemand sagt was gebraucht wird).

    Ich bin für jede Hilfe dankbar.

    Gruß;

    LamaA