Pi-Modell-Erkennung

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo,

    mit der `processor()` Methode des `platform` Moduls bekommst du die Info, welche CPU verbaut ist. Mit der `cpu_count()` Methode des `multiprocessing` Moduls bekommst du die Anzahl der Kerne. Was zur Unterscheidung Pi Zero und Pi 3 ja ausreicht. Beide Module sind standardmäßig in Python enthalten.

    Alternativ geht natürlich auch, diverse Infos aus dem `/proc` Verzeichnis auszulesen. Da unter Linux ja alles eine Datei ist, kannst du das ja mit Bordmitteln von Python auslesen.

    Gruß, noisefloor

  • Was genau hast du denn vor?


    Der einzige Weg um das unabhängig zu erkennen, den ich spontan kenne, wäre durch auslesen der sysfs Datei /proc/cpuinfo und dann anhand der "Revision" Zeile zu ermitteln um welches Model es sich handelt... Das müsstest du dann aber selber einpflegen.
    "Revision" aus /proc/cpuinfo bezieht sich auf die Hardware Revision, nicht auf die RaspberryPi Revision.

    Beispiel:

    In der Datei steht bei mir folgendes drin:

    Mithilfe folgendes Python Scripts bzw Funktion kann man diese Informationen auslesen: https://github.com/meigrafd/Sampl…ster/cpuinfo.py
    Sollte selbsterklärend sein: Die Datei wird Zeile für Zeile verarbeitet und anhand ":" gesplittet.
    Die Rückgabe der Funktion getCPUinfo() wird in eine eigene Variable "cpuInfo" hinterlegt, über die man dann den entsprechenden Wert abrufen kann.. So würde zum Beispiel cpuInfo['Serial'] das beinhalten: 00000000b751890d

    Wie gesagt unterscheidet man die RaspberryPi Modelle anhand dieser HW-Revision. Eine Übersicht dazu findest du hier: http://elinux.org/RPi_HardwareHistory#Which_Pi_have_I_got.3F
    In meinem Fall wäre es also: Q1 2015, 2 Model B, 1.1, 1 GB, (Mfg by Sony)
    ...aber wie du vielleicht selber siehst steht bei mir noch eine "3" am Anfang der Revision... Tja, noch eine Schwierigkeit :fies: Seit dem Pi2 hat sich das Encoding der Revision geändert.... Siehe dazu https://github.com/AndrewFromMelb…i-2--model-zero

    Wenn du das nun universell umsetzen möchtest müsstest du also die gesamte Tabelle in dein Python Script einpflegen.
    Nachteil: Kommt später ein neuer Pi raus wird der von deinem Script nicht erkannt. Abhilfe hierfür könnte nur sein dass dein Script die elinux.org Seite parsed und sich die nötigen Infos raus fischt, dafür müsste der Client dann aber Online sein... Viel Aufwand.


    Eine weitere Möglichkeit bzgl. GPIO besteht darin das "RPi.GPIO" Module zu verwenden, was bei Raspbian (noch) standardmäßig installiert ist.
    Beispiel:


    Über den von wiringpi kommende Konsolen Befehl gpio -v kann das Model ebenfalls ermittelt werden:

  • Zitat von "meigrafd" pid='298844' dateline='1504865296'


    Mit zumindest Raspbian besteht auch die Möglichkeit die sysfs Datei /proc/device-tree/model auszulesen, wo der Kernel genau rein schreibt um welchen Pi es sich dabei handelt - allerdings ist das wie gesagt vom Kernel abhängig und ggf funktioniert das mit anderen Betriebssystemen nicht.
    Bei mir steht da zB das folgende drin:

    Code
    Raspberry Pi 2 Model B Rev 1.1

    Das ist es! Simple und eindeutig. Da auf allen relevanten Gerätschaften Raspbian läuft, ist das genau meine Lösung. Vielen Dank!!

Jetzt mitmachen!

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