Методичка Majordomo

Слайд 2

Сценарии

Включить/Выключить/Переключить весь свет/розетки
$objects=getObjectsByClass("MegaD");
$objects=array('pOUTs7','pOUTs8','pOUTs9','pOUTs10','pOUTs11','pOUTs12','pOUTs13');
foreach($objects as $obj) {
callMethod($obj.'.switch');}
Ребут малинки
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath =

Сценарии Включить/Выключить/Переключить весь свет/розетки $objects=getObjectsByClass("MegaD"); $objects=array('pOUTs7','pOUTs8','pOUTs9','pOUTs10','pOUTs11','pOUTs12','pOUTs13'); foreach($objects as $obj) { callMethod($obj.'.switch');} Ребут
"/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
exec('cp -rf /tmp/mysql/* /var/lib/mysql');
say(LANG_GENERAL_STARTING_REBOOT,2);
setTimeout("shutdownTimer","safe_exec('shutdown -r now');",15);
ShutDown малинки
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
exec('cp -rf /tmp/mysql/* /var/lib/mysql');
say(LANG_GENERAL_STARTING_SHUTDOWN,2);
setTimeout("shutdownTimer","safe_exec('shutdown -h now');",15);

Слайд 3

Cчитываем данные электроСчетчика

VCC - к клемме питания +3.3В
GND - земля (Ground)
RO (Output)

Cчитываем данные электроСчетчика VCC - к клемме питания +3.3В GND - земля
- P32 (RX)
DI (Input) - P33 (TX)
DE/RE (управление передачей, если есть) - к любому цифровому порту, например P35
A (прямая линия) - A (счетчика или другого устройства с интерфейсом RS485)
B (инверсная линия) - B (счетчика или другого устройства с интерфейсом RS485)
http://192.168.0.14/sec/?uart_tx=0103000C0001&mode=rs485 Команду можно "расшифровать" следующим образом: [01][03][000C][0001], где [01] - адрес устройства SlaveID. По умолчанию 01. [03] - функциональный код чтения AO (Analog Output) [000C] - адрес регистра, который следует считать со счетчика. Указывается в документации к счетчику или другому устройству [0001] - количество запрашиваемых регистров, в данном случае только один 0x0C Ответ стоит интерпретировать так: [01] - адрес устройства SlaveID [03] - функциональный код [02] - количество возвращаемых байт [08a1] - в данном случае значение напряжения 0x08a1 или в десятичном представлении 2209 (220,9В)
Общее потребление электроэнергии (Регистры 0x00-0x01)
Текущее напряжение, В (0x0C)
Текущее значение тока, А (0x0D)
Текущая активная мощность, Вт (0x0E)
Текущая реактивная мощность, ВА (0x0F)
CosF (0x10)
Частота, Гц (0x11) //php code
$res = file_get_contents("http://192.168.0.14/sec/?uart_tx=0103000D0001&mode=rs485");
usleep(100000);
$res = file_get_contents("http://192.168.0.14/sec/?uart_rx=1&mode=rs485");
$data = explode("|", $res);
$amp = number_format(hexdec($data[3].$data[4]) / 100, 1);
$this->setProperty("amp", $amp);

Слайд 4

Метод switch для света/розеток

$status=$this->getProperty("status");
if ($status) {
$this->callMethod('turnOff');
}
else {
$this->callMethod('turnOn');
}

Метод switch для света/розеток $status=$this->getProperty("status"); if ($status) { $this->callMethod('turnOff'); } else { $this->callMethod('turnOn'); }

Слайд 5

Передача значения от объекта к объекту

В метод добавляем php code
setGlobal('Thermostat01.value',getGlobal('ds18b20.valueTempDS')); Thermostat01.value – куда ds18b20.valueTempDS

Передача значения от объекта к объекту В метод добавляем php code setGlobal('Thermostat01.value',getGlobal('ds18b20.valueTempDS'));
- откуда

Слайд 6

GET запросы для считывания данных

//считываем давление i2c_dev geturl (метод)
$press = geturl ('http://192.168.0.14/sec/?pt=31&scl=30&i2c_dev=bmx280&i2c_par=0');
if

GET запросы для считывания данных //считываем давление i2c_dev geturl (метод) $press =
(isset($press)) {
$this->setProperty('press', $press);
}
//добавляем в onNewMitute (обновление каждую минуту)
$objects=getObjectsByClass("MegaD");
foreach($objects as $obj) {
callMethod($obj['TITLE']. '.press');
}