Skip to content

Commit

Permalink
SCD4x sensor support
Browse files Browse the repository at this point in the history
  • Loading branch information
sergejey committed Jul 14, 2023
1 parent 2638d1a commit 8a0030e
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 37 deletions.
89 changes: 52 additions & 37 deletions modules/megad/readvalues.inc.php
Expand Up @@ -68,17 +68,17 @@
}
}
}
if (preg_match('/pm1:([\-\d\.]+)/',$states[$i],$m)) {
if (preg_match('/pm1:([\-\d\.]+)/', $states[$i], $m)) {
$cmd = array('NUM' => $i, 'VALUE' => $m[1], 'COMMAND' => 'pm1', 'INDEX' => 1);
$commands[] = $cmd;
$matched = 1;
}
if (preg_match('/pm2.5:([\-\d\.]+)/',$states[$i],$m)) {
if (preg_match('/pm2.5:([\-\d\.]+)/', $states[$i], $m)) {
$cmd = array('NUM' => $i, 'VALUE' => $m[1], 'COMMAND' => 'pm2.5', 'INDEX' => 1);
$commands[] = $cmd;
$matched = 1;
}
if (preg_match('/pm10:([\-\d\.]+)/',$states[$i],$m)) {
if (preg_match('/pm10:([\-\d\.]+)/', $states[$i], $m)) {
$cmd = array('NUM' => $i, 'VALUE' => $m[1], 'COMMAND' => 'pm10', 'INDEX' => 1);
$commands[] = $cmd;
$matched = 1;
Expand Down Expand Up @@ -139,11 +139,11 @@
$sda = $property['NUM'];
$scl = $property['ADD_NUM'];
if (!$scl || !$sda) continue;
$url ='http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$sda.'&scl='.$scl.'&i2c_dev=htu21d&i2c_par=1';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $sda . '&scl=' . $scl . '&i2c_dev=htu21d&i2c_par=1';
$temperature = getURL($url);
if (is_numeric($temperature)) {
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'temperature', 'INDEX' => 1, 'VALUE' => $temperature);
$url ='http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$sda.'&scl='.$scl.'&i2c_dev=htu21d';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $sda . '&scl=' . $scl . '&i2c_dev=htu21d';
sleep(1);
$humidity = getURL($url);
if (is_numeric($humidity)) {
Expand All @@ -169,12 +169,12 @@
$sda = $property['NUM'];
$scl = $property['ADD_NUM'];
if (!$scl || !$sda) continue;
$url ='http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$sda.'&scl='.$scl.'&i2c_dev=ptsensor&i2c_par=1';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $sda . '&scl=' . $scl . '&i2c_dev=ptsensor&i2c_par=1';
$data = getURL($url);
sleep(1);
$url ='http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$sda.'&scl='.$scl.'&i2c_dev=ptsensor&i2c_par=2';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $sda . '&scl=' . $scl . '&i2c_dev=ptsensor&i2c_par=2';
$data = getURL($url);
if ($data!='') {
if ($data != '') {
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => $property['COMMAND'], 'VALUE' => $data);
}
} elseif (!$quick && $property['COMMAND'] == 'i2c_htu21d') {
Expand All @@ -195,59 +195,74 @@
}
}
} elseif ($property['COMMAND'] == 'i2c_16pwm_sda') {
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$property['NUM'].'&cmd=get';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $property['NUM'] . '&cmd=get';
$data = getURL($url);
$ar = explode(';',$data);
$ar = explode(';', $data);
$totalc = count($ar);
if ($totalc==16) {
for($ic=0;$ic<$totalc;$ic++) {
if ($totalc == 16) {
for ($ic = 0; $ic < $totalc; $ic++) {
$v = (int)$ar[$ic];
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'output', 'INDEX' => ($ic+1), 'VALUE' => $v);
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'output', 'INDEX' => ($ic + 1), 'VALUE' => $v);
}
}
} elseif ($property['COMMAND'] == 'i2c_16i_xt_sda') {
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$property['NUM'].'&cmd=get';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $property['NUM'] . '&cmd=get';
$data = getURL($url);
$ar = explode(';',$data);
$ar = explode(';', $data);
$totalc = count($ar);
if ($totalc==16) {
for($ic=0;$ic<$totalc;$ic++) {
if ($ar[$ic]=='ON') {
$v=1;
if ($totalc == 16) {
for ($ic = 0; $ic < $totalc; $ic++) {
if ($ar[$ic] == 'ON') {
$v = 1;
} else {
$v=0;
$v = 0;
}
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'input', 'INDEX' => ($ic+1), 'VALUE' => $v);
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'input', 'INDEX' => ($ic + 1), 'VALUE' => $v);
}
}
} elseif ($property['COMMAND'] == 'i2c_16ir_xt_sda') {
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$property['NUM'].'&cmd=get';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $property['NUM'] . '&cmd=get';
$data = getURL($url);
$ar = explode(';',$data);
$ar = explode(';', $data);
$totalc = count($ar);
if ($totalc==16) {
for($ic=0;$ic<$totalc;$ic++) {
if ($ar[$ic]=='ON') {
$v=1;
if ($totalc == 16) {
for ($ic = 0; $ic < $totalc; $ic++) {
if ($ar[$ic] == 'ON') {
$v = 1;
} else {
$v=0;
$v = 0;
}
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'output', 'INDEX' => ($ic+1), 'VALUE' => $v);
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'output', 'INDEX' => ($ic + 1), 'VALUE' => $v);
}
}
} elseif ($property['COMMAND'] == 'i2c_16i_xt') {
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt='.$property['ADD_NUM'].'&cmd=get';
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $property['ADD_NUM'] . '&cmd=get';
$data = getURL($url);
$ar = explode(';',$data);
$ar = explode(';', $data);
$totalc = count($ar);
if ($totalc==16) {
for($ic=0;$ic<$totalc;$ic++) {
if ($ar[$ic]=='ON') {
$v=1;
if ($totalc == 16) {
for ($ic = 0; $ic < $totalc; $ic++) {
if ($ar[$ic] == 'ON') {
$v = 1;
} else {
$v=0;
$v = 0;
}
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'input', 'INDEX' => ($ic+1), 'VALUE' => $v);
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'input', 'INDEX' => ($ic + 1), 'VALUE' => $v);
}
}
} elseif ($property['COMMAND'] == 'i2c_scd4x_sda') {
$url = 'http://' . $record['IP'] . '/' . $record['PASSWORD'] . '/?pt=' . $property['NUM'] . '&cmd=get';
$data = getURL($url);
if ($data != '' && $data != 'busy') {
list($co2, $temperature, $humidity) = explode('/', $data);
if (is_numeric($co2)) {
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'co2', 'INDEX' => 1, 'VALUE' => $co2);
}
if (is_numeric($temperature)) {
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'temp', 'INDEX' => 2, 'VALUE' => $temperature);
}
if (is_numeric($humidity)) {
$commands[] = array('NUM' => $property['NUM'], 'COMMAND' => 'humidity', 'INDEX' => 3, 'VALUE' => $humidity);
}
}
}
Expand Down
1 change: 1 addition & 0 deletions templates/megad/megaddevices_edit_property.html
Expand Up @@ -117,6 +117,7 @@
#-->
<option value="i2c_htu21d_sda"[#if PROPERTY_COMMAND="i2c_htu21d_sda"#] selected[#endif#]>I2C htu21d (SDA)</option>
<option value="i2c_ptsensor"[#if PROPERTY_COMMAND="i2c_ptsensor"#] selected[#endif#]>I2C PTsensor (SDA)</option>
<option value="i2c_scd4x_sda"[#if PROPERTY_COMMAND="i2c_scd4x_sda"#] selected[#endif#]>I2C Air Quality - SCD4x (SDA)</option>
<option value="i2c_16i_xt_sda"[#if PROPERTY_COMMAND="i2c_16i_xt_sda"#] selected[#endif#]>I2C MegaD-16I-XT Inputs (SDA)</option>
<option value="i2c_16ir_xt_sda"[#if PROPERTY_COMMAND="i2c_16ir_xt_sda"#] selected[#endif#]>I2C MegaD-16IR-XT Relays (SDA)</option>
<option value="i2c_16pwm_sda"[#if PROPERTY_COMMAND="i2c_16pwm_sda"#] selected[#endif#]>I2C MegaD-16PWM (SDA)</option>
Expand Down

0 comments on commit 8a0030e

Please sign in to comment.