• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Blockly, добавить работу со временем.

valeraba

Moderator
Команда форума
Можно сравнивать с обычными числами, а можно с блоком списка констант, без разницы. Недельные константы (0-6), месячные константы(1-12). Это только для удобства. В байткод эти блоки даже не попадут, вместо них будут стоять обычные числа. Это типа макросы, если выражаться програмерским языком.
2020-06-19_19-08-41 (2).png2020-06-19_23-59-26.png
 

Вложения

antenna-krsk

Active member
А не может ли быть одного блока в формате год-месяц-день-день недели-часы-минуты-секунды? Это была бы замена кучи блоков. Чтобы прописал то что нужно и все, остальное игнорируется. Например 11часов 20 минут и все.
 

valeraba

Moderator
Команда форума
А не может ли быть одного блока в формате год-месяц-день-день недели-часы-минуты-секунды? Это была бы замена кучи блоков. Чтобы прописал то что нужно и все, остальное игнорируется. Например 11часов 20 минут и все.
Могу добавить блок возвращающий количество суток от Рождества Христова (или от 1970). Его можно будет сравнивать, с блоком у которого будет ввод даты (день-месяц-год).
Блок возвращающий количество секунд от Рождества Христова (или от 1970) не возможен, так как у меня в blockly все числа формата float (такие большие числа просто не влезут в мантиссу float).

В итоге, абсолютное время можно выразить только через два числа типа float:
1) количество секунд от начала суток
2) количество суток от Рождества Христова (или от 1970)

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

valeraba

Moderator
Команда форума
Выложил новый функционал на сайт, только новый блок "clock" нельзя использовать в старых прошивках.



2020-06-22_21-17-39.png
 

valeraba

Moderator
Команда форума
Когда в устройстве время не синхронизировано с сервером, то блок "clock" будет возвращать значение NaN.
 

glory24

Member
Когда в устройстве время не синхронизировано с сервером, то блок "clock" будет возвращать значение NaN.
1592850942883.png
Так добавь Боту расписание. Пусть оттуда время берет.
Кроме этого само расписание можно будет использовать в сценарии.
 

PeterPK

Active member
Когда в устройстве время не синхронизировано с сервером, то блок "clock" будет возвращать значение NaN.
В каких случаях это может происходить?
Например после потери питания?
Устройство уже заработало, а интернет еще не встал - нет синхронизации?
 

valeraba

Moderator
Команда форума
В каких случаях это может происходить?
Например после потери питания?
Устройство уже заработало, а интернет еще не встал - нет синхронизации?
Да, именно так. А если к sonoff 4ch припаять часы реального времени, то время будет всегда.
 

PeterPK

Active member
Да, именно так. А если к sonoff 4ch припаять часы реального времени, то время будет всегда.
Какое там часы припаять, я в соседней ветке никак не могу понять с чем мне Rx замыкать чтобы DI получить, с плюсом или с землей, а вы говорите припаять часы!
 

glory24

Member
Какое там часы припаять, я в соседней ветке никак не могу понять с чем мне Rx замыкать чтобы DI получить, с плюсом или с землей, а вы говорите припаять часы!
Не переживайте, мы со всем этим справимся :)
лучше конечно сперва решить
с чем мне Rx замыкать чтобы DI получить
Я там уже ответил.
 

antenna-krsk

Active member
У меня возникло 2 вопроса
1. Часы реального времени синхронизируются при подключении к интернету? Если нет, как их править
2. Я покупал из нового и точного Ds3231 , и я так понимаю они не подходят? Или могу собрать с их библиотекой? Куда их паять
 

PeterPK

Active member
А у Телеграмм Бота переменных нет? (не путать с параметрами)
 

PeterPK

Active member
Нет, а нужны? Вот все его "сигналы":
Посмотреть вложение 9460
Переменные очень удобны для отладки сценариев - по ним видно что творит сценарий.
Поэтому по моему мнению - если есть сценарий, нужны и переменные. На период отладки. Потом становятся менее нужны.

