// Эти данные можно получить на странице вашего приложения на платформе 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);
virtualenv -p python3 env
. env/bin/activate
pip install -r requirements.txt
./app.py
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
ds=[
['14.06.2022 00:00', 1],
['14.06.2022 06:00', 2],
['14.06.2022 12:00', 3],
['14.06.2022 18:00', 4],
['15.06.2022 00:00', 1],
['15.06.2022 06:00', 2],
['15.06.2022 12:00', 3],
['15.06.2022 18:00', 4],
['16.06.2022 00:00', 1],
['16.06.2022 06:00', 2],
['16.06.2022 12:00', 3],
['16.06.2022 18:00', 4]
]
df=pd.DataFrame(ds,columns=['D','A'])
df['D']=pd.to_datetime(df['D'])
df.set_index('D',inplace=True)
ax=df.plot()
ax.xaxis.set_minor_locator(MultipleLocator(6))
# PSv7 $cert = [Convert]::ToBase64String((Get-Content D:\Path\To\Certificate.pfx/cer -AsByteStream), 'InsertLineBreaks')
# PSv5.1 $cert = [Convert]::ToBase64String((Get-Content D:\Path\To\Certificate.pfx/cer -Encoding Byte), 'InsertLineBreaks')
$Cert = @"
MIILYgIBAzCCCx4GCSqGSIb3DQEH
.....
.....
.....
1y1lZqkQICB9A=
"@
#LocalMachine
$location = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
#ls Cert:\CurrentUser\
#ls Cert:\LocalMachine\
$storeName = 'TrustedPublisher'
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $location)
$store.Open('ReadWrite')
[byte[]]$content = [Convert]::FromBase64String($cert)
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($content)
$store.Add($certificate)
$store.Close()