Проверьте, нажата ли кнопка или нет

У меня есть Raspberry Pi с Siri Proxy, который управляет моей дверью гаража, дверь гаража имеет только одну команду для открытия и закрытия. Чтобы проверить, открыта ли дверь гаража, я купил магнитный переключатель и соорудил кнопку с защелкой. я уже пробовал

doorstate = `gpio read 5`.chomp #gives value 1 or 0, 1 is opened, 0 is closed

print doorstate

if doorstate == "1"
 print "The garage door is already opened.\n"

elsif doorstate == "0"
 print "OK, I'll open it for you!\n"

else
 print "Error, please open it manually.\n"

end

Может кто-нибудь сказать мне, как я могу проверить, что возвращаемое значение или строка из doorstate = 'gpio read 5' равна строке?


person David Gölzhäuser    schedule 24.06.2013    source источник


Ответы (2)


Я предполагаю, что результат «gpio read 5» содержит окончание строки. Попробуй отрубить:

doorstate = `gpio read 5`.chomp

Чтобы проверить класс doorstate, вставьте p doorstate.class в строку 2.

person steenslag    schedule 24.06.2013

Вам нужно изменить одинарные кавычки (') на обратные кавычки (`, маленькая штука с тильдой на клавиатуре). Это выполнит команду. Остальная часть вашего кода в порядке.

person Linuxios    schedule 24.06.2013
comment
Я отредактировал скрипт и вставил его в сообщение выше, но он всегда выводит ошибку, откройте его вручную. Любое исправление? Может быть, это значение, а не строка? - person David Gölzhäuser; 24.06.2013
comment
@DavidG.: Это точно не рубиновая ошибка. Я не знаю, что с этим делать. - person Linuxios; 24.06.2013
comment
Но терминал дает мне правильные значения, я набираю gpio read 5, он мне дает либо 1, либо 0, это зависит от того, нажата кнопка или нет - person David Gölzhäuser; 24.06.2013
comment
Я только что проверил это, установив состояние двери в 0 (doorstate = 0), и он распечатал правильный вывод. Так что это может быть значение, int, число… . Как я могу проверить, если? - person David Gölzhäuser; 24.06.2013
comment
@DavidG просто вставьте p doorstate и p doorstate.class . - person steenslag; 24.06.2013