Saboteur, Именно из соображений надежности я выбрал вариант, когда устройство не несет на себе никаких серверных функций и является полностью stateless.
Чтобы дернуть устройство через curl, надо знать адрес. Следовательно, нужно или возиться со списком айпишников, или поднимать полноценную связку DNS+DHCP. В моем же случае, устройство идентифицирует себя на управляющем сервере при помощи токена, зашитого в устройство, и не важно, какой оно получило адрес по wifi. Чтобы управлять им, достаточно знать токен.
Также неважно расположение сервера - он может быть как в домашней сети, так и на хостинге.
За безопасность в моем случае тоже отвечает SSL - устройство проверяет отпечаток сертификата сервера, после чего дает на сервер запросы со своим токеном.
Если устройство не может несколько раз подряд допинговаться до сервера, оно тихо ребутится.
Сервер, если не видит запросов-обновлений, ругается в NAGIOS и я сразу это вижу на смартфоне. Но так как прошивка максимально глупая и в ней нечему течь, аптайм устройств легко доходит до месяцев.
Что касается стоимости железа в моем случае, выходит от 5 до 20 баксов, в зависимости от задачи. Потому что у меня во многих случаях управляется низковольтный светильник с галогенкой или ледами, следовательно, можно выкинуть реле и обвязку, и оставить только электронную часть
Здесь импульсный источник питания для ESP-01 (можно питать от 5-40 вольт) и два ключа на 2A каждый (если без радиатора) - можно сразу цеплять галогенку или LED. А если прицепить реле. будет розетка.
Saboteur, могу отдать свою прошивку, она не вешается и поддерживает сколько угодно устройств.
Прошивка дергает GET на указанный URL каждые 2 секунды
Шить через arduino-ide
С такими розетками есть еще одна проблема - они нагло врут о своей нагрузочной способности. Розетка заявляет себя как 16А, но внутри оказывается реле хорошо если на 10А (Можно встретить и на 6), хилые провода, худючие контакты и другой трэш.
Или голый симистор без обвязки - включил в такую розетку вентилятор, она бах - и все, нет симистора.
Ну и лажовые прошивки с постоянными отвалами от облака или реакцией через полчаса. Для себя решил задачу радикально - свое железо на базе ESP8266, реле OMRON, качественные розетки, а не пародия, прошивка, и управляющий сервис.
Lynn «Кофеман», отлаживать сортировку выбором проще - отладили поиск максимума (отдельно) потом остается только отладить обмен элементов и движение по списку.
Magneto903, В мануале написано, что массив можно передавать в обе стороны (И это точно работает).
Двумерный массив всегда можно представить как одномерный, при помощи фокуса a[i][j] = o[i*width+j]
Magneto903, вы должны выделять память вот тем способом, что приведен в документации. Вы можете выделить массив под js, вызвав malloc и передать его адрес в программу на C++. Этот способ точно работает, я проверял (и не только я)