Рубрика «IoT»

Как мы приручали SpeedyBot, потеряли к нему доступ и вернули контроль без отвёртки

В начале это выглядело как обычный интеграционный проект. У нас был большой четырёхколёсный робот‑доставщик SpeedyBot стоимостью как новый автомобиль. Главной задачей было отвязать его от китайского облака: оставить штатные навигацию и железо, но перенести управление, данные и операторский интерфейс в нашу Fleet‑систему. А затем научить робота самостоятельно ездить между точками в реальном парке и возвращаться на зарядку.

Читать полностью »

Если у вас есть что-то на PHP, что живёт на Raspberry Pi или в коробке под столом и должно само подключаться к Wi-Fi, без человека с клавиатурой, то эта библиотека как раз про это. Называется php-wifi. Ей семь лет, но версия 3.2 первая, которую я не побоюсь оставить работать где-нибудь далеко, без присмотра.

Писал я её из упрямства, хотелось, чтобы PHP тоже так умел. Внутри никакой магии, обычные системные утилиты nmcli, wpa_cli и hostapd. Так устроены многие PHP-библиотеки, тот же php-ffmpeg или gitonomy/gitlib. Утилита даёт стабильный интерфейс, библиотека добавляет типы, исключения и тесты.

composer require sanchescom/php-wifi

Читать полностью »

С чего всё началось

Всё начиналось как чисто софтверная затея. Вокруг все говорят про агентов, вайбкодинг и конец эпохи программирования кожаными, а я, как говорится, «не читал, но осуждаю». Поэтому идея была простая: научиться вайбкодить — спроектировать и написать сервис, особо не утруждаясь.

В целом это был уже не первый раз, когда я что-то разрабатывал с помощью ИИ. Но предыдущие попытки организовать совместную разработку с коллегой через Git заканчивались на эмоциях: «О, это работает!», «О, круто!», «Ну всё, галочку поставил», «я у мамы программист», «я у мамы дизайнер» и так далее.

Читать полностью »

Быстрый старт:

  1. Зайдите в репозиторий https://github.com/koin32/cat_feeder.git и выполните все действия на машине с Linux

  2. Соберите простую схему с помпой как на Рис. 1

  3. Установите в Mosquitto broker логин и пароль на MQTT‑соединение

  4. Подключитесь к WiFi‑сети CatFeeder‑Setup

  5. Перейдите по адрусу 192.168.4.1

  6. Выберите WiFi SSID, введите пароль WiFi. Далее введите IP MQTT (адрес вашего сервера Home Assistant), логин и пароль MQTT.

  7. Далее вы должны увидеть MQTT‑устройство в Home Assistant.

    Читать полностью »

Прототип №1 — первый блин не комом, а макарониной

Без прелюдий сразу скажу, что единственным правильным способом было бы купить готовый герметичный аквариум (акриловый или стеклянный) и не мучаться, но мне казалось, что готовые решения — это не весело. Ниже лонгрид о том, как я делала корпус своего первого прототипа умного флорариума на esp32. Дальше будут публиковаться лонгриды про железо, логику, веб‑интерфейс и про корпус второго (и последнего) прототипа.

Глава 1. Похороны готовых решений и последствия синдрома «горит сарай, гори и хата»

Читать полностью »

Немногим более года назад я приступил к разработке бэка для сервиса GPS‑мониторинга автотранспорта. Задача казалась интересной — мне всегда больше нравилась связка с реальным железом и техникой, чем обычный SaaS в вакууме. Бек должен был парсить TCP пакеты по протоколам Galileosky, Vega, Wialon.

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

Читать полностью »

Каждый мой проект на ESP32 заканчивался одинаково: микроконтроллер готов, датчики читаются, реле щёлкают — а дальше надо руками писать HTML, CSS, JS и протокол поверх веб‑сокета, чтобы увидеть пару графиков в браузере. На третий раз я решил, что хватит, и сделал библиотеку RisalDash: интерфейс описывается на C++ в несколько строк, а весь фронтенд и протокол генерируются сами и отдаются самим контроллером.

cpp

dash.gauge ("Voltage", &volts, 0, 14, "V");

dash.chart ("Temperature", &temp, "C");

dash.toggle("Pump", &pump, [](bool on){ digitalWrite(PUMP, on); });

dash.begin();   // сохранённый Wi-Fi → подключиться; первый запуск → captive-портал

Читать полностью »

Это история о том, как мы строили промышленный продукт из сферы Интернета вещей для морских портов, и какое-то время нам казалось, что главное — заставить его работать. Но оказалось, что иногда самая большая проблема не в коде, не в железе и даже не в отсутствии спроса.

В одну из питерских белых ночей я усердно работал на территории морского порта. Коллеги весь день монтировали наше оборудование на контейнерный перегружатель, и, несмотря на позднее время, мы решили не прерываться — нам не терпелось понять, будет ли все работать так, как мы планировали.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js