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

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

Диагностика и мониторинг Wi-Fi устройств в Grafana

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

В 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 так, чтобы пользователь мог запрашивать из БД только свои данные, напишите.

Диагностика и мониторинг Wi-Fi устройств в Grafana

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

Где сейчас экспонаты Политехнического музея?

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

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

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек)

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

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек)

Да, спасибо, знаем. С учетом wi-fi такая минимизация потребления не совсем оправдана. А вот если делать другие версии, то да.

Даешь свободную литературу! Или как я с политикой вуза боролся

Простите, я правильно понял, что вуз размещает на официальном сайте литературу по учебе, просмотр бесплатный, а скачивание платное?! о_0
А сколько рублей, если не секрет, за методичку по предмету?

О дивный новый «Мир»! Восстановление советской радиолы. Часть 1

Снимаю шляпу очередной раз!

Заметки по API Aliexpress. Экспорт заказов в Bitrix24, RetailCRM, amoCRM

Вот так я считаю комиссию Алиэкспресса и комиссию партнерской программы:

Цикл по каждому товару в заказе:
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 'Ватериус'

Заметки по API Aliexpress. Экспорт заказов в Bitrix24, RetailCRM, amoCRM

Кажется у меня что-то работает «не так», раз я не обновляю сессионный ключ уже полгода…
Я описал его получение у себя в ЖЖ:
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

522-фз или как умнеют счётчики электричества. Часть 1

А какой компании «умные счетчики»?

Записки IoT-провайдера. Проклятие импульсного выхода

Не соглашусь. Плохой контакт в Герконе не будет заметен извне, а rs485 просто не будет работать или будут ошибки — вы это заметите.

Записки IoT-провайдера. Проклятие импульсного выхода

Всё так.
Добавлю: НАМУР — это 2-х проводный интерфейс. Там параллельно и последовательно стоит по резистору. 4 провода производители счётчиков сделали, чтобы было оба интерфейса сразу.

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек)

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

Вотериус: Передача показаний воды на телефон по Wi-Fi (4 года от батареек)

Вместо батареек запихните: Модуль DC-DC преобразователя AMS1117 (с 6–12 V в 5 V)

STM32F3xx + FreeRTOS. Modbus RTU с аппаратным RS485 и CRC без таймеров и семафоров

Когда я ковырял С2000-ПП, то кажется не все регистры отзывались на функции единичного/множественного чтения…

Год назад видел датчик газа… — Этих российских датчиков с проприетарными протоколами столько, что пора делать фестивали протоколов и присуждать премии по номинациям =/.

Flipper Zero — пацанский мультитул-тамагочи для пентестера

Откуда у вас столько злости/зависти?
Код обещают открыть после официальных поставок устройства.

Где выгоднее производить корпуса — в Китае или России? Мы сравнили, пользуйтесь

Это просто прекрасно. Спасибо за сайт, Андрей.

Первая сотня российских электронных устройств

Спасибо, Алексей, за проект!

Как спроектировать корпус для прибора. Полное руководство

Спасибо вам за статью! Ушел считать бюджет, чтобы стать вашим клиентом.

Информация

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