Именно так.Alex_Jet писал(а):Или все гораздо проще: Monitor 1 - это картинка с камеры 1, Monitor 3 - это картинка с камеры 3
Не попеременно, а по клику на изображение.Alex_Jet писал(а):а на главной странице попеременно меняются изображения с них?
Именно так.Alex_Jet писал(а):Или все гораздо проще: Monitor 1 - это картинка с камеры 1, Monitor 3 - это картинка с камеры 3
Не попеременно, а по клику на изображение.Alex_Jet писал(а):а на главной странице попеременно меняются изображения с них?
Спасибо! Я голову сломал как это все работает! Вынужден Вас попросить как-то минимально задокументировать возможности демонстрационного веб-интерфейса умного дома на вашем сайте. Иначе очень многие сломают копья прежде чем разбирутся со всеми возможностями. Заранее спасибо! Я реально много времени убил на разборку Ваших скриптов (с php дела не имел, но сейчас освоил)! Если бы эти моменты были задокументированы, было бы значительно легче.Andrey_B писал(а): Не попеременно, а по клику на изображение.
Я просто не знаю как это назвать... unix-парадокс! Так как Вы написали - все работает!!!Andrey_B писал(а):Попробуйте вызывать скрипты из cron'а так: cd /var/www/[путь к каталогу]; php script.php
Код: Выделить всё
$temp_id3 = $ab->get_id("temp_in_server_room");
$hum_id1 = $ab->get_id("humidity_in_server_room");
$DHT_value = file_get_contents('http://192.168.12.20/sec/?pt=30&cmd=get');
list($temp, $hum) = explode("/", $DHT_value);
$DHT_temp = explode(":", $temp);
$DHT_hum = explode(":", $hum);
$ab->mod_write($temp_id3, "SYSDATE(), $DHT_temp[1]");
$ab->mod_write($hum_id1, "SYSDATE(), $DHT_hum[1]");
Код: Выделить всё
list($temp, $hum) = explode(":", preg_replace("/.*:(\d+.\d+).*:(\d+.\d+)/", "$1:$2", file_get_contents('http://192.168.12.20/sec/?pt=30&cmd=get')));
Код: Выделить всё
echo $ab->mod_read($ab->get_id("alarm"), "<strong><font color=\"#EE2211\">#event_date# - #event_title#</font></strong><br>", "event_date DESC");
Код: Выделить всё
function Alarm_Camera_Write($camera_id, $camera_label, $status)
{ $camera_addr = $ab->mod_read($camera_id, "#key_addr#", "", 1, "key_label='$camera_label'");
$alarm_camera_tmpID = $ab->mod_read($camera_id, "#tmpID#", "", 1, "key_label='$camera_label'");
$ab->mod_write($camera_id, "key_pio='$status'", "key_label='$camera_label'");
$ab->mod_write($camera_journal_id, "SYSDATE(), '$camera_label', '$status'");
}
$camera_id = $ab->get_id("cams");
for ( $i = 1; $i < 6; $i++ )
{ $camera_label = "Camera" .$i;
if($i == 2 || $i == 4) $status = 1; //Для проверки работы
else $status = 0; //Для проверки работы
Alarm_Camera_Write($camera_id, $camera_label, $status);
}
Код: Выделить всё
PHP Fatal error: Call to a member function mod_read() on null in /var/www/smart-home/make_snap~.php on line 20
Пользовательский Web-интерфейс не генерирует сообщения об авариях. В нем аварии возникнуть не могут. Но пользовательский Web-интерфейс отображает информацию об авариях, которая записана в БД другими скриптами.Alex_Jet писал(а):Не могу понять - для чего она и что это делается? По идее если авария есть, то она должна в БД записываться, тут же происходит чтение для чего-то...
Наверное, все дело в том, что внутри функции своя область видимости. Внутри функции не видны переменные/объекты, созданные за ее пределами.Alex_Jet писал(а):PHP Fatal error: Call to a member function mod_read() on null
ОК, тогда объясните, пожалуйста, что это такое в демо-интерфейсе читается из БД и как должно отобразиться в веб-интерфейсе? Что вообще означает запись такого вида при чтении alarm из БД:Andrey_B писал(а):Пользовательский Web-интерфейс не генерирует сообщения об авариях. В нем аварии возникнуть не могут. Но пользовательский Web-интерфейс отображает информацию об авариях, которая записана в БД другими скриптами.
Код: Выделить всё
"<strong><font color=\"#EE2211\">#event_date# - #event_title#</font></strong><br>", "event_date DESC"
По этому понятно. Спасибо!Andrey_B писал(а):Наверное, все дело в том, что внутри функции своя область видимости. Внутри функции не видны переменные/объекты, созданные за ее пределами.
Либо нужно объявлять $ab глобальной переменной, либо создавать экземпляр класса внутри функции. Это если мы не хотим наследовать класс и дописывать свои методы к нему.