$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); } ?>