diff --git a/SHA256SUMS b/SHA256SUMS index 5f2e42f..29d2244 100644 --- a/SHA256SUMS +++ b/SHA256SUMS @@ -1,11 +1,11 @@ e83c52906953a723fc79208aecf08372a875e0bc2f74b4283329a475744f8984 README.md 8372d65296273c034cac7d3a6c702ceb1d8168dac2bf81586fecf2fe57219059 install.sh 9f59e7313ee58e687ae6dd29d175c67082674254ac5c5f54168b2735b64c20a4 uninstall.sh -8b9df5b92218ff1c809d570141b2568228a1a4bdcb041eca29fcc6b51c61889c app/pigway_pi_control.py +0f1ebcb0e9fa63744fcf0c0045fe4db3fa6eedcf22c333b46d6079d9105fad5c app/pigway_pi_control.py 339f28978641242436e141add0cc923ed5ebb855bea9f6c9fe949b8eb8579527 app/pigway_pi_control_api.py 3a8a368bbf299eb2d6cccc968a4aacf070058bddebdc5176083a97ac579d720d app/plugin_api.py 3da8b5d94e2206bffc19e1c4fa493b31880c9a90fd6a02546461fe54a7255dbd config/pigway-pi-control.conf 20c584762cae3a50a498df25e11272c3c191a62c9ce823e63f8224d14637b1d4 systemd/pigway-pi-control-api.service 35ec68e1c3040e7affad43961fbb77e9e29f3474b92aed1005502629f9acb549 systemd/pigway-pi-control.service -64c21a4e4d93a68fcca1d0b0126655a56f306a290cced6eed5350ab9d5b5004f web/index.html +fe32725efb7edcd54a2e0d037e0abbe3cb8994ee836a3d4b8822171f43cf3f36 web/index.html 73b7922be93bf57169589755137dc5ec7ec7c8059c85c2bf2ee53a344e534d7e docs/HARDWARE_PLUGIN_API.md diff --git a/app/pigway_pi_control.py b/app/pigway_pi_control.py index 2bbb308..cc16b1d 100755 --- a/app/pigway_pi_control.py +++ b/app/pigway_pi_control.py @@ -53,6 +53,22 @@ def device_details(): except Exception: pass try: info["model"]=Path("/proc/device-tree/model").read_bytes().rstrip(b"\0").decode() except Exception: pass + # Device tree identifies ARM boards; DMI covers PCs and many other vendors. + for key,files in { + "manufacturer":["/sys/class/dmi/id/sys_vendor"], + "model":["/sys/firmware/devicetree/base/model","/sys/class/dmi/id/product_name"], + "revision":["/sys/class/dmi/id/product_version","/sys/class/dmi/id/board_version"], + "serial":["/sys/class/dmi/id/product_serial"], + }.items(): + if info.get(key):continue + for filename in files: + try:value=Path(filename).read_text().strip().strip("\0") + except (OSError,UnicodeError):continue + if value and value.lower() not in ("none","unknown","default string","to be filled by o.e.m."): + info[key]=value;break + if not info.get("manufacturer"): + try:info["manufacturer"]=Path("/sys/firmware/devicetree/base/compatible").read_bytes().split(b"\0")[0].decode().split(',')[0] + except (OSError,UnicodeError):pass try: os_release={} for line in Path("/etc/os-release").read_text().splitlines(): diff --git a/web/index.html b/web/index.html index 85efb73..e6871ff 100644 --- a/web/index.html +++ b/web/index.html @@ -13,9 +13,10 @@

PIGWay Pi Control

正在连接树莓派…
离线
- +
正在读取主机状态…
+