Linksys slideshow

Материал из OpenWiki
Перейти к: навигация, поиск

(бес)Полезные картинки на IPфонах Linksys SPA942/962 , рандомный слайдшоу

Основано на офиц. документации LVS SPA962 & SPA942 Phone Photo Album Display

Проверено на прошивке 6.1.5(а)

Потребуется cron, wget, perl, пакет ImageMagick, web сервер

Потребуется минимум три директории

  1. скрипты и картинки для 942
  2. скрипты и картинки для 962
  3. скрипты для телефонов (cgi-bin директория web сервера)

Получение картинок на сервер

get.sh

 #!/bin/sh
 cd /путь/images_942

или

 cd /путь/images_962

получение картинок любым путем, например информеры курса валют, погоды, пример

  wget http://pics.rbc.ru/img/grinf/dm_cb88x31.gif -O new.gif    && ./convert.sh new.gif 1.bmp 
  wget http://pics.rbc.ru/img/grinf/usd_cb_8831.gif -O new.gif   && ./convert.sh new.gif 2.bmp

картинки нумеруются, по порядку, скрипт выдачи картинок дергает их рандомно

по необходимости засунуть в cron


Конвертирование

convert.sh

 #!/bin/sh
 X=`identify $1|awk '{print($3)}'|sed 's/x/ /'|awk '{print($1)}'`
 Y=`identify $1|awk '{print($3)}'|sed 's/x/ /'|awk '{print($2)}'`

для 942

  if [[ $X -gt 120 ]] || [[ $Y -gt 40 ]]

или

  if [[ $X -gt 121 ]]

для 962

  if [[ $X -gt 320 ]]
 then

для 942

       convert -adaptive-resize 128x48 $1 temp.bmp && rm -fv $1
       convert -extent 128x48 temp.bmp temp2.bmp && rm -fv temp.bmp
       convert -monochrome temp2.bmp $2 && rm -fv temp2.bmp
 else
       convert -extent 128x48 $1 temp2.bmp && rm -fv $1
       convert -monochrome temp2.bmp $2 && rm -fv temp2.bmp

для 962

       convert -adaptive-resize 320x240 $1 temp.bmp && rm -fv $1
       convert -background black -gravity Center -extent 320x240 temp.bmp $2 && rm -fv temp.bmp
 else
       convert -background black -gravity Center -extent 320x240 $1 $2 && rm -fv $1
 fi

передаваемые параметры

  • $1 - оригинальная картинка
  • $2 - готовая


Выдача картинок

spa9x2_image.cgi

 #!/usr/bin/perl -w
 use POSIX("ceil");
 use strict;
 my $image = "/путь/к/картинкам/для/конкретной/модели/images/" . ceil ( rand 4 ) . ".bmp";

число картинок вписано вручную для уменьшения времени выполнения

можно заменить на что-то типа

 ls -l /путь/*bmp|wc -l
 my @timers = ('13','15','17','19');
 my $timerandom = $timers[rand @timers];

время до следующего обновления

  print "Refresh: $timerandom; url=http://192.168.98.99/путь/cgi-bin/spa9x2_image.cgi\r\n";
  open IMG,"<$image";
  binmode IMG;
  print "Content-type: Image/bmp\n\n";
  binmode STDOUT;
  while (<IMG>) {
        print $_;
  }
  close IMG;
  exit (0);


Установка картинок на телефоны

9x2_image_reset.sh

 #!/bin/sh
 LIST="/путь/к/списку/телефонов/данной/модели/spa9x2_list"

сброс картинки на пустую

  for i in `cat $LIST`
  do
         wget --post-data="32046=&25198=BMP+Picture" http://$i/admin/asipura.spa -q -O /dev/null
  done
 sleep 5

установка

  for i in `cat $LIST`
  do
        wget --post-data="32046=http%3A%2F%2F192.168.98.99%2Fпуть%2Fcgi-bin%2Fspa9x2_images.cgi&25198=BMP+Picture" \
        http://$i/admin/asipura.spa -q -O /dev/null
  done

Практика показала, что разовая недоступность сервера останавливает обновление картинок :)

Поэтому рекомендуется сунуть этот скрипт в cron куда-нибудь на утро, например так

 5 6 * * * /путь/942_image_reset.sh 2>&1 > /dev/null
 25 6 * * * /путь/962_image_reset.sh 2>&1 > /dev/null

Получение списка телефонов

phone_find.sh

Получить список всех SPA942/942, при условии, что есть список всех телефонов, можно например так

  for i in `cat list`
  do
        TXT=`wget http://$i/ -O -`
        S942=`echo $TXT|grep SPA-942|wc -l`
        S962=`echo $TXT|grep SPA-962|wc -l`
        if [ $S942 -eq 1 ]
        then
                echo "$i" >> spa942_list
        fi
        if [ $S962 -eq 1 ]
        then
                echo "$i" >> spa962_list
        fi
        sleep 0
  done

Если list - файл со списком ip адресов всех телефонов, то в файлах spa942_list/spa962_list будут ip адреса телефонов этой модели

by MejGun

Spa942 weather.jpg