По поводу правильного кода для esp8266, все эти условия if-ы от лукавого,
вот вариант (по крайней мере я к нему прибился)
$st=$this->getProperty('gpiout2');
getURL('
http://192.168.1.111/gpiout?st='.$st.'&pin=2', 0,'esp01','esp01');
сейчас для меня узкое место заключается в следующем, допустим два выключателя (а может даже больше плюс датчики всякие) работают на одном и том же esp8266 (благо куча пинов позволяют, в том числе VGPIO). В каждом выключателе указан метод вызова из объекта ESP8266.. например refresh, для двух выключателей получается код будет следующий
$st2=$this->getProperty('gpiout2');
getURL('
http://192.168.1.111/gpiout?st='.$st2.'&pin=2', 0,'esp01','esp01');
$st5=$this->getProperty('gpiout5');
getURL('
http://192.168.1.111/gpiout?st='.$st5.'&pin=5', 0,'esp01','esp01');
получается логичней сделать цикл конечно же (это не проблема, по маске свойства у объекта просканить), НО этот вариант мне не нравится (ведь есть ООП)!!! при "щелкании" одним выключателем идут лишние запросы на другие выключатели...а это нагрузка на http... Единственное решение которое приходит в голову, это насоздавать объекты внутри ESP8266, которые по факту будут дублировать свойства (например gpio2, gpio5 ну и т.д.), а выключатели уже можно будет связывать со свойствами состояния этих пинов. Тогда http запрос будет отправляться в одном экземпляре соответсвующим объектом (пусть будет например esp8266pin2/классаesp8266 названия вымышленные, над реализацией только думаю). Тогда можно сделать и глобальный refresh (для esp8266 в своем классе), и refresh отдельного пина (класс esp8266pin, название не принципиально). Теперь о минусах, на настоящий момент жутко не хватает параметрического вызова методов объекта (экземпляра класса). С выключателями это не так критично (SetPinOn и SetPinOff будет достаточно), но вот уже дальше сложней, как например для RGB ленты сделать я уже затрудняюсь.Очень сильно не хватает полноченных инкапсуляции и полиморфизма...
Вчера вот увидел модуль PropTransfer (полезный и классный, за что автору огромное спасибо), вроде бы он может помочь в нашей ситуации - сделаем трансфер gpio-пинов из esp8266 в объекты (экземпляры класса esp8266pin) esp8266pin2, esp8266pin5, ну и т.д. Работать конечно же будет, но это не то, что бы хотелось, пользоваться кодом сможет только тот человек, который его написал, так как надо в голове держать всю структуру классов и объектов, и тем более установленных связей в PropTransfer, т.е. человек/пользователь теперь выступает в роли диспетчера ООП, а в голове держать столько информации не каждый может... Что получается в реальности - на одном eps я буду использовать пару выключателей (для света например в комнате), напишу "корявый" код, главное чтобы работало и не зависало! И лучше этот код потом никому не давать