- Neues stündliches Python-Script (restricted/gartenbewaesserung/auto_watering.py): holt Niederschlags- und Sonnenuntergangsdaten von Open-Meteo, wertet je Zone (Hochbeete/Tröge/Garten vorn) individuelle Regen-Schwellenwerte und Mindest-Bewässerungsdauern aus und startet bei Bedarf per MQTT den passenden Automatik-Modus der Ventilsteuerung im Zeitraum vor Sonnenuntergang; veröffentlicht den Regen-Status zusätzlich stündlich als retained MQTT-Nachricht je Zone. - Web-UI: neue Bewässerungs-Steuerung/-Anzeige (ajax/watering.php, js/solar/solarMQTT.js, assets/img/realtime.svg) inkl. Live-Status-Icons (aus/geplant/pausiert/aktiv per Farbe und Symbol). - AutoAction-Regeleditor (ajax/actorDetails.php, sensorDetails.php, fillActorDD.php, fillSensorDD.php, tahoma.php, AutoAction.php) liest Actor-/Sensor-Parameter jetzt live aus der homeMesh-Datenbank statt aus stark vereinfachten Altfeldern, inkl. zugehöriger Anpassungen am Device-Discovery-Tooling (restricted/deviceDiscovery/*, neues logic_module.py). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
69 lines
2.4 KiB
PHP
69 lines
2.4 KiB
PHP
<?php
|
|
require_once("../helper.php");
|
|
if(isset($_GET["sensorID"])){
|
|
$sensorID = intval($_GET["sensorID"]);
|
|
$qry = "SELECT state_name, url, state_types.type, unit, current_value, possible_values FROM actor_states LEFT JOIN state_types ON state_type = state_types.id WHERE actor_id=".$sensorID;
|
|
$mysql = new mysqli($mysql_server, $mysql_MeshUser, $mysql_MeshPass, $mysql_MeshDB);
|
|
$result = mysqli_query($mysql, $qry);
|
|
$operators = "";
|
|
echo '{"parameters": [';
|
|
$iterated = 0;
|
|
$items = "[]";
|
|
while($row = $result->fetch_assoc()){
|
|
switch($row["type"]){
|
|
case "integer":
|
|
$operators = '["=","≠",">","<"]';
|
|
$type = "number";
|
|
break;
|
|
case "float":
|
|
$operators = '["=","≠",">","<"]';
|
|
$type = "number";
|
|
break;
|
|
case "time":
|
|
$operators = '["=","≠"]';
|
|
$type = "time";
|
|
break;
|
|
case "deltatime":
|
|
$operators = '["+","-"]';
|
|
$type = "time";
|
|
break;
|
|
case "date":
|
|
$operators = '["=","≠"]';
|
|
$type = "date";
|
|
break;
|
|
case "datetime":
|
|
$operators = '["=","≠"]';
|
|
$type = "datetime-local";
|
|
break;
|
|
case "bool":
|
|
$operators = '["= JA","= NEIN"]';
|
|
$type = "button";
|
|
break;
|
|
case "string":
|
|
$operators = '["=","≠"]';
|
|
if($row["possible_values"]){
|
|
$items = $row["possible_values"];
|
|
$type = "dropdown";
|
|
}else{
|
|
$operators = '["=","≠"]';
|
|
$type = "text";
|
|
}
|
|
break;
|
|
default:
|
|
$operators = '["=","≠"]';
|
|
$type = "text";
|
|
break;
|
|
}
|
|
if($iterated++){
|
|
echo ", ";
|
|
}
|
|
if($row["current_value"]){
|
|
$row["state_name"] .= " (=".$row["current_value"].")";
|
|
}
|
|
echo '{"name" : "'.$row["state_name"].'", "operators" : '.$operators.', "url" : "'.$row["url"].'", "type" : "'.$type.'", "options" : '.$items.'}';
|
|
}
|
|
echo "]}";
|
|
}
|
|
|
|
|
|
?>
|