Posts by Heinoderblaue

    Das CM3 passt in eine DDR2 SODIMM Halterung. Ich denke, das Gnze bietet sich dann an, wenn man den Pi in eine eigene Platine einbauen will, wo man die Anschlüsse nach eigenen Wünschen rausführen will.

    Kann man hier gezielt rauslesen welche GPIOs und USB pins ich brauche? Bzw einfach ne USB buchse dran löten oder ist das (was ich denke) viel komplizierter?

    Ich weiß ja nicht, was du dir vorstellst - aber welche Möglichkeiten außer Adapterboard oder selber was basierend auf auf der Kontaktleiste bauen soll es denn sonst noch geben?

    Naja ich hatte gedacht vielleicht kann ich noch etwas platz einsparen indem ich nir die benötigten anschlüsse abgreife.

    Aber das klingt eher als würde man noch weitere Hardware brauchen die die massen an Kontakten verarbeitet...

    Hallo,


    also ich habe auch mit der DAC+ von Hifi-berry gute Erfahrungen gemacht. finde auch den Preis eigentlich in Ordnung. es funktioniert ohne Probleme und bietet alles was man braucht. saubere Anleitung und entsprechendes Zubehör.


    Ein Delay habe ich beim Stream mit der Hif-iberry karte allerdings auch.


    Bsp.

    Ich habe ein Script das einen Stream startet,

    Wenn ich das Programm beende läuft noch etwa 3sek Musik.


    Warum das so ist weiß ich auch nicht aber ich denke nicht an der Soundkarte. denn wenn ich es als Web stream schalte habe ich das an entsprechend anderen Endgeräten ebenso.


    Der speaker-test ist jedoch immer on Point, bzw. ganz minimal versetzt.


    Ich denke fast das die Verzögerung vom Player (im PI) der das Signal erzeugt ausgeht.


    Viele Grüße

    Hi zusammen,


    ich bin nun schon öfter über die Compute Modul sowohl CM3 als auch CM4 gestolpert.


    Mich würde einfach mal generell interessieren was man damit macht.

    Klar dazu giebt's zig Beiträge im Internet. folgendes habe ich dazu auch rausbekommen:

    - Das IO Board ist eigentlich nur für die Entwicklung

    - Zielanwendungen sind solche mit engem Bauraum oder spezifischen Anschlüssen

    - für IoT, Industrie und Robotic aus og. Gründen

    - Man kann individuelle Bissysteme etc. anbinden...


    Gerne ergänzen / korrigieren! :)


    Was mir aber immernoch nicht klar wird, wie zum geier steuert man das dann an?

    Ich meine die 200 Pins (2x100) beim cm4 erfordern doch A einen Sonderstecker und B eine komplett eigene Platine?!


    Und beim CM3 wird man ja kaum auf dem Chip löten oder?


    Also wie benutzt man diese Boards?

    Hier im Forum giebt es ja doch einige Themen dazu aber ich steig irgendwie nicht wirklich dahinter wie man am ende die Anschlüsse verwenden kann etc...


    Vielleicht auch an einem Beispiel.

    Nehmen wir an ich habe ein CM3 oder CM4 und möchte LAN, 2 USB Ports und eine Hand voll GPIO Pins nutzen.


    Wie kann ich das realisieren? :conf:

    Und bitte sagt mir jetzt nicht einfach n Adapterboard kaufen und los xD (wenn doch dann bitte auch welches Board :) )


    Vielen Dank vorab.


    Viele Grüße :)

    Und mal so rein Interesse halbe: welche spezielle Funktionalität aus Python 3.10, die Python 3.9 nicht hat, brauchst du?

    Genau das gleiche hab ich mich auch gerade gefragt und grad nochmal alles plattgemacht. ich werd einfach die 3.9 lassen die drauf ist nud fertig.


    Ursprünglich dachte ich das man die Werkseitige Python Version so auf die aktuellste "Upgraden kann" aber da habe ich mich wohl geirrt :)

    Und wenn man das doch ganz dringend will, kann man das direkt bei der Installation erledigen lassen.

    Wie meisnt du das? beim flashen der SD Karte?

    Hast du obiges nur als User ausgeführt? Dann ist es klar, dass root die Aliase python3 und pip3 nicht kennt. alias -p zeigt dir die für die Sitzung/den User gültigen Aliase.

    beides als user und als sudo / root leider ohne erfolg...



    Heißt was? Zeige mal die Ausgaben der Befehle.

    Ich installier gerade cryptography für pip habe überall 3.10 geschrieben...


    Laut ausgaben der pip3 -V


    pip3.10 bezieht sich auf python 3.10.1 in /usr/local/lib/python3.10.1

    mit sudo also python 3.9.2 greift er auf /usr/lib/python3.9.2 zu


    und ja das Alias hat er für sudo nicht gefressen obwohl ichs auch nochmal als sudo ausgeführt habe...

    Hi zusammen,

    tut mir leid wenn das jetzt im falschen Bereich ist. bitte einfach verschieben :)


    Ich bekomme es irgendwie nicht auf die reihe Python 3.10 zu installieren...

    auf meinem anderen Raspi läuft es aber keine Ahnung warum.


    Hier meine Installations vorgehens weise.

    Raspian Buster lite Raspi 3B+

    Wlan location usw. konfiguriert, raspi-config update ebenso gemacht.


    mein Problem:

    sudo Python3 -V

    Python 3.9.2


    Python3 -V

    3.10.1


    selbiges gilt für pip3 3.9.2 bei sudo und 3.10.1 ohne...

    wenn ich explizit python 3.10 schreibe bzw. pip3.10 findet er is beide male.


    jedoch in komplett verschiedenen verzeichnissen...

    Einmal im User Pi und einmal lokal.


    Was mache ich falsch?


    Danke euch :) :conf:

    Aber wie bekomme ich das mit dem SurfStick oder diesem Modul zusammen dann hin?


    https://www.antratek.de/nb-iot…OT49GhmnDeJhoCeAQQAvD_BwE

    Ist ja recht günstig.

    Ansonsten Huawei-Surfstick

    Hi, also da wär ich dann wieder raus. ^^

    Ich Hab mich mit dem SIM7600 Modul beschäftigt und den AT+ Commands.


    Diese kann LTE, SMS, Anrufen, alles eigentlich :)

    Im prinzip baust du über Serial eine tty verbindung auf und schickst die AT Anweisungen.

    Als return bekommst du das was sonst der Minicom ausspucken würde.

    Ich habs über USB angeschlossen weil die Konfiguration einfacher war und ich die GPIOs anderweitig nutze.


    Müsste aber eigentlich bei allen ähnlich funktionieren nur die Serial Adresse ist halt ne andere...

    Am besten mit Minicom oä. durchprobieren :)


    kleiner Tipp: bei netzclub gibts ne Simkarte mit 200MB/ monat kostenlos ;)

    also das ruckeln hat sich aufgeklärt... ich hatte schlicht schlechten empfang :wallbash::wallbash:

    stärkere antenne hat geholfen... :stumm:



    Trotzdem vielen Dank für all die ratschläge mit try und explicit sowie log dateien (kann ich ja aucj an den server jagen) werd ich mich auf jedenfall ranhalten!



    Zum Auslagern von Funktionen hätte ich noch eine generelle Frage.


    Macht Man das anhand irgendeiner faustregel oder einfach wie man lustig ist?


    Ich habe es gerade in themengebiete geteilt aber überlege es um zu sortieren um weniger imports zu haben oder ist das am ende vollkommen egal?


    Sorry für den ganzen heck meck und danke für eure Zeit! :) :bravo2::wallbash:

    Denke bitte daran, dass man diese ganze Fehlerbehandlung sparsam einsetzen sollte. Im Grunde lernt man als Programmierer, dass man es nur in kleinen Bereichen nutzt, an welchen potentiell Fehler auftreten können die durch saubere Programmierung nicht vermieden werden können. Aber dann auch zielgerichtet

    Ich glaube da muss ich etwas mehr zur Anwendung sagen.

    Der PI wird einmal gestartet und erfüllt mehrere Dienste (Sensoren, GSM etc. und macht Daten uploads, etc. siehe Threads)


    Wenn jedoch einer der Sensoren ausfällt oder fehlerhafte werte liefert etc. soll einfach 1 wert ins leere laufen. da bei der nächsten Abfrage idr. wieder ein richtiger wert auftritt. Auch muss sichergestellt sein das alles andere weiterläuft.


    Das ganze wird einmal gestartet und am besten erst nach 6 Monaten wieder abgeschaltet. deswegen ist es für mich sehr wichtig jede erdenkliche Fehlerquelle auszuschließen / zu behandeln. denn wenn etwas unerwartetes passiert bleibt das Programm stehen.


    Beispiel zu meiner Vorgehensweise.

    angenommen ich gehe über try explicit und benenne einen Division 0 Fehler da dieser der einzige zu erwartende ist.


    Nun bekommt einer der Sensoren aber eine falsche Information (externer Einfluss oder spinnt einfach) sodass ein type error entsteht der nicht als ausnähme definiert ist. dann Crash es...


    da meine zu verarbeitenden Daten absolut eindeutig in stringlänge werte Bereich usw. sind. erschien es mir einfacher und zuverlässiger diese auf Stimmigkeit zu prüfen und den folgenden code so zu schreiben, das kein Fehler auftritt wenn die Daten stimmen.


    Die chance das ich eine Fehlermeldung vergesse oder sich neue ergeben weil bpw. ein GSM Rückgabewert sich leicht verändert und die liste nicht mehr 6 oder 7 Inhalte hat, oder oder oder, erschien mir deutlich höher als ein einfaches. "passt der wert? ja? dann los! Nein? Hey hier stimmt was nicht!"


    zudem ich ja sowieso nur fehlerfreie Daten ansammeln möchte. also eine Prüfung ob der ermittelte Wert denn Sinn ergibt wäre sowieso angebracht.


    Also ja, Try and explicit ginge, wäre aber aus meiner Sicht fehleranfälliger. als ein kleiner if block hier ein Beispiel:


    def Sensorschleife(Delay):

    while true

    daten = Funktion_Sensoraufruf()

    if daten = error:

    print Fehler xy

    time.sleep(delay)

    return error

    Ablauf...

    return Ergebnis

    time.sleep(delay)


    T_Sensorschreife = threading...


    .

    .

    .


    if start Bedingung zur Initialisierung

    T_Sensorschleife.start()


    ich werde trotzdem die Startbedingungen bzw. Initialisierungen in try und Explicits packen das ist denke ich wie von euch beschrieben der saubere weg.

    vor allem um eben Schreibvorgänge zu beenden und den pi sauber zu erboten falls was kommt.


    Man lernt nie aus! ^^

    hi zusammen,

    Bei mir funktionierts :) wie Steuert Ihr denn alles an?

    Bzw welche Software nutzt ihr usw. ?


    Hier mal mein Ansatz wie ich den Drehencoder verwende.

    ist ein Ausschnitt aus meinem Main Programm kann sein das es nicht copy paste läuft. aber der Sinn sollte sich erschließen und das ganze anpassen lassen.

    Das wird üblicherweise mit einem "Device Tree Overlay" (=dtoverlay) im Bootprozess festgelegt, wobei auch die betreffenden GPIOs mitkonfiguriert werden.

    Kurze frage am rande bezieht sich das rein auf max2Play oder hat das raspbian buster soetwas auch?


    Ich habe meinen Drehe coder über Interrupts mit rising und der abfrage ob der Pin 1 oder 0 ist als Funktion integriert... heisst es das gibts quasi fertig im PI??


    Danke schonmal:)

    Und Ausnahmen heisst ja auch nicht das man die nicht auch direkt beim Aufrufer behandeln kann, ist dann halt ``try``/``except``/``else`` statt ``if``/``else``. Man ist dann aber flexibler welche Operationen vom ``try`` erfasst werden, dass heisst man muss bei mehreren Aufrufen nicht bei *jedem* manuell einen Fehlerrückgabewert prüfen, sondern kann die auch zusammenfassen. Und man muss nicht beim direkten Aufrufer die Ausnahmefälle behandeln, sondern kann das auch in höhere Ebenen verschieben. Naja, halt die Gründe warum Fehlerrückgabewerte doof und nervig sind, und man Ausnahmen erfunden hat. 🙂

    Jaaaa wen ich so darüber nachdenke trifft es "nachgebautes try except" eigentlich ganz gut... bei Gelegenheit ändere ich das mal danke für den anstoss! :)


    Bzgl. Der leistung htop usw habe ich schon gemacht. Nutzt aber recht wenig denn bis das Programm reagiert inst der ruckler wieder weg.


    Ich verwende raspian light also eh schon ohne GUI und abgespeckt.

    hi intergeek,

    Nuitka werd ich mal anschauen danke!


    Naja das es wirkliche Leistungs Probleme sind kann ich mir so gesehen auch nicht vorstellen.


    Ich vermute nunmal das sich die threads ansammeln und wenn dann final eine Zahl x zwischen 2 streaming anfragen steht eine Verzögerung stattfindet.


    Mit einem eigenen Kern rein dafür könnte ich das zumindest mal ausschließen.


    Das bisschen sensor ist auch eigentlich nicht wild letzenendes wird aber ja ein mediastream gehostet, selbiger zugleich gestreamt, während ein Mobilfunk wlan hotspot gehostet wird.


    Und dann noch Interrupts und threads. Da das alles gleichzeitig kommt kann sich da einiges aufsummieren denke ich was dann einen Rückstau erzeugt.


    Das ruckelnd kommt ja im Zeitintervall ähnlich wie die Abfragen der sensoren.

    Das mit den 0-Rückgabewerten bzw. allgemein spezielle Fehlerrückgabewerte klingt nicht so sauber. Ausnahmen wurden erfunden um das zu umgehen, dass man a) aufpassen muss das Fehlerwerte nicht gültige Werte sein können, und b) das man einerseits nicht immer alle Rückgabewerte explizit prüfen muss, andererseits aber auch keine Ausnahmen unbemerkt durchrutschen.

    Ja da gebe ich dir Recht. Das wäre aus code sicht sicherlich sauberer.


    Das Problem hierbei das ich immer wieder hatte Wenn ein sensor mal unerwartet irgendwas ausgespuckt hat hat es gedauert die funktion zu finden die sich daran aufhängt. Deswegen habe ich if's zb. Wenn daten nicht woe erwsrtet dann print fehler in funktion xy + datensatz und ein return.


    Dementsprechend beginnen die meisten Funktionen mit wenn != 0 bzw zukünftig mit if not error in.


    So dachte ich kann ich einen fehler beim "entwickeln" einfacher detektieren. Und trotzdem einen sauberen Ablauf halten da die while schleifen im basis programm weiter ihre runde ziehen.



    Oder ist das trotzdem total verkehrt? 😅