Giter VIP home page Giter VIP logo

luckybox's Introduction

LuckyBox

Автоматика на esp8266

Многофункциональная автоматика винокура на платформе esp8266. Основная цель - дать возможность удаленно через веб-интерфейс управлять процессами дистилляции, ректификации и затирания.

Дополнительная информация https://luckycenter.ru

luckybox's People

Contributors

informaxuno avatar mefody1 avatar mefody1971 avatar microgears avatar mitskovets avatar serjrv avatar theluckychip avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

luckybox's Issues

Рефакторинг

Делаю issue, чтобы номера задач совпадали с номерами веток

Графики

Одновременный вывод показаний температур на одном графике с пользованием Plotly.js

DTO (обмен данными между клиентом и сервером (МК))

Предлагаю навести порядок в обмене данными:

  1. Установка настроек МК тоже должна осуществлять через JSON // предложение от @mitskovets (полностью поддерживаю) ((сейчас не так, сейчас через разные GET))
  2. На данном этапе МК должен обрабатывать два основных запроса**. Запрос состояния (все датчики, мощность…) и запрос на изменение настоек. Запрос состояния в свою очередь так же помимо всего транслирует настройки в ответ, тут мы сразу предусматриваем сценарий подключения нескольких устройств (ПК, смартфон, планшет аля большой дисплей, злая тёща))) )
  3. Это важно сделать как можно скорее, чтобы заключить “соглашение” между разработчиками front/back-end и по возможности минимизировать влияние на работу друг друга (Даже на данном этапе между разработчиками явно выкристаллизовывается разделение труда).
    Завтра (26.05.2018) выкачу на обсуждение два JSON DTO

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

датчики температуры переодически сбоят

Проблема: датчики температуры переодически сбоят-показывают «150градусов» несколько перезагрузок и переоприделение иногда помогают, но чаще датчики просто клинит на 150
использую два датчика работают до десяти процессов ректификации и мрут, сменил уже штук 15 от разных производителей
При подключении четырех датчиков-сбой происходит в течении пары часов (длинна провода-2м)

Признак датчика температуры

Поскольку датчики у нас определяются случайным образом. Предлагаю следующую схему:
Определиться с порядком (он уже определён в интерфейсе):

  1. Вода на выходе
  2. В узле отбора
  3. Царге
  4. В кубе
  5. Доп. датчик 1
  6. Доп. датчик 2
    И т.д.

И иметь массив соответствия:
[ 6, 1, 2, 3, 4, 5] (это пример)

Который означает что:

  1. (Вода на выходе) сидит на шине 6
  2. (В узле отбора) сидит на шине 2
    И т.д.

Это соответствие задаёт пользователь в настройках.

Сортировку лучше делать на стороне МК, поскольку её всё равно делать, раз у нас появился дисплей.

Также предлагаю всё таки показания хранить в массиве, а не в переменных как в текущей реазации.

Начиная с версии 2.0.RC18 ответ SensorsOut не содержит информации про датчики температуры.

Лакибокс SN: BEDDC22A6B7D, второе поколение с шиной на разъёмах
Изначально стояла какая-то древняя версия прошивки, оставшаяся с момента покупки.
У меня выдернулись два проводка от датчиков температуры, я вытащил все, переобжал, поставил обратно в каком-то другом порядке. Возникла потребность перенастроить датчики - их порядок и назначение.
Я нажал "сбросить датчики" и неожиданно для себя перестал получать информацию про них в ответе SensorsOut. На экранеустройства в настройках они отображались. Я решил перепрошить устройство и накатил последнюю сборку 2021. Датчики температуры показывают температуру на экране устройства, но данных всё ещё нет в ответе SensorsOut
Откатыая одну сборку за другой я выяснил, что для моего устройства последняя версия, в которой данные датчиков возвращаются в ответе - это 2017.
Что-то такое было сделано в sensors.cpp, что блокирует отдачу данных с датчиков в веб.

Единый запрос состояния МК для всех процессов

Под состоянием я понимаю: показание всех датчиков, установленную мощность, настойки… в данный момент времени.

Сл. функции делают запросы к серверу:

  • getSettings()
  • getDistillation()
  • getReflux()
  • getPower()
  • getBrewing()

Это не правильно и перегружает код в МК. сейчас идёт 2 запроса по сути с дублируемым содержанием.

  1. Предлагаю делать одни запрос, что бы получить состояние МК, состояние предавать через configs.json. Каждый процесс (дислияция, ректификация…) будет интерпретировать показания по своему усмотрению.
  2. На клиенте накапливать состояния в массиве. Каждый процесс будет брать последний элемент из массива который лежит в глобальной области видимости. Это позволит сделать лог и графики.

То есть постоянно крутиться: setTimeout(getSettings, 2000);
И в какаято из функций

  • distillation()
  • reflux()
  • power()
  • brewing()

Сделать одну кнопку submit

Предлагаю сделать одну кнопку. В противном случае количество кода растёт, в том числе и на МК. Настроек будет гораздо больше.

Скрин

Сброс настоек при вводе

В текущей реализации, настройки обновляются раз в две секунды, невозможно осуществить ввод, введённые данные сбрасываются, надо крайне ловко жать кнопку submit.

`
setTimeout(getSettings, 2000);

function getSettings() {
	$.ajax({
		url: 'configs.json',
		data: {},
		type: 'GET',
		dataType: 'json',
		success: function (msg) {
			console.log('Settings',msg);
			$("#settings_ssdp").val(msg["SSDP"]);
			$("#settings_ssid").val(msg["ssid"]);
			$("#settings_password").val(msg["password"]);
			$("#settings_ssidap").val(msg["ssidAP"]);
			$("#settings_passwordap").val(msg["passwordAP"]);
			$("#settings_timezone").val(msg["timezone"]);

			setTimeout(getDistillation, 2000);
		}
	});
}

`

Я уже предлагал накапливать состояния МК в массиве, если это реализовать можно сравнивать с предпоследним состоянием, обновлять интерфейс только в случае изменения и при переходе на страницу настроек.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.