magnify
Home arrow 2013 arrow Сентябрь
formats

Автоматическая проверка номера в очереди в МДОУ г. Петрозаводска.

Опубликовано: 19.09.2013 Автор: в ,

Наваял примитивный скрипт checkMDOU.php для автоматического отслеживания номера в МДОУ г. Петрозаводска, благо теперь есть доступ к электронной очереди (Система «Дошкольник»). Шлет электронное письмо, если номер изменился. Подразумевается все-таки, что номер в очереди только убывает…8) Выкладываю для общей пользы (не забудьте поменять LOGIN, PASSWORD, PATH, EMAIL):

/**
* Проверка авторизации на сайте
*/


function isAuth($data){
   return preg_match('/<a href="\/site\/logout"/Usi',$data);
}

/**
* Отсылка электронного письма
*/

function sendmail($email, $subject, $message) {
    // To send HTML mail, the Content-type header must be set
    $headers  = 'MIME-Version: 1.0'."\r\n";
    $headers .= 'Content-type: text/html; charset=UTF-8'."\r\n";
    // Additional headers
    $headers .= 'To: '.$email."\r\n";
    $headers .= 'From: '.$email."\r\n";

    mail($email, $subject, $message, $headers);
}

// Данные для авторизации на сайте
$ch = curl_init();
$url = 'https://mdou.petrozavodsk-mo.ru/site/login';

// !!!ВПИШИТЕ!!!
$login = 'LOGIN';
$password = 'PASSWORD';
$pathdb = 'PATH';

// email куда слать письмо
// !!!ИЗМЕНИТЕ!!!
$email = 'EMAIL';

// Тема письма
$subject = "ИЗМЕНЕНИЕ ОЧЕРЕДИ В МДОУ";

curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt'); // сохранять куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE,  dirname(__FILE__).'/cookie.txt');
curl_setopt($ch, CURLOPT_POST, 1); // использовать данные в post
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
    'LoginForm[username]'=>$login,
    'LoginForm[password]'=>$password,
    'x'=>10,
    'y'=>11
));

// Пытаемся авторизоваться
// Если успешно, то достаем номер в очереди посредством XPath
if (isAuth($data = curl_exec($ch))) {
    $document = new DOMDocument();
    @$document->loadHTML($data);
    $selector = new DOMXPath($document);
    $nodes = $selector->query('//div[@id="content"]/span[@class="num"]');
    if ($nodes->length !== 1) {
   $cur_num=-1;
    } else {
   $cur_num = $nodes->item(0)->nodeValue;
    }
    curl_close($ch);
} else {
    // В противном случае отсылаем почту о невозможности авторизации на сайте
    $message = '
    <html>
    <head><title>Невозможно проверить номер</title></head>
    <body>
    <p>Внимание! Невозможно проверить номер очереди в МДОУ г.Петрозаводска</p>
    <p><b>Проверьте сайт.</b></p>
    </body>
    </html>
    '
;

    $subject = "Невозможно проверить номер в МДОУ";
    sendmail($email, $subject, $message);
    curl_close($ch);
    exit;
}

// Проверяем наличие номера в локальной простенькой базейке
$db = new SQLite3($pathdb.'/mdou.db');

$id = $db->querySingle('SELECT id FROM queue WHERE number='.$cur_num);

// Если не нашли, то отсылаем сообщение об изменении номера в очереди
if (($id === NULL || $id === FALSE) && $cur_num !== -1) {
    $db->exec("INSERT INTO queue VALUES (null,".$cur_num.")");

    $message = '
    <html>
    <head><title>Изменение порядка очереди в МДОУ</title></head>
    <body>
    <p>Внимание! Изменился Ваш номер порядка в очереди в МДОУ г.Петрозаводска </p>
    <p>Новый номер: <b>'
.$cur_num.'</b></p>
    </body>
    </html>
    '
;

    sendmail($email, $subject, $message);

    $db->close();
    unset($db);
    // Пишем в лог про новый номер
    echo date(DATE_RFC2822).": Новый номер в очереди ($cur_num)\n";
} else {
    // Иначе пишем в лог, что изменений нет
    echo date(DATE_RFC2822).": Изменений нет ($cur_num)\n";
}

Cтавим расширение PHP для работы с SQLite и клиент:

apt-get install php5-sqlite sqlite3

Создаем базу:

$ sqlite3 mdou.db
sqlite> CREATE TABLE queue(id INTEGER PRIMARY KEY, number INTEGER);

Добавляем запуск скрипта в cron:

0 * * * * php /PATH/TO/SCRIPT/checkMDOU.php >>/PATH/TO/LOG/out.log 2>&1

Буду рад, если кому-то пригодится.

 
Просмотров: 747 | Комментариев нет  comments 
formats

Детский мобиль (карусель) на кроватку своими руками

Опубликовано: 18.09.2013 Автор: в

Честно говоря не очень хотелось тратить 2500-3000RUB (такова цена в наших магазинах) на такую полезную мелочь, как детский мобиль в кроватку, учитывая, что нужен он всего несколько месяцев. Естественно было принято решение сделать его самому, тем более, что его изготовление не займет больше одного вечера, а себестоимость на момент написания поста — 650RUB (если нет БП). Ну а музычку всегда можно включить отдельно, хотя никто не мешает купить и отдельную безделушку с мелодиями. Итак, приступим-с. Для его создания мне понадобились:

  1. Двигатель для поворотного стола СВЧ-печи (21V/AC). Он уже с редуктором и как раз обеспечивает необходимую скорость вращения 4-5 rpm. Есть и на 220V, но к кроватке вести такое напряжение не надо бы.
  2. Блок питания (БПП, это который переменного напряжения) на 19-21V.
  3. Корпус для моторчика. У меня отлично подошла мыльница.
  4. Выключатель + гнездо для БП + провода. Этого добра, как и двигателей навалом в магазинах радиоэлектроники.
  5. Две линейки для крестовины. К валу их я прикрепил через затянутую шайбу гровера. На самом деле лучше просверлить вал и в него продеть штифт или что-нибудь похожее для удержания крестовины. У меня просто не оказалось нужного сверла по металлу.
  6. Подручный крепеж (болтики, винтики, шайбы, клей). В общем что найдете.
  7. Четыре мягкие игрушки приблизительно одинакового веса
  8. Ленточки для декора и подвесов.
  9. И самое главное, прямые руки.

В общем процесс этот довольно творческий, так что смело применяйте воображение. Для иллюстрации процесса изготовления делюсь картинками и видео мобиля в работе:

Подвесные игрушки

Подвесные игрушки

Необходимые детали

Необходимые детали

Двигатель установлен

Двигатель установлен

Вид со стороны выключателя

Вид со стороны выключателя

Вид со стороны вала двигателя

Вид со стороны вала двигателя

Крестовина установлена

Крестовина установлена

Мобиль в сборе

Мобиль в сборе

Вот такой вот DIY-мобиль…8) Если кто найдет у себя в городе подходящий мотор-редуктор на 4-6 rpm для моделизма с приличным крутящим моментом, работающий от батареек, то это даже лучше вариант. Жаль, мне у себя такой найти не удалось.

 
Просмотров: 5 382 | 1 комментарий  comments