Mit dem folgenden Code kannst Du recht einfach diverse Magnete abfragen und die entsprechenden gpios steuern. Der eigentlichen Steuercode habe ich auskommentiert, da ich keine Magnete habe.
Kernpunkt ist eine map, die die Ids der Magnete mit den gpios verknüpft. Du kannst das Script so mal bei Dir aufrufen um eine Idee zu bekommen was es tut.
#!/bin/bash
declare -A MYMAP=( [01-000161ed6bf]=gpio7 \
[01-000569e76bf]=gpio6 \
[01-000569e76bf]=gpio5 \
[01-0001646deaf]=gpio4 )
for key in "${!MYMAP[@]}"; do
echo "/sys/bus/w1/devices/$key/name --> /sys/class/gpio/${MYMAP[$key]}/value"
# echo "0" > /sys/class/gpio/${MYMAP[$key]}/value
# sleep 0.5
# if [ -f "/sys/bus/w1/devices/$key/name" ]; then
# echo "1" > /sys/class/gpio/${MYMAP[$key]}/value
# fi
done
Alles anzeigen
Welchen Weg Du beschreitest mit dem Aufruf ist wohl ziemlich egal. Vermutlich wird der sleep im Script die CPU weniger belasten, aber da würde ich mir keine grossen Gedanken drum machen.
Edit: Die folgende Seite hat ein paar Codesnippets zu assoziative Arrays in bash.