$max)&&($flag=="max")){
echo "Temperatura $realTemp este peste pragul maxim de $max insa centrala e deja oprita; Fara actiune!\n";
}
elseif (($realTemp>$max)&&($flag!="max")){
echo "Temperatura $realTemp este peste pragul maxim de $max; Opresc centrala!\n";
if (isSonoffRelay($user,$releu)){
pub_mqtt_topic("cmnd/$topic_releu/POWER","OFF");
}
else {
pub_mqtt_topic("cmnd/$topic_releu/ESP","OFF");
}
@mysql_query("insert into log_centrala values (DEFAULT, '$user', '$senzor', '$releu', 'OFF', '$realTemp', '$configTemp',now(), 'AUTO')");
@mysql_query("update centrala set flag='max' where user='$user' and senzor='$senzor' and releu='$releu'");
}
elseif (($realTemp<$min)&&($flag!="min")){
echo "Temperatura $realTemp este sub pragul minim de $min; Pornesc centrala!\n";
if (isSonoffRelay($user,$releu)){
pub_mqtt_topic("cmnd/$topic_releu/POWER","ON");
}
else {
pub_mqtt_topic("cmnd/$topic_releu/ESP","ON");
}
@mysql_query("insert into log_centrala values (DEFAULT, '$user', '$senzor', '$releu', 'ON', '$realTemp', '$configTemp', now(), 'AUTO')");
@mysql_query("update centrala set flag='min' where user='$user' and senzor='$senzor' and releu='$releu'");
}
else {
echo "N-ar fi trebuit sa mai ajung aici!\n";
}
}
else {
echo "N-am putut citi temperatura reala. Fara actiune!\n";
}
}
}
else {
echo "User:$user | senzor:$senzor | releu: $releu\n";
echo "Centrala offline. Fara actiune!\n";
}
}
function isSonoffRelay ($u, $d){
$q=mysql_query("SELECT tip from devices where user='$u' and devid='$d'");
while ($c=mysql_fetch_array($q)){
if ($c['tip']=='12'){
return true;
}
else {
return false;
}
}
}
function getRealTemp($topic){
$mqtt=sub_mqtt_topic("cmnd/$topic/ESP","temp","stat/$topic/TEMP");
$j=json_decode($mqtt,true);
return $j['Temp'];
}
function sub_mqtt_topic($pub_channel,$pub_msg,$sub_channel){
$timeout=3; // daca nu primeste raspuns in 3 secunde sa renunte
$data_initiala=time();
$client = new \Mosquitto\Client(uniqid());
$client->onMessage('message');
$client->setCredentials('admin', 'Clickmqhome8219');
$client->connect("localhost", 1883, 5);
$client->setTlsCertificates('/etc/ssl/certs/ca-bundle.crt');
$client->subscribe($sub_channel, 1);
usleep(100000); //100 ms
$client->publish($pub_channel, $pub_msg);
$GLOBALS['mqtt_message'] = '';
while (true) {
$client->loop();
usleep(100000); //100 ms de asteptare sa apuce sa execute comenzile
$data_acum = time();
if (($data_acum - $data_initiala) > $timeout) break;
if(!empty($GLOBALS['mqtt_message'])) break;
}
$client->disconnect();
unset($client);
return ($GLOBALS['mqtt_message']);
}
function message($message){
$GLOBALS['mqtt_message'] = $message->payload;
}
function pub_mqtt_topic($topic,$msg){
$client = new \Mosquitto\Client("phpMQTT-pub-centrala");
$client->setCredentials('admin', 'Clickmqhome8219');
$client->connect("localhost", 1883, 5); //Change Accordingly. TCP/IP connection is supported by mqtt.
$client->setTlsCertificates('/etc/ssl/certs/ca-bundle.crt');
$client->publish($topic, $msg);
$client->disconnect();
unset($client);
}
?>