Вот скажем сигналы Message, Token, ChatId - уникальны для Телеграм Бота, и нужны только ему.

А все остальное я бы унифицировал. У каждого устройства:
- 8 sensor
- 8 relay
- 8 schedule
- 8 stored
- 8 variable
- 8 flash_variable (это которые на флешке и которые нельзя часто писать)
- DI / AI
- история (графики)

Чтоб все одинаково и даже не задумываться на этот счет. Даже и собирать разные прошивки наверное проще будет.
Насчет relay я конечно не уверен, не разбираюсь, но вроде Ant-krsk припаивал дополнительные реле на Basic?
 

glory24

Member
Почему именно 8? Для каких задач? Кому не хватает 4-х?
Зачем, к примеру Basic 8 реле, когда у него только одно на борту?
- 8 schedule
- 8 stored
- 8 variable
- 8 flash_variable (это которые на флешке и которые нельзя часто писать)
Тут спорить не стану, этого много не бывает :) .
DI - это понятно, на Rx для всей линейки Sonoff можно организовать.
Но если брать во внимание WEMOS D1 MINI и NodeMcu ESP8266, то там Di можно больше организовать, так как доступных GPIO там все же есть немного.
АI вообще у двух последних только есть.
Не понимаю, как в таких условиях делать универсальные прошивки.

припаивал дополнительные реле на Basic
Зачем?
Нужно два реле - возьмите dual
Нужно 3 реле - берм dual и Basic
Нужно 4 - берм 4ch
 

PeterPK

Active member
Почему именно 8? Для каких задач? Кому не хватает 4-х?
От балды, чтобы всего было по 8.
У меня в сценарии сейчас задействовано 2 датчика - улица и дом.
Потенциально еще можно задействовать (именно в сценарии):
- температура теплоносителя на выходе из котла
- температура на втором этаже (туда идет отдельная ветка, он отключен зимой когда там никто не живет, можно купить шаровый кран с электроприводом и задействовать управление).

Плюс к этому чисто информационные датчики:
- температура в котле
- в подвале
- у кого-то видел два датчика в бане - предбанник и парная
- оранжерея (несколько штук может быть)

Телеграмм Боту может и 8 не хватить.

Зачем, к примеру Basic 8 реле, когда у него только одно на борту?
Чтобы не покупать дорогой 4ch, а спаять самому (точно не мой случай).

Не понимаю, как в таких условиях делать универсальные прошивки.
У Basic в прошивке сейчас 4 датчика, при полном их отсутствии в стоке. Никому не мешает.
Как раз по-моему одинаковые параметры прошивок (у всех датчики, реле, переменные) это путь к универсальной прошивке.
А сейчас я на одно устройство могу поставить три разные прошивки, но в одной нет того, в другой другого и тд.

Зачем?
Нужно два реле - возьмите dual
Нужно 3 реле - берм dual и Basic
Нужно 4 - берм 4ch
У Basic в прошивке сейчас 4 датчика. Зачем? Нужен датчик - купите Sonoff TH. Нужно два датчика? Купите два Sonoff TH.

Возможно я не прав, и такая унификация повлечет сложности для Валерия.
А возможно сложности будут только один раз - запрограммировать всем устройствам одинаковые модули/библиотеки, а потом зато проще станет.
 

PeterPK

Active member
Собрал прошивки для Basic и 4ch, поэкспериментировал. вроде все работает.
Единственное - пока не завел хоть какое-то левое расписание на Basic, часовой пояс был неправильный и часы и дни врали.
 

valeraba

Moderator
Команда форума
У меня возникло 2 вопроса
1. Часы реального времени синхронизируются при подключении к интернету? Если нет, как их править
2. Я покупал из нового и точного Ds3231 , и я так понимаю они не подходят? Или могу собрать с их библиотекой? Куда их паять
1) да, синхронизируются каждый раз при подключении к серверу
2) не знаю, нужно протоколы сравнивать
Для 4ch часы подключать к двум gpio: 9 (sda), 10 (scl)
 
Сверху Снизу