Totoro 3 563 Опубликовано: 26 августа, 2014 (изменено) * * * Новая версия SmartLock 0.4 в этом посте: ссылка. * * * Простая реализация дверного замка на Google Glass из OpenPeripherals и компьютерах из OpenComputers. Образец торчит в дверях моего дома на сервере Computer&Science. Наверняка некоторые уже подходили (знаю всех поименно ) и пытались понять, работает мой замок или он просто завис.Так вот, замок работает. Для того чтобы в дом вошел посторонний человек, хозяин должен находиться на сервере и дать соответствующую команду (при этом он может быть где угодно, хоть в Аду). Кроме того программа ведет два списка: черный и белый. Тем, кто занесен в белый список разрешение на вход не нужно. Они могут войти в любое время, даже если хозяин отсутствует (даже если они не добавлены в приват). Тем, кто внесен в черный список программа мигнет красным сигналом, и отправит уведомление хозяину.Интерфейс замка выводится на очки "Google Glass" хозяина дома. Его можно упростить, я оставил место под другие фичи. Основной элемент - лог. Программа выводит туда сообщения и предупреждения.Управление идет командами в чат.Программа клиент:http://pastebin.com/9X3u2Z9gПрограмма терминал:http://pastebin.com/KbSmQrcHТерминал - программа, которая работает с блоком Google Glass Bridge. Она запускается на отдельном компьютере, к которому подключен вышеуказанный блок.Клиент - программа которая работает на небольшом компьютере дверного замка. Он управляет дисплеем (который по совместительству служит кнопкой звонка) и блоком красного контроллера, который отпирает дверь. Одновременно может быть запущено несколько компьютеров клиентов (если в дом ведет несколько дверей/люков), каждый клиент идентифицируется номером порта (по дефолту - 27) в первой строке кода.Команды управления (пишутся в чат):$$show - показать интерфейс замка$$hide - скрыть интерфейс (он будет показан автоматически, если произойдет какое-нибудь событие)$$open [port] - команда отпирает дверь. Если указан параметр port - она отопрет указанную дверь. Если не указан - ту дверь с которой связано последнее событие (кто-то позвонил, например в нее).$$deny <port> - замок указанной двери подает красный сигнал (запрет на вход =)) Чисто косметическая команда.$$add <port> - команда добавляет в систему новую дверь по указанному порту.$$whitelist [name] - если указан ник - команда добавляет его в белый список. Если ник не указан, программа выводит белый список в лог.$$blacklist [name] - если указан ник - команда заносит его в черный список. Если не указан - выводит черный список в лог.$$remove <name> - удаляет ник из списка (В какой список он внесен - из того и удаляет).P.S. Забыл написать - терминал ведет лог, и пишет, кто, когда и куда звонил, кого пропустили, кто на улице остался =) Можно почитать его на жестком, в той же папке где сам терминал лежит. Изменено 29 декабря, 2014 пользователем Totoro 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 27 августа, 2014 Удобная система команд, но что будет если потерять очки? Или их кто-то заберет в темном переулке? Немножко дорогой замочек по ресам, но учень удобный, легкая система выдачи доступа другим игрокам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 27 августа, 2014 Если потерял очки - не беда. Замок впустит в дом и без очков, просто не будет видно приветствие =) Можно будет скрафтить новые очки, синхронизировать с Google Bridge и пользоваться дальше. А вот если сопрут - беда. Придется блок Google Bridge наверное сломать/поставить, чтобы прервать связь злоумышленника с "сервером" =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 27 августа, 2014 А вот если сопрут - беда. Придется блок Google Bridge наверное сломать/поставить, чтобы прервать связь злоумышленника с "сервером" =)Вот и я всполошился из-за этого. Слом и установка поможет. И всем субовнерам придется тоже очки перелинковывать, если хоть у одного их заберут.А как ты говоришь, без очков открыть, команды же в чат не работают тогда? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 28 августа, 2014 Замок - сенсорный экран. Он посылает ник того кто "звонит в дверь" на терминал, а тот присылает ответную команду, если звонивший - хозяин, или есть в вайтлисте. Короче - очки нужны только чтобы редактировать списки и видеть лог событий. А входить/выходить можно и без них. Команда open нужна в том случае, если звонит кто-то неизвестный. Или отсутствующий с списке доступа. Тогда хозяин решает - впускать или не впускать и дает команду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
GodusX 1 Опубликовано: 28 августа, 2014 Если я правильно понял то нету смысла делать эту фигню. Кнопки под приватом работают также. Хотя можно сделать что-то более интересное... например, это уменьшит количество кабелей требуемых для создания звонка. На 100%. Вот такие пироги) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 28 августа, 2014 Если я правильно понял то нету смысла делать эту фигню. Кнопки под приватом работают также. Хотя можно сделать что-то более интересное... например, это уменьшит количество кабелей требуемых для создания звонка. На 100%. Вот такие пироги)Обрати внимание, что программа сохраняет на диск ники игроков, которые попытались войти на базу! Ну и также прога позволяет легко добавлять и убирать игроков. А в-третьих, сайт и сервер в частности посвящены компьютерным модам и Луа. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 28 августа, 2014 Программа позволяет осуществлять удаленный контроль. Где бы ни находился хозяин - он знает кто к нему пришел и может его впустить. Плюс программа работает независимо от привата. Если человек добавлен в белый список - он может пройти. Если не добавлен - на усмотрение хозяина. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 28 августа, 2014 Замок - сенсорный экран. Все, теперь понял весь замысел. А то из описания я понял, что только очки являются исполнительным элементом, но на самом деле это визуальный контроль и удаленное управление правами. Системка отличная, если огромная база, куча помещений, в которые нужно ограничить кому-то доступ а кому-то дать, то очень гибко можно настроить систему. П.С. Я правда не понял, игрок в вайтлисте сразу ко всем портам имеет доступ? У портов нет уровней? Допустим добавили игрока Васю и дали ему уровень доступа=2. Порты у которых уровень доступа выше, он или не видит, или не может открыть? Просто давать Васе какие-то только выборочные порты хлопотно же. А доступ ко всем дать тоже опасно и не принято так в системе безопасности делать. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 28 августа, 2014 Хорошая идея насчет уровней доступа. Попробую реализовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 1 октября, 2014 Итак, тотальная творческая переработка, с учетом полученных отзывов. Встречайте! Новый, ослепительный, потрясающий возможностями https://lh3.googleusercontent.com/XgSiLi-8zYrO6XaP1IjTDg0m9TdnHM_wOOJZWTOuRoU=w895-h513 SmartLock 0.3 by Totoro 1) Для тех, кто не хочет ждатьСсылка на установку: http://pastebin.com/nQHbskwP Если у вас есть интернет-плата, откройте каталог, доступный для записи и наберите: "pastebin get nQHbskwP lock". Теперь программу можно запустить простой командой "lock". 2) Что оно умеет? Итак, список основных фич: Централизованное управление множеством замков (в лице компьютера из OC) Управление правами доступа (черный/белый список), независимое от привата территории Настройка уровней доступа Лог на жестком диске (вам не нужно присутствовать на сервере, чтобы знать все обо всех) Управление через очки "Google Glass" или встроенный терминал Управление по сети Веселые смайлики 3) Как оно устроено?По сравнению с первой версией, все стало намного проще и дешевле. Основа - компьютер из мода OpenComputers. На нем запущена программа SmartLock. Дверные замки - это пары сенсорный монитор + красный контроллер. Все соединяются вместе кабелями и присоединяются к центральному компьютеру. Железо - это корпус (третьего уровня), две видеокарты (можно второго уровня), винчестер, процессор и память (любые). Замки - это мониторы второго или третьего уровня и красные контроллеры, расположенные так, чтобы сигнал редстоуна от блока открывал дверь. По желанию можно добавить Terminal Glasses Bridge и модем. 4) Как этим управлять? Управление осуществляется командами из консоли. Вот они: door <адрес монитора замка> <адрес красного контроллера> <название без пробелов> <уровень доступа> - записывает новый замок в таблицу door <адрес монитора> <название/уровень> - изменяет уже существующую запись list doors - выводит список всех дверей в системе get <адрес монитора> - выводит данные одного конкресного замка remove <адрес монитора замка> - удаляет запись из системы open [адрес монитора замка] - отпирает указанный замок. Если адрес не указан, отпирает последний активный замок. Например тот, в который только что позвонил гость. user <ник> <уровень доступа> - создает или изменяет пользователя list [users] - выводит список всех зарегистрированных пользователей get <ник игрока> - показывает уровень доступа конкретного игрока remove <ник игрока> - удаляет пользователя из таблицы log - показывает последние непрочитанные события log all - покасывает весь список лога с самого начала log clear - очищает лог в терминале (при этом все данные на жестком диске сохраняются) exit или quit или просто q - выход из программы Примечание: Важно! Адреса не нужно указывать полностью. Достаточно первых четырех-пяти символов. 4) Настройка программы В исходном коде, в самом начале расположены несколько констант, изменив которые вы можете настроить программу под себя. OWNER - ник владельца. Поменяйте на свой. DEFAULT_USER - ник пользователя по умолчанию. DEFAULT_LEVEL - уровень по умолчанию. Присваивается новым пользователям, если не указан другой. DEFAULT_DOOR - дефолтное название для новой двери OPEN_TIME - время на которое открывается дверь, в секундах RED_STRENGTH - сила редстоун-сигнала из красного контроллера PORT - порт для взаимодействия по сети ALLOW = "。◕‿◕。" WAIT = "(⊙_◎)" - набор смайликов для различных состояний замка DENY = "(¬_¬)" GLASSX - горизонтальная координата для интерфейса GoogleGlass GLASSY - вертикальная координата GLASS_TIME - время на которое появляются сообщения на очках GoogleGlass, в секундах 5) Сетевой интерфейсОн пока очень простой. (Если надо что-то расширить - пишите) Программа передает инфопакет, когда кто-то стучит в дверь. Это сериализованная таблица вида: {date, player, doorname, address}Дата/время события, ник игрока который вошел (или пытался), название двери и ее адрес. Программа принимает только один управляющий пакет - сериализованную таблицу вида: {command = 'open', address}Где command равно 'open', т.е. - открыть дверь, а address - необязательный параметр. Если адрес не указан, программа откроет последнюю активную дверь. 6) Возможные конфликты Компьютер оказывается подключен сразу к N-ому количеству мониторов - и естественно может забиндить не тот монитор в качестве основного. Добавьте в корень своего диска файл autorun такого содержания: require('component').setPrimary('screen', 'XXXX')Где XXXX - это адрес вашего главного монитора. Вы можете также объединить сеть дверных замков с сетью сенсоров движения SpiderEye. Зачем опутывать дом проводами дважды? В это случае вам будет необходимо создать такой же файл autorun на жестком диске компьютера SpiderEye. И проставить в нем адрес основного монитора SpiderEye соответственно. Если вы используете редстоун сигнал сети слежения - укажите аналогично главный компонент для рестоун сигнала - адрес красной карты или красного контроллера. Совет: если вы используете сетевой интерфейс программы, вы можете подключить свой компьютер через свитч OC. Это позволит пропускать беспрепятственно сетевые пакеты, и при этом не создавать путаницы компонентов. 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Saneckck 3 Опубликовано: 10 октября, 2014 Тоторо, поставил себе на дом этот замок. Впечатлений куча, в основном хорошие, очень удобная штука. Но хотел бы обратить твоё внимание на следующие вещи: 1) Указал свой ник в массиве переменных в графах OWNER и DEFAULT_USER, после чего мне всё равно потребовалось вносить себя в вайт лист через команду user. По сему напрашивается вопрос, зачем нужны выше указанные переменные? 2) Уж не знаю, лаги это сервера или программы, но дверной звонок иногда начинает меня игнорировать. Другие люди занесённые в вайт лист зайти могут (и на очках у меня всплывает соответствующее предупреждение), а меня он не воспринимает. Пожелания: 1)Можно сделать время и дату заносящиеся в лог файл и высвечивающиеся в терминале не игровыми, а реальными? 2)Хотелось бы иметь возможность закрепить за 1 дверью 1 красный контролер и 2 монитора (чтоб с каждой стороны был дверной звонок. 3)Возможность настройки "Инвертнутых" дверей (это когда при подаче ред стоун сигнала дверь закрыта, а не открыта. Собственно этот пункт возможен только при выполнении п.2. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 10 октября, 2014 Тоторо, поставил себе на дом этот замок. Впечатлений куча, в основном хорошие, очень удобная штука... Ура-а-а! Кто-то скачал мою программу! Спасибо за положительный отзыв! 1) Извиняюсь, просто забыл сделать автоматическое добавление OWNER'а в вайтлист. Пока отлаживал программу - вылетело из головы. DEFAULT_USER - это заглушка для программы. В ситуации, когда программе нужен ник, а она его не получила, программа возьмет дефолтный. Не критически важная фича. 2) Вот насчет этого не знаю. Скорее всего лаги на твоей стороне, если у других проблем нет, ибо все пользователи обрабатываются одинаково быстро. а) С реальным временем надо будет разобраться. Sangar переопределил системные функции для получения времени на внутриигровые. б) В данный момент, можно просто создать два замка с адресом одного и того же контроллера. в) "Инвертированная дверь" - это когда надо поддерживать сигнал редстоуна для того, чтобы она была закрытой, а чтобы открыть, этот сигнал надо гасить? Можно сделать. г) И еще один вопрос - надо ли добавлять настройку стороны, на которую контроллер дает сигнал? Сейчас он излучает всеми своими сторонами. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Saneckck 3 Опубликовано: 10 октября, 2014 в) "Инвертированная дверь" - это когда надо поддерживать сигнал редстоуна для того, чтобы она была закрытой, а чтобы открыть, этот сигнал надо гасить? Можно сделать. Да ты всё верно понял. г) И еще один вопрос - надо ли добавлять настройку стороны, на которую контроллер дает сигнал? Сейчас он излучает всеми своими сторонами.Думаю это уже лишнее. За сегодняшний день подумав, понял что нужно ещё несколько дополнений. 1) Функция включения сигнализации (теслы там и всё такое). 2) Функция игнорирующая персонажа некоторое время после многократных звонков за короткий период времени, возможность игнорировать персонажа некоторое время (в минутах). [Дело в том, что я поставил этот замок на свой дом в городе, и ещё не было ни кого, кто бы просто прошёл мимо не потыкав по звонку 100500 раз.] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 10 октября, 2014 1) Функция включения сигнализации (теслы там и всё такое).1) Надо определить условие активации сигнализации. Сигнализация - это будет отдельный контроллер. Активировать при попытке войти любого юзера с недостаточными правами? Или разница между уровнем двери и юзера должна достичь определенного размера, для включения сирены? (Например - грифер Вася с уровнем -9000 звонит в Дверь (10) - срабатывает, а если Петя с уровнем 8 звонит в ту же дверь - не срабатывает.)В принципе, можно просто вынести этот параметр как настройку. Если 1 - срабатывает на любого. Если больше - при соотв. разнице. 2) Добавлю кулдаун после N повторяющихся звонков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 12 октября, 2014 Ок, после основательной переработки и дополнения кода - новая версия! SmartLock 0.4 by Totoro 1) УстановкаНовая версия: http://pastebin.com/udqgd6yS Внимание: удалите файл doorlist.txt, если он у вас есть! Базу дверей вам придется создать заново, т.к. поменялся формат. Но это единственная печальная новость. 2) Что нового? Переработана система дверей. Теперь ключевой параметр - ID двери (или ее название). Каждая дверь может иметь любое количество экранов-сенсоров и контроллеров-излучателей. Они даже могут совпадать у разных дверей. Инверсный редстоун-режим дверей (если ваша дверь закрывается при подаче сигнала, а открывается от его отсутствия). Система триггеров тревоги. OWNER автоматически получает уровень 9000, если у вас еще нет таблицы юзеров. Если есть - все остается как есть. Теперь сторона (или стороны) для излучения сигнала редстоуна настраиваюся обязательно. Это сделано для повышения быстродействия, ибо активация всех сторон сразу создавала паузу программы примерно на секунду. Значения сторон - текстом на англ. языке. См. здесь. Программа теперь использует реальное время. (Можно переключить обратно на игровое по желанию.). Поддерживаются часовые пояса, високосные года и т.д.! При запуске, программа автоматически закрывает все двери. Вам не нужно беспокоиться, что после запуска где-то осталась незапертая вами дверь. Бан за флуд! Чем больше раз игрок нажмет на звонок подряд - тем дольше игнор. На OWNER'а не распространяется. Команда checkup - проверяет систему на конфликты и неправильные адреса. Команда set - редактирует параметры дверей (уровни, экраны, контроллеры, инверсный режим) Команда alarm - создает триггер тревоги. Срабатывает при заданной разнице между уровнями звонящего и двери. Команда help - краткая справка по всем командам. Ключ ? добавленый к любой команде покажет справку по ее синтаксису. Новые константы: ALARM_TIME - продолжительность тревоги в секундах REALTIME - использовать реальное время. По умолчанию - true TIMEZONE - часовой пояс (-1, +3 и т.п.) 3) FAQQ: Что делать если "звонок" не нажимается? A: Убедитесь, что консоль не находится в режиме ввода команды. Если это так - нажмите Enter (консоль скажет, что команда незнакома - не обращайте внимания). Звоня, постарайтесь нажимать на сам "смайлик" посередине экрана. В силу текущего разрешения черные полоски выше и ниже - мертвая зона. Я могу это пофиксить, но придется либо сдвинуть смайлик вверх/вниз, либо сделать его поменьше. 4) Гибкость С каждой версией, программа становится все гибче. И растет количество способов работы с ней. Например: Кроме дверей, сигналами редстоуна можно открывать/обезвреживать ловушки. Можно сделать авторизованный запуск какого-либо процесса, или машины. Можно сделать несколько дверей с одним дисплеем. В зависимости от уровня того, кто "звонит", откроется одна из связанных с сенсором дверей. Или несколько. Можно создать триггер с условием 100, который будет включать катушки Теслы. Тогда любой ваш недруг, которого вы занесете в базу с уровнем <= -100 будет испепелен на месте при попытке войти. Можно построить двустворчатые двери из поршней управляемые двумя контроллерами. Дверь может оперировать любым количеством контроллеров одновременно. Итак, что думаете? Пишите отзывы, пожелания, багрепорты. Буду рад всему. 8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
askl 0 Опубликовано: 21 марта, 2015 TotoroПодскажи нубу что используется в качестве контроллера? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 21 марта, 2015 TotoroПодскажи нубу что используется в качестве контроллера? Если ты имеешь "красный контроллер", то это Redstone I/O (хз, как его переводить, если честно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 21 марта, 2015 Redstone input output. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 21 марта, 2015 Redstone input output. Это понятно, сам знаю. Я имею в виду, как его адекватно перевести на русский язык? ... Наверное, контроллер редстоуна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах