Как стать автором
Обновить
65
0
Евгений Донцов @dontsov

инженер-программист

Отправить сообщение

Я не знаю, может это компилятор оптимизирует, но деление на 64 можно записать как delay >> 5

Я продлил время жизни гирлянды припаяв резистор последовательно...

Киира, неимоверно крута! Поздравляю со статьёй! Очень полезно =)

Спасибо вам!

Спасибо большое!

А вы чем занимаетесь?

Оказалось, что это задача сопоставима с регистрацией на Wildberries сложности...

Придумал безопасный способ показа виджета пользователем. Пользовать переходит на уникальный url из личного кабинета, который его идентифицирует в БД.
Веб страница обращается к прокси-серверу, он:
1. перенаправляет запросы к ресурсам в графану
2. запросы к БД переваривает и выдает только с почтой юзера

Придумал, как ограничить отображение только устройств пользователя, однако этот способ не безопасный.

В dashboard variables:

email (тип query)
source (influxDB)
SHOW TAG VALUES FROM waterius WITH KEY=email where email=${__user.email:sqlstring}

Отобразит только электронную почту залогиненого в Grafana пользователя.

Вторая переменная token прежняя:
SHOW TAG VALUES FROM waterius WITH KEY=token WHERE "email" =~ /^email/

Создаем пользователя. Пусть его почта demo@demo.ru
При авторизации в дашборде будет показываться только demo@demo.ru.

К сожалению, данный способ нельзя публиковать, т.к. от браузера идут сырые запросы к БД и любой пользователь сможет запросить данные чужого.

Если знаете, как можно дать доступ к Grafana так, чтобы пользователь мог запрашивать из БД только свои данные, напишите.

Спасибо! Ох уж эти размерности =).

Офигенно! Жду продолжения!

p.s. То чувство, когда родной Политехнический музей настолько музей, что даже шкафы для экспонатов стали экспонатами =)

Да, уже померили, спасибо. До ассемблера не дошли. Но перешли на analogread для совместимости с намуром. Следущей оптимизацией может быть запоминание типа счетчика, чтобы если он геркон, то digitalread, если намур — analogread делать. Правда, не факт, что в 4кб уложимся.
analogread в tinycore оптимальный, digitalread нет, поэтому там битами поработал.
Да, спасибо, знаем. С учетом wi-fi такая минимизация потребления не совсем оправдана. А вот если делать другие версии, то да.
Простите, я правильно понял, что вуз размещает на официальном сайте литературу по учебе, просмотр бесплатный, а скачивание платное?! о_0
А сколько рублей, если не секрет, за методичку по предмету?
Снимаю шляпу очередной раз!
Вот так я считаю комиссию Алиэкспресса и комиссию партнерской программы:

Цикл по каждому товару в заказе:
for dto in data['child_order_list']['global_aeop_tp_child_order_dto']:
    g = Good()
    g.name = self.parse_name_from_attr(dto)

    g.sum = float(dto['init_order_amt']['amount'])
    g.quantity = int(dto['product_count'])
    g.price = float(dto['product_price']['amount'])

    if 'afflicate_fee_rate' in dto:
        # партнерская комиссия, рублей
        g.affiliate_commission = g.price * g.quantity * float(dto['afflicate_fee_rate'])

    if 'escrow_fee_rate' in dto:
        # комиссия Алиэкспресса
        g.ali_commission = g.price * g.quantity * float(dto['escrow_fee_rate'])

    if 'refund_info' in dto and dto['refund_info']:
        amt = dto['refund_info']['refund_cash_amt']
        # если был возврат товара
        g.refund = 1.0 * amt['cent'] / amt['cent_factor']


p.s. да, я знаю, что лучше в копейках считать

А вот здесь парсинг цвета товара:
    def parse_name_from_attr(self, dto):
        attr = json.loads(dto['product_attributes'])
        if 'sku' in attr:  # для тестов
            for a in attr['sku']:
                if 'selfDefineValue' in a:
                    return a['selfDefineValue']
                #if attr['pName'] == 'Color':
                #   if attr['pValue'] == 'White':
                #   elif attr['pValue'] == 'Blue':
                #   elif attr['pValue'] == 'YELLOW':

            for a in attr['sku']:
                if 'pName' in a and a['pName'] == 'Color':
                    if a['pValue'] == 'Black':
                        return 'Ватериус'
Кажется у меня что-то работает «не так», раз я не обновляю сессионный ключ уже полгода…
Я описал его получение у себя в ЖЖ:
sessionkey — Ключ, который мы должны получить после авторизации. Есть 2 пути его получения: авторизация через OAuth 2.0 или «браузер». Т.к. пока есть цель написать локальный Питон скрипт без сервера, выберем 2й вариант.
Откроем в браузере oauth.aliexpress.com/authorize?response_type=token&client_id=111111111&state=1212&view=web&sp=ae, где 111111111 — ваш appKey
Соглашаемся с Соглашением и видим access_token. Его и пишем в sessionkey.


Китайский SDK еще с 3м Питоном не работал, я переписал ядро.
По ссылке скрипт для получения заказов.

Вот так, например, я записываю трек номера Почты России в заказы на Алиэкспресс:

def send_track_id(order_id, track_id):
    """
    Отправка номера отправления в заказ на Алиэкспресс
    :param order_id: номер заказа
    :param track_id: номер отправления
    :return:
    """
    req = api.AliexpressSolutionOrderFulfillRequest(url, port)
    req.set_app_info(appinfo(ALIEXPRESS_APPKEY, ALIEXPRESS_SECRET))

    #req.description = 'Почта России в регионы'
    req.service_name = 'RUSSIAN_POST_RU_PROVINCE_RUB'  #'Почта России в регионы'
    req.tracking_website = 'https://www.pochta.ru/tracking'
    req.out_ref = str(order_id)
    req.send_type = 'all'
    req.logistics_no = str(track_id)

    try:
        resp = req.getResponse(ALIEXPRESS_SESSION_KEY)
        if resp['aliexpress_solution_order_fulfill_response']['result']['result_success']:
            return True
    except TopException as err:
        if err.errorcode == 15:
            if '该交易订单已填写发货通知' in err.submsg:
                raise Exception('Трек номер уже заполнен')
        raise err
А какой компании «умные счетчики»?
Не соглашусь. Плохой контакт в Герконе не будет заметен извне, а rs485 просто не будет работать или будут ошибки — вы это заметите.
Всё так.
Добавлю: НАМУР — это 2-х проводный интерфейс. Там параллельно и последовательно стоит по резистору. 4 провода производители счётчиков сделали, чтобы было оба интерфейса сразу.

Спасибо! Буду благодарен за репост в соцсетях :)

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность