1wire-Ordner schneller löschen lassen

  • Hallo docadams....


    also solche Sachen die iwie unlogisch klingen interessieren mich und ich probiere...
    Dein oben angegebenes Tutorial nach dem Du Dich gerichtet hast hat mich stutzig gemacht...
    Das beschreibt den DS18B20 die ich auch im Einsatz habe.
    Jetzt kommt's ... :D ... es ist tatsächlich so, das Du recht hast ... ich hab paar Versuche gemacht, und kann die 2 Minuten nachvollziehen.


    Du fragst das falsche w1_slave File ab.
    im :

    Code
    "sys/bus/w1/devices/28-xxxxxxxx/"


    gibt es tatsächlich auch ne w1_slave die nach ziehen des Sensors, lesen und fehlschlag noch ~2 min lebt.... ich wollt's gar nicht glauben.:wallbash:
    im:

    Code
    "/sys/devices/w1_bus_master1/28-xxxxxxxxx/"


    wird die w1_slave nach ziehen und lesen des Sensors sofort gelöscht, und open schlägt fehl.


    warum die eine noch 2 min lebt ? ... frag mich net.:)
    warum die andere sofort gelöscht wird, ... frag mich nimmer, ich hab das weiter oben beschriebene als logisch akzeptiert aber ...:denker:
    Eine Sache ist auffällig:
    wenn man sich

    Code
    "sys/bus/w1/devices"


    genauer anschaut, sind das keine "echten" Ordner sondern "Verknüpfungen" und das darunterliegende ist nocht "echt".
    Mag sein, dass das der Kernel erst nach ner gewissen Zeit bereinigt.


    probier das andere Dir, und ich hoffe und denke, dass es Erfolg bringt.


    gruß root

    Edited once, last by root ().

  • Quote

    wird die w1_slave nach ziehen und lesen des Sensors sofort gelöscht, und open schlägt fehl.


    Bei mir leider nein.


    Zunächst noch mal, die Temperatursensoren und Adressgeber verhalten sich gleich, nur dass die Adressgeber keine Datei w1_slave erzeugen. Beide erzeugen aber die Datei Name, die man öffnen, und damit nach deren Existent man fragen kann.


    Und leider verhalten sich bei mir beide Directorys gleich, also die

    Code
    /sys/devices/w1_bus_master1/01-0000161f6f4e/
    und
    /sys/bus/w1/devices/01-0000161f6f4e/


    Ich habe mal folgendes Programm geschrieben und nach Ziehen der Sensoren immer wieder gestartet:


    Die erste Fehlermeldung kam erst nach knapp 2 Minuten. Also verhalten sich bei mir beide Ordner gleich. Oder ist das Programm falsch?


    Wenn das bei dir anders ist, könnte es an der Anschlussart der Sensoren liegen? Was ich mir aber nicht vorstellen kann. Oder könnten da noch irgendwelche Kapazitäten oder so etwas sein, die dem Raspi noch signalisieren, dass da noch was vorhanden sei? Also mal laienhaft ausgedrückt.


    Oder doch etwas mit fopen probieren? Könntest du da einen Code schreiben, der das abfragt?


    EDIT:
    An der w1-Bus-Architektur kann es nicht liegen. Ich experimentiere ja an einem laufenden System. Am w1-Bus hängen also mehrere Temperatursensoren und Adressgeber. Ich habe da jetzt mal den ganzen w1-Bus abgeklemmt und nur noch einen Adressgeber (DS2401) an DATA und GND geklemmt, direkt am Raspi. Beide Ordner leben trotzdem nach dem Trennen des Sensors 2 Minuten weiter, bis sie verschwinden.


    EDIT2:
    Nur für mein Verständnis:

    Quote

    Wie schon weiter oben beschrieben "erzwingt" ja quasi ein open die geladenen Module zum erneutem lesen.


    ... von was? zum erneuten Lesen des echten Sensors? Oder zum erneuten Lesen der entsprechenden Datei in dem entsprechenden Ordner?

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

    Edited once, last by docadams ().

  • hallo,
    [/quote]
    ... von was? zum erneuten Lesen des echten Sensors? Oder zum erneuten Lesen der entsprechenden Datei in dem entsprechenden Ordner?
    [/quote]
    nun ja, w1-therm wird damit quasi zum ansprechen des Sensors und erneuten lesen gezwungen.
    Mal ne andere Frage.
    Was steht denn in dieser Datei name drin ?


    Hab leiter so ein Teil nicht hier, sonst würde mich dieses Verhalten auch mal interessieren, und ich würde mich mal ransetzen.

  • Wie der Sensor heißt, hier also

    Code
    01-0000161f6f4e


    Ich habe mir diese Datei nur ausgesucht, weil sie sich schön merken lässt. Ich hätte auch id, rw oder uevent nehmen können. Die Abfrage nach der Datei war Anfangs für mich nur ein Hilfsmittel zum Nachfragen, ob es einen entsprechenden Ordner gibt. Was für mich Anfangs als Nachweis genügte, ob der Reedkontakt geschlossen und damit das Rollo an der Position ist, wo es sein sollte.
    Ich möchte das von jedem Fenster konkret wissen, darum der Weg mit den W1-Adressgebern.

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

    Edited once, last by docadams ().

  • Ähmm... ich meinte, was in der Datei drin steht.
    guck mal mit cat name... oder sowas


    ...mal cat name vor dem ziehen, und dann das proggi laufen lassen und gucken.
    dann ziehen, das proggi laufen lassen und wieder rein gucken.


    Ich vermute, dass dann nach dem ziehen, open und close zumindestder Inhalt weg , oder geändert ist.
    ------------------------------
    Nachtrag.
    ------------------------------
    Hab das was gefunden:
    link


    Quote

    Die Seriennummer des DS2401 ist relativ leicht auszulesen, Sie entspricht lediglich der Zahlenfolge des Erstellten Verzeichnis ohne die "01-" am Anfang.


    Also hätte unser Chip zum Beispiel die Seriennummer 000008e78344


    Da scheint also die nummer drin zu stehen.
    Deswegen sagte ich.
    Den Sensor rein, testproggi einmal laufen lassen und mit cat reigucken.
    Sensor raus proggi einmal laufen lassen und wieder mit cat gucken.

    Edited once, last by root ().

  • Meinst du in #42 genanntes Programm?
    Ich habe gemacht:
    - Sensor rein
    - dann

    Code
    /sys/devices/w1_bus_master1/01-0000161f6f4e $ cat name
    01-0000161f6f4e


    - dann Sensor raus
    - dann das obige Programm zweimal laufen lassen
    - dann

    Code
    /sys/devices/w1_bus_master1/01-0000161f6f4e $ cat name
    01-0000161f6f4e


    - das wiederholt, bis nach knapp 2 Minuten, nachdem der Sensor gezogen wurde
    - ab dann ist die Datei auch weg:

    Code
    /sys/devices/w1_bus_master1/01-0000161f6f4e $ cat name
    cat: name: Datei oder Verzeichnis nicht gefunden


    Und bei dir ist der Ordner samt Inhalt kurz nach dem Ziehen des Sensors und dem Programm weg?? Was mache ich nur anders als du...


    Nur zur Sicherheit, ich habe den w1-Bus nach diesem Tut aufgebaut, und zwar nach Bild zwei: Beschaltung für lange Kabellängen, allerdings mit 3k3 Ohm-Widerstand. Nicht dass ich da schon was anders mache.

  • Hallo,


    Quote

    Und bei dir ist der Ordner samt Inhalt kurz nach dem Ziehen des Sensors und dem Programm weg??


    Genau, ich lasse das Proggi in ner Endlosschleife laufen, frage den Sensor alle 10 sec ab.
    Paralel dazu gucke ich mit dem PC über RDP das Dir an.
    Sensor ziehen, rein ins Dir,gucken.... das sind max 3 sec ... weg isses.


    Die Verkabelung nach dem Tut ist ok.
    Nur eines ist komisch.
    In dem angegebenen link schreiben die :

    Quote

    Die Seriennummer des DS2401 ist relativ leicht auszulesen, Sie entspricht lediglich der Zahlenfolge des Erstellten Verzeichnis ohne die "01-" am Anfang.
    Also hätte unser Chip zum Beispiel die Seriennummer 000008e78344


    Und bei dir ist die "01-" mit dran ? :s
    Oder hast ein spezielles Python, das nur im 2-min Takt Files öffnet ? :lol::lol::lol:


    Ich habe heute eh was bestellt, und so'n Ding mitgeordert.
    Brauch ihn zwar nicht, aber das Phänomen reizt mich jetzt auch mal :)


    paar Tage, dann geb ich Bescheid.


    gruß root

  • Quote

    Genau, ich lasse das Proggi in ner Endlosschleife laufen, frage den Sensor alle 10 sec ab.


    Ich denke, hier könnte mein Fehler liegen. Wie fragst du ab?


    Die Temperatur- und Adresssensoren verhalten sich bei mir gleich.
    Mal sehen, ob es da bei dir Unterschiede gibt.


    Quote

    Oder hast ein spezielles Python, das nur im 2-min Takt Files
    öffnet ?


    Vielleicht ist das eine Idee. Ich messe ja alle 2 Minuten die
    Temperaturen, was ich in der Crontab eingerichtet habe. Allerdings werden
    da auch nur die Temperatursensoren angesprochen.
    Das entsprechende Programm von Martin Kompf sieht gekürzt so aus und wird alle 2 Minuten ausgeführt[/quote]:


    Da werden zwar nur die Temperatursensoren angesprochen, aber vielleicht
    in diesem Zuge die anderen Sensoren auch. Dafür spricht, dass das
    Verschwinden nie länger als 2 Minuten dauert. Dagegen spricht, dass es
    statistisch aber auch mal deutlich kürzer als die 100...110 Sekunden
    dauern müsste, was ich gemessen habe. Da ich jetzt nicht zu Hause bin,
    kann ich da jetzt nicht prüfen.

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

    Edited once, last by docadams ().

  • Hallo,


    und dagegen spricht auch iwie, dass dein Testproggi nach ziehen des Sensors nicht anspricht.


    Aber ok, wie auch immer ... diese Nuss wird nächste Woche geknackt... :thumbs1:
    Wär ja gelacht, da hab ich schon an ganz anderen Sachen ausgebrütet .. :lol:

    Quote

    Ich denke, hier könnte mein Fehler liegen. Wie fragst du ab?


    Nun, ich versuche diese w1_slave zu öffnen und zu lesen, wenn der Sensor gezogen wurde ist sie weg und ich bekommen fopen() fail zurück.
    BTW:
    zeig mal diesen crontab


    gruß root

    Edited once, last by root ().

  • Der Crontab-Eintrag sieht so aus:

    Code
    # Temperaturmessung
    2-57/5 * * * * /home/pi/skripte/temperatur/gettemp.py >> /home/pi/skripte/tempe$


    Die ganze Temperatur-Abfrage geht auf eine Idee von Martin Kompf zurück. (Seine Seite ist gerade offline, darum kann ich keinen Link schicken)

    Quote

    Nun, ich versuche diese w1_slave zu öffnen und zu lesen


    Zeig doch mal den Code, wie du das machst. Ich denke, dass da mein Fehler steckt.


    Wenn ich meine Temperatursensoren trenne, leben deren Ordner unter /sys/bus/w1/devices/ und unter /sys/devices/w1_bus_master1/ noch knapp 2 Minuten weiter. Insofern verhalten sie sich nicht anders als die Ordner der Adressgeber. Wenn das bei dir schneller verschwindet, wird es vermutlich mit dem Adressgeber bei dir auch schneller gehen.


    Da wohl meine Verdrahtung OK ist, muss es am Abfrage-Code liegen. Darum meine Frage, wie du abfragst.

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Hallo,

    Quote

    Wenn ich meine Temperatursensoren trenne, leben deren Ordner unter /sys/bus/w1/devices/ und unter /sys/devices/w1_bus_master1/ noch knapp 2 Minuten weiter.


    Das ist ja klar.
    Die temp-messung wird über die crontab aufgerufen... und wenn die crontab alle 2 min angestossen wird....passiert solange nix.
    Wenn der Sensor gezogen wird und das File nicht geöffnet wird, lebt alles weiter.
    Dein test-proggi für den DS2401 stösst du aber von Hand an, oder ?.:fies:


    Quote

    Da wohl meine Verdrahtung OK ist, muss es am Abfrage-Code liegen. Darum meine Frage, wie du abfragst.


    Ok, das wird dir allerdings nicht viel sagen wenn du C nicht kennst.
    Das sind meine 4 Sensoren,nur definiert.

    Code
    char *file_1 = "/sys/devices/w1_bus_master1/28-0000055e93c9/w1_slave";
    char *file_2 = "/sys/devices/w1_bus_master1/28-0000055f2593/w1_slave";
    char *file_3 = "/sys/devices/w1_bus_master1/28-0000055f1ef0/w1_slave";
    char *file_4 = "/sys/devices/w1_bus_master1/28-0000055f29bb/w1_slave";


    Das ist der jeweilige Aufruf alle 10 sec jeden Sensor

    Code
    err = read_sensor(1);
    		err = read_sensor(2);
    		err = read_sensor(3);
    		err = read_sensor(4);


    das ist der Öffnungsversuch des übergebenen Files.
    Wenn nicht geöffnet werden konnte, werden Fehlerflags gesetzt


    dann wird das File untersucht, ob CRC ok usw.


    hier wird wieder geschlossen

    Code
    fcloseall();


    das wars.
    der komplette Code würde dich wohl nur durcheinanderbringen.


    Ich könnte noch folgendes machen.
    den Code umstricken, deinen Filenamen eintragen, neu kompilieren und die dann lauffähige Datei hier anhängen.
    Dann kanste es mal laufen lassen... er sagt dann alles 10 sec.. da oder nicht.
    Du müsstest nur die pigpio.lib installieren und fertig.
    Da komme ich aber erst heute abend/nacht dazu.


    gruß root



    --------------------------------
    Nachtrag
    --------------------------------
    Wollte mich grade hinsetzen und das Proggoi umstricken... glaube kann mir das sparen.

    Quote

    Da werden zwar nur die Temperatursensoren angesprochen, aber vielleicht
    in diesem Zuge die anderen Sensoren auch. Dafür spricht, dass das
    Verschwinden nie länger als 2 Minuten dauert.


    Quote

    Dagegen spricht, dass es
    statistisch aber auch mal deutlich kürzer als die 100...110 Sekunden
    dauern müsste, was ich gemessen habe.


    Das kann schon sein, das die Zeit kürzer ist.
    Wenn Sensoren nicht da sind dauert ja das lesen einige Sekunden bis Abbruch, und das mal nicht gef. Sensor.
    Wenn der Timer aber schon gestartet wurde , das Proggi aber um (~3sec x fehlender Sensor) länger ist, ist auch die lebensdauer des Files kürzer.
    .... Du verstehen ? ...:lol:
    Bin mir absolut sicher dass es daran liegt.
    also, überprüfe, wer und in welchen Zeiten dein DS2401 abgefragt wird.
    ...wirst sehen, das wars.

    Edited once, last by root ().

  • Hallo, ich bin erst frühestens Mittwoch wieder zu Hause. Ich hab also nicht verzweifelt :) kann also derzeit nur nicht so, wie ich gerne wollte.

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Hallo,
    also, heute kam der DS2401.
    Zusammen mit 3 Temp-Sensoren angeschlossen und Testproggi laufen lassen.
    Was soll ich sagen.
    Die Files/Ordner leben tatsächlich ~2min ... wenn man alle 2min abfragt :D


    Es ist schlicht so, dass die Lebensdauer der Ordner rein abhängt vom ersten erfolgreichen Abfragen bis zum ziehen und nächster Abfrage.
    Selbst die unterschiedliche Lebensdauer zwischen 2 Abfragen lässt sich provozieren durch ziehen mehrerer Sensoren.
    Beispiel:
    Die Sensoren 1 2 3 4 werden in dieser Reihenfolge abgefragt.
    Ich ziehe die Sensoren 1-3, und starte die Abfrage im 30sec Zyklus.
    Nach starten seh ich nach ~3 sec den Hinweis S1 nicht gefunden, nach ~6sec ..S2 nicht gefunden usw. nach ~10sec seh ich S4 ist da....
    Der Timer wurde aber nach Abfragestart sofort neu aufgezogen.
    Wenn ich nach "S4 gefunden" sofort S1-S3 reinstöpsel und S4 klaue,lebt das S4 File noch max ~15 sec, bis zur nächsten Abfrage.
    Ich hab da nicht mit ner Stoppuhr drangesesssen, sondern grob mitgezählt.
    was sagt uns das ? Erstaunlicherweise stimmen Theorie und Praxis mal überein :^^:


    gruß root

    Edited once, last by root ().


  • Ich ziehe die Sensoren 1-3, und starte die Abfrage im 30sec Zyklus.
    Nach starten seh ich nach ~3 sec den Hinweis S1 nicht gefunden


    das ist es doch was ich von Anfang an meinte, durch eine Abfrage bekomme ich den Status, ist noch da oder nicht !



    ist der 1w Sensor ansprechbar kann er nicht unterbrochen sein


    was interessiert denn das Vorhandensein ob die Datei noch da ist, was wichtig ist, kann ich mir den Inhalt ansehen ? Das startet doch den Abfragevorgang genau wie bei den TempSensoren.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • was interessiert denn das Vorhandensein ob die Datei noch da ist, was wichtig ist, kann ich mir den Inhalt ansehen ? Das startet doch den Abfragevorgang genau wie bei den TempSensoren.


    :wallbash:
    na sauber... jetzt spielst aber Miezekatze, die sich selbst in den Schwanz beißt.
    Sicher wird das File gelesen... aber ich kann nix lesen, wenn nix da.
    oder... is nix da,kann ich nix lesen


    Das bezieht sich auf seine Theorie:

    Quote

    Das liefert korrekt den Inhalt der zu prüfenden Datei name. Aber eben 2 Minuten zu lang.


    Das sind eben keine 2min sondern nur vom ziehen bis zum nächsten Leseversuch.
    Dann lebt auch die Datei nimmer, und ich kann nix lesen.


  • upps habe ich das falsch verstanden ?


    die Datei ist noch 2 Minuten da obwohl der Sensor weg ist !


    soweit bin ich noch syncron und man kann die Datei auch noch 2 Minuten lesen ?


    das wundert mich doch, denn der 1w DS18B20 startet bei Leseversuch die Wandlung und das geht schief wenn er nicht da ist !


    soll das ausgerechnet bei dem Portsensor anders sein ?


    Ich glaube ich verstehe das ohne eigene Tests immer noch nicht.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ich kann es kaum erwarten, wieder zu Hause zu sein.


    Was ich als mein Fehler erkannt habe ist, dass ich einfach nach der Existenz der Datei geschaut habe. Ich muss sie _öffnen_.


    Vorab schon mal 2 für mich wichtige Fragen.


    Mit testproggi ist mein in #36 vorgestelltes Python-Skript gemeint?? Ich kann das jetzt nicht zitieren mit dem Handy.


    Darf ich das _nicht_ händisch starten? Sondern mit crontab oder noch anders?

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Hallo,
    ...Herr erklär mir bitte wie ich was erklären soll...:lol:
    menschliche Sprache ist was feines, wenn man aneinander vorbeiredet.:thumbs1:



    upps habe ich das falsch verstanden ?


    weiss ich nicht


    die Datei ist noch 2 Minuten da obwohl der Sensor weg ist !


    jain..wenn der Lesezyklus 2 min beträgt dann ja, wenn nach 1 min gelesen wird, ist sie halt nach 1min weg.Denn nicht lesen lässt sie ja


    soweit bin ich noch syncron und man kann die Datei auch noch 2 Minuten lesen ?


    nein, wenn er gezogen wird und dann sofort gelesen, isse weg.


    das wundert mich doch, denn der 1w DS18B20 startet bei Leseversuch die Wandlung und das geht schief wenn er nicht da ist !


    genau das hab ich viel weiter oben schon gesagt.


    soll das ausgerechnet bei dem Portsensor anders sein ?


    nein, das konnte ich ja heute nachvollziehen.


    Deswegen vermute ich, dass docadams Abfrage alle 2 min stattfindet.

    Quote

    Mit testproggi ist mein in #36 vorgestelltes Python-Skript gemeint?? Ich kann das jetzt nicht zitieren mit dem Handy.


    Darf ich das _nicht_ händisch starten? Sondern mit crontab oder noch anders?


    gemau das meine ich.
    warum solltest Du es nicht händisch starten können ?
    Ich frag mich eh...warum über die crontab ?
    Wenn ich ein Proggi schreibe, bleibe ich drin, mache zeitgesteuert das was ich eben will.
    Dann, was weiss ich nen sleep einlegen... usw.


    In diesem Sinne.. hoch lebe die menschliche Ausdrucksweise :lol:


    Aber... wenn das jetzt bei docadams anders sein sollte ... geh ich mit meinem rpi ins Kloster :angel:


    nix für ungut an alle :thumbs1:


    gruß root

    Edited once, last by root ().

  • Weil ich bisher das Testprogramm händisch gestartet habe. Und ich dabei 2 Minuten lang den Inhalt der Datei als Antwort zurück bekommen habe, bis dann die Fehlermeldung kommt.

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,


  • Weil ich bisher das Testprogramm händisch gestartet habe. Und ich dabei 2 Minuten lang den Inhalt der Datei als Antwort zurück bekommen habe, bis dann die Fehlermeldung kommt.


    wow!!!
    Etzt nem ich Dein Proggi, stricke es auf meinen Sensor um (weiss nicht warum, aber ich hasse Python, aber egal) und lasse es inner Endlosschleife laufen.


    Parallel dazu klappere ich schon mal Klöster ab, wer denn grad nen Novizen braucht.
    Aber heut nimmer.


    gruß root

    Edited once, last by root ().