подправил скетч выложенный постами ранее, добавил с использованием ЕЕПРОМ.
для экономии ресурсов памяти проца - могу предложить писать номера телефонов, а также некоторые другие настройки - в записную симкарты, там где телефонные номера храняться. и удобно считывать тоже.
есть еще такие задумки:
1- добавка/замена номера мастера (хозяина) по смс с присвоением ячейки (разобрался вроде), проверяю пока что.
2- если после сработке по датчику двери, ее закрыли ставить на охрану.
3- выводить в каждом смс инфо о полном состоянии системы (датчики вкл/выкл, отправка смс вкл/выкл)
нужно ли это, ваше мнение? ну и другие пожелания приветствуются
ой.... тех задумок у меня - пруд пруди.. .вывести конопку возле двери.
С кнопки - толко постановка с задержкой, снимаем с телефона.
Нажали кнопку - пошел отсчет задержки... закрыли дверь и сработал геркон - задержка прекращена и стало в охрану, над дврью зажегся светодиод...
, а, еще добавить зумер, и пусть делает бип-бип раз в 1-2 сек, пока идет задержка на выход по крайней мере. На вход можно не бипать, чтобы злоумышленник не ориентировался. или бипать если так хочется пользователю. Вкл-выкл бып - в настройках.
Снимать с охраны - тем что предложили выше, ну и ставить в охрану тоже можно той же карточкой или кнопкой по сценарию выше. Кнопка - удобно, наприемр не нужно лезть в карман за карточкой. Плюс снятие с телефона с охраны, это если карточку забыли... Сложностей по логике - не вижу никаких, в программу впишется без проблем.
На всякий случай не спрашиваю зачем заводить String, чтобы потом преобразовывает его в char (тем более таким варварским способом -дублируя строку в памяти).
Да дело Ваше. как получается, так и получается. Мне непонятно, ... ну ладно, если уж Вы так жить не можете без String, живите, но нафига дублировать-то? Зачем строка 22 и массив номер? Зачем в памяти второй дубль этого номера? Его что, нельзя прямо из буфера String'а записать в еепром?
Да дело Ваше. как получается, так и получается. Мне непонятно, ... ну ладно, если уж Вы так жить не можете без String, живите, но нафига дублировать-то? Зачем строка 22 и массив номер? Зачем в памяти второй дубль этого номера? Его что, нельзя прямо из буфера String'а записать в еепром?
возможно можно, но я не знаю как. направьте на путь истинный
Вообщем что-то сделал, записывает, хранит, читает.
НЕ записывает, НЕ хранит, НЕ читает.
Чтобы убедиться в этом, просто выбросьте из программы запись, а оставьте только чтение и печать. Если там действительно всё записано и хранится, она должна нормально прочитать и напечатать.
Кстати, не понимаю, чем Вас не устраивют мои функции? Не работают, так я ж предупреждал, что не проверял и просил сказать, если возникнут проблемы. Вы молчите, значит, я полагаю, что всё работает.
Вообщем что-то сделал, записывает, хранит, читает.
НЕ записывает, НЕ хранит, НЕ читает.
Чтобы убедиться в этом, просто выбросьте из программы запись, а оставьте только чтение и печать. Если там действительно всё записано и хранится, она должна нормально прочитать и напечатать.
Кстати, не понимаю, чем Вас не устраивют мои функции? Не работают, так я ж предупреждал, что не проверял и просил сказать, если возникнут проблемы. Вы молчите, значит, я полагаю, что всё работает.
для больших смс это уже критично, проверял не единожды.
Все проверить еще не удалось, но большинство работает. Остальное завтра проверю.
датчик двери (геркон) при сработке снимет с охраны, отправляет смс и звонит, при закрытии снова становится на охрану.
датчик движения (PIR) можно вкл/выкл смской. при сработке первые 2 раза сирена, в 3й раз отправляет смс.
датчик температуры (DS18b20).
можно проверить баланс, температуру.
можно отключить смс информирование о сработке датчиков, но остается смс проверка.
Вот что получилось:
Вот с использованием EEPROM, если кому надо, но его не проверял еще:
Ну и слава Богу. А вообще, со String поосторожнее и скобки не ленитесь ставить, я же там писал и примеры приводил как оно влияет.
да еще не добрался, почитаю завтра.
Со стринг смело... смело..
Мне вот флоат в стринг опндобилось..
Тмпературу в флоат считывал, сравнивал.. а выводить в смс - ругается.
пришлось так: sms_txt = String (Temp);
подправил скетч выложенный постами ранее, добавил с использованием ЕЕПРОМ.
подправил скетч выложенный постами ранее, добавил с использованием ЕЕПРОМ.
для экономии ресурсов памяти проца - могу предложить писать номера телефонов, а также некоторые другие настройки - в записную симкарты, там где телефонные номера храняться. и удобно считывать тоже.
есть еще такие задумки:
1- добавка/замена номера мастера (хозяина) по смс с присвоением ячейки (разобрался вроде), проверяю пока что.
2- если после сработке по датчику двери, ее закрыли ставить на охрану.
3- выводить в каждом смс инфо о полном состоянии системы (датчики вкл/выкл, отправка смс вкл/выкл)
нужно ли это, ваше мнение? ну и другие пожелания приветствуются
Так и не разобрался с сохранением номера в ЕЕПРОМ, может кто подскажет часть кода по сохранению номера телефона в ЕЕПРОМ?
EEPROM.put()
EEPROM.put()
да. вот как раз пытаюсь соединить два куска, мой:
и EPPROM.put:
пока проблема с переводом String в char/
но это уже завтра...
типа put - сам должен засандалить стринг в память.
ой.... тех задумок у меня - пруд пруди.. .вывести конопку возле двери.
С кнопки - толко постановка с задержкой, снимаем с телефона.
Нажали кнопку - пошел отсчет задержки... закрыли дверь и сработал геркон - задержка прекращена и стало в охрану, над дврью зажегся светодиод...
типа put - сам должен засандалить стринг в память.
где-то вычитал, что можно и String засандалить, но у меня не вышло.
на счет задумок: жду rfid rc522
а в коде, выложенном пару постами ранее, если кодовое слово написать мастер, то номер не полностью определяется, подскажите, почему?
Не знаю, там два кода. Скажите толком, что Ва надо. Строку запихать в епром? Строка какого типа? String? char[]?
ой.... тех задумок у меня - пруд пруди.. .вывести конопку возле двери.
С кнопки - толко постановка с задержкой, снимаем с телефона.
Нажали кнопку - пошел отсчет задержки... закрыли дверь и сработал геркон - задержка прекращена и стало в охрану, над дврью зажегся светодиод...
, а, еще добавить зумер, и пусть делает бип-бип раз в 1-2 сек, пока идет задержка на выход по крайней мере. На вход можно не бипать, чтобы злоумышленник не ориентировался. или бипать если так хочется пользователю. Вкл-выкл бып - в настройках.
Снимать с охраны - тем что предложили выше, ну и ставить в охрану тоже можно той же карточкой или кнопкой по сценарию выше. Кнопка - удобно, наприемр не нужно лезть в карман за карточкой. Плюс снятие с телефона с охраны, это если карточку забыли... Сложностей по логике - не вижу никаких, в программу впишется без проблем.
Не знаю, там два кода. Скажите толком, что Ва надо. Строку запихать в епром? Строка какого типа? String? char[]?
вот здесь:
если кодовое слово "master", то придет 8 цифр номера, как будто ограничение по длинне сообщения.
если прописать кодовое слово "m" то все в норме.
Строку типа String, записать в EEPROM - 28 строку номер телефона, в ячейку памяти строка 29.
а вы отредактируйте сначала строку (nachalo + key_word_len + 1, nachalo + key_word_len + 12);
чтобы приходило не 8..
а вы отредактируйте сначала строку (nachalo + key_word_len + 1, nachalo + key_word_len + 12);
чтобы приходило не 8..
так отсюда приходит 11 символов, если кодовое слово "m", если кодовое "master" то приходит 8 цифр номера.
нашел на просторах часть кода для добавления номера телефона, но как-то работает через раз, может что подскажете?
строка добавления номера : addphone:79111386232 1 2 3
а вы отредактируйте сначала строку (nachalo + key_word_len + 1, nachalo + key_word_len + 12);
чтобы приходило не 8..
но как-то работает через раз
А с чего Вы взяли, что она через раз работает? Вы же нигде не читаете что у Вас там в епром записалось. Прочитайте и убедитесь, что не работает никак.
Подскажите. или поделитель процедурой сохранения номера в EEPROM
Да, нет никакой особой процедуры. EEPROM.put или EEPROM.update - вот и вся процедура.
Да, нет никакой особой процедуры. EEPROM.put или EEPROM.update - вот и вся процедура.
спасибо. это я знаю, торлько все-равно не получается как-то
А как Вы делаете, что не получается?
вот по этому коду норм работает, как только извлекаю номер из смс, то он его при чтении выдает так "
вот по этому коду норм работает, как только извлекаю номер из смс, то он его при чтении выдает так "
Как "так"?
И кроме того, зачем Вы мне показываете пример, который работает? Вы покажите тот, который не работает (желательно тоже маленький).
чуть позже выложу, нет под рукой. читает из епром ковычки/
Вообщем получилось преобразовать String в char, и сохранить номер в ЕЕПРОМ.
Т.е. проблема решилась? Ну и слава Богу.
На всякий случай не спрашиваю зачем заводить String, чтобы потом преобразовывает его в char (тем более таким варварским способом -дублируя строку в памяти).
я считываю номер из смс в String.
ну или подскажите как еще можно, т.к. это только начало, надо несколько номеров хранить в ЕЕПРОМ
пока так получается с еепромом
Да дело Ваше. как получается, так и получается. Мне непонятно, ... ну ладно, если уж Вы так жить не можете без String, живите, но нафига дублировать-то? Зачем строка 22 и массив номер? Зачем в памяти второй дубль этого номера? Его что, нельзя прямо из буфера String'а записать в еепром?
Да дело Ваше. как получается, так и получается. Мне непонятно, ... ну ладно, если уж Вы так жить не можете без String, живите, но нафига дублировать-то? Зачем строка 22 и массив номер? Зачем в памяти второй дубль этого номера? Его что, нельзя прямо из буфера String'а записать в еепром?
возможно можно, но я не знаю как. направьте на путь истинный
Ну, сейчас мне не на чем проверить, так что если не заработает, напишите, я вечером или завтра починю. Но примерно как-то так должно работать.
Обращаться к функциям как обычно. Например, так:
а как расчитать сколько ячеек памяти займет запись? чтобы вторая потом запись не наехала на чать первой.
Ну, добавьте, чтобы saveStringToEEPROM возващала сколько байтов она записала. Очевидно, что это: len + sizeof(len)
Вообщем что-то сделал, записывает, хранит, читает.
Вообщем что-то сделал, записывает, хранит, читает.
НЕ записывает, НЕ хранит, НЕ читает.
Чтобы убедиться в этом, просто выбросьте из программы запись, а оставьте только чтение и печать. Если там действительно всё записано и хранится, она должна нормально прочитать и напечатать.
Кстати, не понимаю, чем Вас не устраивют мои функции? Не работают, так я ж предупреждал, что не проверял и просил сказать, если возникнут проблемы. Вы молчите, значит, я полагаю, что всё работает.
Вообщем что-то сделал, записывает, хранит, читает.
НЕ записывает, НЕ хранит, НЕ читает.
Чтобы убедиться в этом, просто выбросьте из программы запись, а оставьте только чтение и печать. Если там действительно всё записано и хранится, она должна нормально прочитать и напечатать.
Кстати, не понимаю, чем Вас не устраивют мои функции? Не работают, так я ж предупреждал, что не проверял и просил сказать, если возникнут проблемы. Вы молчите, значит, я полагаю, что всё работает.
ЧИТАЕТ! даже питание снимал!
Так Вы в этой же программе и "записываете". Но дело Ваше. Читает, так читает.
Так Вы в этой же программе и "записываете". Но дело Ваше. Читает, так читает.
записал:
выполнил команду phone, прочитал номера из ЕЕПРОМ. и питание снимал с ардуинки на минуту.
Да, я уж заметил - виноват!
Там в 49 строке put, а мне что-то write в голову вбился. Ну, так, да, должно писать. "Через Альпы", конечно, но должно.
Пишу в консоли номер master:79111111111 0 (записываю его в 0 ячейку).
все сохраняет в ЕЕПРОМ.
Звоню с другого номера но номер не сравнивается, но пишет что проверен
Что делаю не так. подскажите, пожалуйста?
Что значит не сравнивается? Не равен что ли? Так они разные? Я не понял. Поясните и приведите код который должен сравнивать
да номера разные. но пишет что одинаковые.
код в сообщении выше.