Hallo Forum,
gibt es eine Möglichkeit, im Rahmen eines Python-Scripts festzustellen, auf welcher Hardware (konkret Pi 3 oder Pi Zero) es gerade ausgeführt wird?
Hättet Ihr einen Tip?
Pi-Modell-Erkennung
-
Herr Kaiser -
8. September 2017 um 10:58 -
Erledigt
L
I
V
E
Stammtisch ab 20:30 Uhr im Chat
-
-
Pi-Modell-Erkennung? Schau mal ob du hier fündig wirst!
-
Über den Revisions-Code:
https://www.raspberrypi.org/documentation/…codes/README.mdAuslesend und Auswerten des Ergebnisses von "cat /proc/cpuinfo"
-
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:
Code
Alles anzeigenpi@raspberrypi:~$ cat /proc/cpuinfo processor : 0 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 processor : 1 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 processor : 2 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 processor : 3 model name : ARMv7 Processor rev 5 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc07 CPU revision : 5 Hardware : BCM2835 Revision : 3a01041 Serial : 00000000b751890d pi@raspberrypi:~$
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: 00000000b751890dWie 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 Seit dem Pi2 hat sich das Encoding der Revision geändert.... Siehe dazu https://github.com/AndrewFromMelb…i-2--model-zeroWenn 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:PHP
Alles anzeigenfrom __future__ import print_function from RPi import GPIO print(GPIO.RPI_REVISION) [/php] ...bei mir würde er dann " 3 " ausgeben und das steht allgemein für: Raspberry Pi GPIO - A+/B+/2B Also nicht wirklich eindeutig aber zumindest ein Anhaltspunkt welche GPIO's verwendet werden könnten. 4 = Raspberry Pi GPIO - 3B 2 = Raspberry Pi GPIO - A/B Rev2 1 = Raspberry Pi GPIO - A/B Mit zumindest Raspbian besteht auch die Möglichkeit die sysfs Datei [b]/proc/device-tree/model[/b] auszulesen, wo die Firmware genau rein schreibt um welchen Pi es sich dabei handelt - allerdings ist das wie gesagt von der Firmware (device tree) 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
Über den von wiringpi kommende Konsolen Befehl gpio -v kann das Model ebenfalls ermittelt werden:
Code
Alles anzeigenpi@raspberrypi:~$ gpio -v gpio version: 2.44 Copyright (c) 2012-2017 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Raspberry Pi Details: Type: Pi 2, Revision: 01, Memory: 1024MB, Maker: Sony [Out of Warranty] * Device tree is enabled. *--> Raspberry Pi 2 Model B Rev 1.1 * This Raspberry Pi supports user-level GPIO access. pi@raspberrypi:~$
-
Super!
Werde alle Vorschläge heute durchspielen - man lernt ja nie aus - und euch dann Rückmeldung geben.
Herzlichen Dank schonmal für eure Infos und Hinweise! -
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: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!