Я публикую / подписываюсь на / от сообщений между Raspberry Pi и удаленным веб-сервером. Когда я отправляю сообщения на пи с помощью mqtt, я посылаю строку с именем канала на пи, которую я хочу запустить. У меня есть переменные в сценарии с именем pump1
, pump2
, et c ..., которые имеют соответствующие каналы RPi. У меня есть словарь, ключи которого - это каналы RPi, которые я хочу включить, и значения - это команды GPIO для этого. Сообщения mqtt должны соответствовать ключам словаря. Если ключи совпадают, я хочу запустить значение, связанное с этим ключом.
Ниже мой словарь. Когда я получаю доступ к словарю, я получаю None
для значений, если я не заключаю их в кавычки. Когда я использую в качестве строк вокруг команд GPIO, я не могу запустить команду. У кого-нибудь есть идея запустить эти команды?
Я также пытался запустить что-то вроде этого. Этот метод не работает, потому что pump1 не является целым числом, обозначающим, какой канал включить pi, но у меня есть переменные с именами pump1, pump2, et c .., связанные с каналами RPi, поэтому я подумал, что это может работать, но python все еще вижу это строка.
mqtt.message = ['pump1','on']
GPIO.output(mqtt.message[0], False)
Словарь:
pumps = {
"pump1:on": GPIO.output(pump1,False),
"pump1:off": GPIO.output(pump1,True),
"pump2:on": GPIO.output(pump2,False),
"pump2:off": GPIO.output(pump2,True),
"pump3:on": GPIO.output(pump3,False),
"pump3:off": GPIO.output(pump3,True),
"waterpump:on": GPIO.output(waterpump,False),
"waterpump:off": GPIO.output(waterpump,True),
}