// Эти данные можно получить на странице вашего приложения на платформе Tuya.
var accessId = "<access id>";
var apiSecret = "<api secret>";
// Сканируем сеть на наличие доступных устройств Tuya.
// Хранение найденных устройств реализуется как душе угодно
var scanner = new TuyaScanner();
scanner.OnNewDeviceInfoReceived += (sender, info) =>
{
// логика сохранения найденных устройств
};
var api = new TuyaApi(region: TuyaApi.Region.CentralEurope, accessId: ACCESS_ID, apiSecret: API_SECRET);
var devices = await api.GetAllDevicesInfoAsync(anyDeviceId: DEVICE_ID);
foreach(var device in devices)
{
Console.WriteLine($"Device: {device.Name}, device ID: {device.Id}, local key: {device.LocalKey}");
}
var device = new TuyaDevice("<IP адрес>", "<local key>", "<device id>");
// Пример команды включения лампочки
// Метод FillJson автоматически подставляет нужные параметры, поэтому сразу пишем запрос.
// Про методы DPS можно почитать в официальной документации Tuya
var onCommand = device.FillJson("{\"dps\":{\"20\":true}}");
var request = device.EncodeRequest(TuyaCommand.CONTROL, onCommand );
// Посылаем сигнал. Если устройство не ответит, то падает исключение
var encodedResponse = await device.SendAsync(request);
var response = device.DecodeResponse(encodedResponse);
Set
удобен, например, когда нужно оставить из набора данных только уникальные.const data = [ 1, 2, 2, 3, 3, 3 ];
const unique = [...new Set(data)];
unique // [ 1, 2, 3 ]
Map
хорош тем, что ключами в нём могут быть и объекты. Например, HTML-элементы, для которых захочется хранить какие-то данные. И Map запоминает порядок добавления элементов, что может быть полезно при переборе. Не устраивает меня факт того, что здесь меня ждет бесконечный легаси-код
PHP ситуация ровно обратная