Posts by Alti

    Hallo zusammen,


    nochmal vielen Dank für die ganzen Tips und Ratschläge und auch Nachfragen. Wie ich sagte dauern die Test halt sehr lange. Aktuell läuft das "Script" von Hofei seit rund 11,5 Stunden ohne Ausfall. Gestern zB hatte ich mit den beiden folgenden Scripten nach 1168 Minuten (also rund 20 Stunden) erst den Ausfall.

    Ich versuche alle Fragen zu beantworten und Tips "abzuarbeiten", aber ich gebe zu, dass ich mit ein paar Sachen nichts anfangen kann, bzw. mein Wissen (noch) nicht ausreicht.

    Also zu dem rpi-update; mir wäre nicht bewußt das mal gemacht zu haben. Der Pi läuft schon seit 3 Jahren bzw. habe ich vor 3 Jahren aufgesetzt und wenn ich das richtig verstanden habe sollte man das rpi-update nicht "prophylaktisch" machen.

    Wegen dem möglichen Speicherproblem hatte ich mir, wie oben beschrieben, mit einem inline bash script geholfen.

    Das war der letzte Eintrag im ps aux vom Python Script:

    root 3044 0.0 0.8 24244 3664 pts/0 S 07:27 0:00 sudo python /mnt/samba/Gartenbrunnen/PumpenfernsteuerungV2.1.py

    root 3048 41.4 2.5 15252 11256 pts/0 R 07:27 66:45 python /mnt/samba/Gartenbrunnen/PumpenfernsteuerungV2.1.py

    die 41% CPU Auslastung war über den gesamten Zeitraum in der Größenordnung, das Gleiche mit den 2,5% Speicher.


    Letzter Punkt für jetzt, wie mache ich einen Stresstest?


    Viele Grüße

    Heiko

    Wenn Auffälligkeiten rot sind habe ich hier folgendes...

    Code
    [   13.003685] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
    [   13.004133] usbcore: registered new interface driver brcmfmac
    [   13.338394] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
    [   13.338588] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
    [   13.339705] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Oct 23 2017 03:55:53 version 7.45.98.38 (r674442 CY) FWID 01-e58d219f

    Ich bin des lesens des dmesg nicht mächtig :(

    Vielen Dank erstmal für die Rückmeldungen. Leider dauern die Tests sehr lange, weil der Reset mal nach 15 Minuten und mal nach 6 oder 8 Stunden erfolgt, deshalb hier erste kurze Rückmeldung meinerseits.


    Ja, ich weiß Python 3 ist angesagt, aber die Scripte sind schon älter und bisher passte es (... bisher...) Never change a running system...

    Ich hatte auch schon angefangen jetzt die Scripte anzupassen, aber ich bekomme die Module die ich dafür brauchen nicht in Python 3 registriert.


    Ich habe den Eindruck, dass der Python interpreter eine Macke hat, denn nur wenn ein Python script läuft resettet der PI, selbst wenn ich uralt scripts nehme von letzem Jahr, die Monate lang liefen, resettet er jetzt.

    Ich habe jetzt MQTT wieder installiert und hab ein kleines mini mqtt test script laufen lassen, das lief verrückterweise über Nacht durch, die anderen resetten den PI weiterhin. Kann es sein, dass eines der Module (also "Import blabla") einen Schlag weg hat. Den die Imports sind bei allen Scrips gleich (ausser dem Testscript)


    Python
    import os.path
    import serial
    import time
    import datetime
    import sqlite3
    from datetime import datetime
    import os, sys

    Der Pi hängt mit einem Arduino zusammen an einem 50Watt Netzteil mit sauberen und sabilen 5,06 Volt. Der PI ist ein PIZero. Wobei ich bisher noch nicht geststet habe, ob der Effekt mit ganz eigener Stromversorgung auch kommt. Werde ich als nächstet testen.


    Viele Grüße

    Heiko


    PS:

    Die Anlage steht in einer kühlen Garage.

    Hallo zusammen,


    ich habe einen sehr merkwürdigen Effekt.


    Python führt bei meinem Pi nach einer nicht nachvollziehbaren und variablen Zeit einen hardreset durch, bzw. läßt den Pi neustarten.

    Ich greife auf den PiZero per Putty zu. Mit dem Putty fällt es direkt auf. Die Meldung vom Putty ist "Network error: Software caused connection abort". Der Neustart passier auch wenn der Putt nicht läuft, dann merke ich es nur nicht.

    Diese Neustart passiert nur, wenn ein Python script läuft. Wenn kein Python script läuft, gibt es auch kein Neustart, dann läuft der PI tadellos durch.

    Die ganzen Python scripte liefen vorher über Monate tadellos und sind halt leider notwendig für meine Gartenbewässerung.

    "Vorher...". Was hab ich verändert. Da ich die Steuerung auf MQTT umstellen wollte, habe ich paho mqtt für Python installiert. Ich verwende Python2.7.13.

    Nachdem mir aufgefallen ist, dass der PI immer wieder (mal nach 15min mal nach 3 Stunden) einen Neustart hinlegt, wenn ein Python Script läuft, habe ich paho mqtt wieder deinstalliert. Ohne Erfolg, der Effekt ist immer noch da. Da der PI hart resettet wird, also keine Logeinträger meiner Python scripts, habe ich mit

    Code
    for i in {1..6000}; do sleep6 && sudo ps aux; do

    geschaut, ob das script bis zum ende läuft und welche CPU last und Speichernutzung es hat.

    Ja, es läuft bis zum Ende und keine Besonderheiten.


    Kann es sein, dass die Installation von MQTT bei Python eine Einstellung verändert hat, die Python dazu bringt einen Neustart durchzuführen?:/ (was ich mir nicht vorstellen kann...


    Hat jemand eine Idee?


    Gruß

    Heiko

    Es funzt...


    Ob der Wechsel des GND vom Pi auf die GND Bar der Grund war weiss ich nicht genau, ich hab's aber gemacht, denn auch Komissar Zufall hat geholfen um ein paar mir nicht bekannte Besonderheiten auf Arduino - Seite auf zu decken.


    • Die TX und RX LEDs melden wohl nur einen Datentransfer über den USB Port, denn über TX RX bleiben sie dunkel. Also konnte ich lange warten...
    • Beim Aufbau der Kommunikation über TX RX resettet der Arduino NICHT, im gegensatz zum USB Port. Dort startet die neue Kommunikationsverbindung den Arduino neu und er sendet den initialen Datenstring, den ich programmiert hatte um zu sehen ob die Kommunikation steht.
    • In meinem Python Script hatte ich immer auf den "Resetstring" gewartet. Über TX RX schickt nun der PI via Python eine Anfrage an den Arduino und wartet auf die Antwort, die dann auch kommt.

    Zum GND nochmal:

    Ich dachte, GND wäre immer eine, durch das gesamte System durchgehende Leiterbahn, die an jeder Abnahmestelle die gleiche Wirkung entfaltet, egal ob an PIN 6, 9, 14, 20, 25, 30, 34 oder 39?


    Vielen Dank nochmal.


    Heiko

    Eigendlich ja, da ich eine 5V und GND Bar habe, wo ich sowohl die 5V wie auch den GND verteile. Wobei ich den GND für den Pegelwandler für die 3,3V von den PI GPIOs nehme. Da aber die Stromversorgung (inkl. GND) für den PI auch von der 5V Bar kommt müsste damit auch der GND mit dem Arduino verbunden sein. Also Arduino und PI hängen am gleichen GND und 5V.

    Hallo,


    sowohl der Pegelwandler hat GND, auch PI und Arduino.


    zum Thema Device Tree habe ich folgendes in der contig.txt gefunden:

    # Enable audio (loads snd_bcm2835)

    dtparam=audio=on

    enable_uart=1


    Das mit den Alt-Pins habe ich nicht ganz verstanden.

    Hallo,


    ich weiss nicht ob oder wo ich einen Denkfehler habe.

    Ich möchte den PiZero direkt mit einem Arduino UNO über die GPIOs verbinden. Auf der Pi-Seite nehmen ich Pin 8 und 10 und beim Arduino Pin 0 und 1. Dazwischen habe ich einen Pegelwandler der auf Pi-Seite für 3,3V und auf Arduino-Seite für 5V sorgt.

    Ich habe im Rasp-Config die Console disabled und die Serielle Schnittstelle enabled. TX RX sind über kreuz, also RX an TX und TX an RX.

    Im Python Script habe ich sowohl ttyAMA0 wie auch ttyS0 getestet.

    Auf der Arduino-Seite liegen 5V an beiden Pins und beim PI 3,3V

    Indikator für das Senden und Empfangen sind unter anserem die TX RX LEDs des Arduinos, aber da tut sich nichts.


    Wenn ich über das USB Kabel den Arduino am Pi anschließe funktioniert alles einwandfrei, natürlich mit geändertem tty.

    Warum ich nicht das USB Kabel nehme, weil es zu sperrig ist und zuviel Platz braucht.


    Ich hoffe jemand hat eine Idee...


    Viele Grüße Heiko

    Hmm... OK. Ich dachte immer für den DNS wäre nur die IP Adresse und der Name ausschlaggebend. Ich habe jetzt mal wieder die alte Hardware genommen und da läuft der Login sofort.

    Vor allem verstehe ich nicht das die lokale Passwortauflösung so lange dauert, dadurch. Verstehen würde ich es, wenn ich mich mit einem Domain Password anmelden würde.

    Weil viel an der Konfiguration hängt, deshalb die Idee nur die Karte zu wechseln, statt System neu aufzusetzen, werde ich wohl eher ein Head auflöten statt die Hardware zu tauschen. Ist einfacher, außerdem funktionieren noch ein paar andere Sachen noch nicht.

    Hallo,


    Ich habe einen sonderbaren Effekt.


    Wenn ich eine SSH Session per Putty auf dem PiZero aufmache, dauert es bis zu 5 Minuten bis das Passwort bestätigt wird.

    Putty öffnet die Session sofort mit Prompt für Anmeldenamen, nach der Eingabe kommt auch sofort die Eingabe für das Passwort. Dann dauert es bis zu 5 Minuten bis das Passwort bestätigt oder abgewiesen (nur wenn es falsch war :)) wird. Ab und an disconeted der Pi auch die ssh Session.


    Diese SD Karte lief bisher auf einem PiZero W (Headless) tadellos. Da ich aber nun die GPIOs brauche, habe ich die Karte in den PiZero WH gepackt.

    Wenn ich einmal eingeloggt bin läuft er ohne Probleme. Außer der Stromversorgung mit 5,06V hängt (noch) nichts an den GPIOs.


    Kennt jemand den Effekt?


    Viele Grüße

    Heiko

    Hallo Himbeerfreunde,


    ich möchte Euch mein Projekt zur Steuerung von Relais über Schieberegister vorstellen, mit allem was daraus erwachsen ist.


    Hintergrund und Werdegang:

    Ich habe mehrere Projekte, wo ich viele Ausgänge schalten muss, wie zum Beispiel Lichtuhren oder auch meine Pumpensteuerung bzw. das gesamte Bewässerungssystem. Das letztere war dann der Ausschlag um die hier vorgestellte Headerplatine zur Steuerung von Relais mittels Schieberegister (74HC595) zu entwickeln. Denn das System muss verschieden Pumpen und Ventile (alle 230V) mittels Relais steuern und bis auf drei GPIOs sind alle anderen mit Input von Sensoren belegt und die Verkabelung auf dem Breadboard war ein Graus.


    Entwicklung:

    Bekannter Maßen kommt der Appetit beim Essen. Ursprünglich wollte ich mir eine Lösung löten, mit der ich schnell und einfach die Relais mit dem Schieberegister verbinden kann, um meine Programmierung zu testen. Da ich zwei 4 Relais Module hatte und man die platzsparend „Rücken“ an „Rücken“ stellen konnte und über ein 8Bit 74HC595 ansteuern kann, kam mir die Idee einer Headerplatine, die man einfach nur auf die beiden Relaisplatinen aufsteckt. Das Ganze sollte dann auch noch wiederverwendbar sein. Bei der genaueren Planung meines Projekts stellte ich fest, dass ich voraussichtlich bis zu 16 Relais brauchen könnte. Also musste die Lösung skalierbar sein. Da man die Schieberegister in Reihe schalten kann, sollte das auch mit der Platine möglich sein. Darauf hin dachte ich mir, es wäre auch klasse, wenn ich auch LEDs direkt damit ansteuern könnte, denn ich habe auch einige Status LEDs die über ein Schieberegister geschaltet werden sollten. Bei weiteren Tests stellte ich dann fest, dass ich die Relais mit dem Strom über das Schieberegister nicht geschaltet bekomme, zumindest nicht alle gleichzeitig, Also musste ich die Platine noch mit einer externen Stromversorgung versehen. Um auf Nummer sicher gehen, habe ich die beiden Stromkreise bei der Schaltung der Relais galvanisch voneinander getrennt. Damit waren die Anforderungen für Version 1.0 klar (und es würde nicht reichen).


    Anforderungen:

    -         2x 4 Relais Platinen über Schieberegister ansteuern

    -         schnelle Montage

    -         flexibel einsetzbar

    -         platzsparend

    -          wiederverwendbar

    -         skalierbar/in Reihe schaltbar

    -         auch verwendbar für LEDs

    -         externe Stromversorgung

    -         galvanische Trennung


    Hier zu sehen, wie die Platinen (unbestückt) hintereinandergeschaltet werden.


    „Platinen-Erstellung“:

    Zunächst hatte ich versucht die Platine mit einer Lochplatine selbst zu löten, was ich nach der Hälfte der Lötarbeiten für die erste Platine drangegeben habe, weil durch die Mehrschichtigkeit, die notwendig ist, die Reihenfolge der Lötarbeiten sehr wichtig ist und ich mehr als nur eine Platine brauchte.

    Danach habe ich erst einmal ein 2 Layer Platinendesign entworfen und mir überlegt sie selbst zu ätzen. Aber nach langem Einlesen, wie es gemacht wird und in Anbetracht der Anschaffungen und den Risiken, habe ich mich entschlossen die Platinen in Auftrag zu geben.

    Ich habe direkt eine größere Anzahl produzieren lassen. Zum einen ist das Produzieren einzelner Platinen unrentabel, ich brauchte und brauche sowieso mehrere und auch einige Freunde waren sehr interessiert, so dass ich die auch zum Selbstkostenpreis 3,37 Euro abgeben konnte. Wer also auch Interesse hat kann mich anschreiben. Porto und Verpackung kommt hinzu. Die Platine ist dann natürlich unbestückt.


    Die Platine (Version 1.0):

    Bestückt wird die Platine mit

    8x Widerstände zB 220 Ohm 8 x 0,08€ = 0,64€

    1x SN74HC595N Schieberegister 0,60€

    1x IC-Fassung 16Pol 0,22€

    1x Buchsenleiste zum selberschneiden 0,72€

    (empf. Fischer Elektronik Buchsenleiste (Standard) 3,45€ (sind besser zu kürzen))

    1x Stiftleite zum selberschneiden 0,68€


    Gesamtkosten für Bestückung ca. 2,86€

    (Alle Preise Näherungswerte)


    Die bestückte Platine


    Beschreibung:

    Die Platine hat auf der linken Seite 7 Anschlüsse:

    ST_CP für den Store

    SH_CP für den Shift

    DS-IN für die Daten

    VCC für 5V für das Schieberegister

    GND für das Schieberegister

    Ex-VCC Externe 5V für die Relais

    Ex-GND Externe GND für die Relais


    Auf der rechten Seite das gleiche nur das dort der DS-OUT ist von Q7‘ Serial Out von Pin 9.


    Auf der Unterseite gibt es (müssen dort angelötet werden) zwei 1x6 Buchsenleisten, die dann auf die Relaisplatinen gesteckt werden. Daneben sind noch zwei 1x1 Buchsenleistenlötpunkte für den JD-VCC-Anschluss (Externer VCC) für die Relais Platine.


    Auf der Oberseite gibt es (müssen dort auch noch angelötet werden) zwei 1x5 Buchsenleisten, die dann eine weitere Platine aufnehmen können, zum Beispiel mit LEDs. Die Buchsenleisten liefern Q0, Q1, Q2, Q3 und GND, bzw. GND, Q4, Q5, Q6, Q7, also die Ausgänge der Schieberegister mit vorgeschaltetem Wiederstand plus je einer GND – Leitung.


    Vorschau / Weiterentwicklung:

    Dadurch, dass die Relais bei Spannungsdifferenz schalten, hat man leider den Effekt, wenn man neben den Relais auch LEDs oben anschließt, leuchtet die LED, wenn das Relais aus ist und die LED geht aus, wenn das Relais schaltet. Das gefiel mir nicht. Deshalb hab ich eine Headerplatine für die Headerplatine entwickelt, die ich in kürze hier auch vorstellen möchte. Diese Platine wird zu den Relais anzeigen, ob die Relais geschaltet sind oder nicht. Auf dem Foto des Pumpensteuerungsprototyps unten seht ihr auf der rechtesten Headerplatine den ersten selbstgelöteten Prototypen.

    Diese RelaisStatusPlatine erfordert leider noch ein paar Anpassungen an der SchieberegisterRelaisPlatine, die ich gerade neben ein paar weiteren Optimierungen umsetze, über die ich dann in Kürze auch berichten werde.


    Pumpensteuerungsprototyp, eigendlich Bewässerungssstemtrototyp mit Schaltern, Relais und LEDs und drei Platinen in Reihe.

    Auf der Platine ganz rechts ist die selbstgelöteten RelaisStatusPlatine als Prototyp.


    Vielen Dank für das Interesse.

    Viele Grüße

    Heiko

    Hmmm, ich denke ich hab's gelöst. Liege ich bei Folgendem richtig?


    Folgende /etc/crontab hatte ich:

    lief bis dato einwandfrei. Ich hatte lediglich den @reboot part hinzugefügt, gem. verschiedener Anleitungen. Unter anderem stand dort, dass reboot-cronjobs grundsätzlich nur für root ausgeführt werden und deshalb die user-Angabe nicht erfolgen braucht/darf. Die meisten Anleitungen basierten aber auf dem crontab -e Aufruf.


    Bei der Dursicht der Log kam mir die Idee, dass auch der reboot job vielleicht doch einen ausführenden User braucht und habe dann daraus einfach

    Code
    @reboot root    sleep 15 && php5 /etc/php/DiskMount.php

    gemacht.


    Und siehe da, die cronjobs laufen wieder.


    Ich hätte nicht gedacht, das bei einer falschen (und auch der letzten) Zeile, die ganze Datei nicht abgearbeitet wird...


    Vielen Dank an alle die mitgegrübelt haben.


    Gruß Alti

    Nein ich hab den Pi und den HiFi Berry gekauft zusammengesteckt und dann das Volumio image auf die SD Karte gepackt. Das ist schon etwas her, aber ich kann mich nicht erinnern, dass ich etwas extra für den HiFi Berry installiert hätte, auch nicht als ich vor einigen Monaten wegen eines Upgrate das Image komplett neu laden musste.

    Der ganze HiFi Berry ist im Rahmen von Volumio installiert worden. Das entsprechende File ist nicht vorhanden. Gibt es da noch Pakete zu installieren?


    Volumio steuert den HiFi Berry über DSD Direkt an, kann ich nicht dem Bluetooth sagen, das er, statt über Pulseaudio über DSD Direct gehen soll?

    das ist das Ergebnis von systemctl status cron

    Code
    ● cron.service - Regular background program processing daemon
       Loaded: loaded (/lib/systemd/system/cron.service; enabled)
       Active: active (running) since Sa 2019-11-09 08:47:07 CET; 1 day 15h ago
         Docs: man:cron(8)
     Main PID: 632 (cron)
       CGroup: /system.slice/cron.service
               └─632 /usr/sbin/cron -f

    Ich hatte auch mit ps den

    Code
    /usr/sbin/cron -f

    gefunden, aber die /etc/crontab wurde nicht abgearbeitet.

    Hallo zusammen,


    Möglicherweise habe ich ja was verpasst.

    In der Vergangenheit habe ich meine Cronjobs immer in der /etc/crontab erfasst. Funktionierte bisher auch super. Nur seit einigen Tagen läuft keiner der jobs mehr, sie tauchen auch nicht mal in dem syslog auf.


    Ich habe dann mit sudo crontab -e für den root eine root crontab angelegt und vollqualifizierte Pfadnamen angegeben und den root aus dem alten String gelöscht.

    Nun funktioniert es wieder.


    Wie kann ich das um- oder einstellen, dass wieder nur die /etc/crontab abgearbeitet wird? Ich finde es übersichtlicher als für jeden User eine eigene anzulegen.


    Gruß Alti