Hallo zusammen,
hab hier mal ein altes Beispiel von mir ausgegraben, wie es per PHP gelöst hatte.
Benötigt wird das HTTP Bindung dafür oder das EXEC Binding
Code: Alles auswählen
<form name="send" action="curl2.php" method="post">
<p>Status ändern</p>
<p><input name="aktion" value="gesendet" type="submit" /></p>
</form>
<?php
if ($_POST['send'])
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://DEINE-IP:8080/rest/items/DEIN ITEM');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "OFF"); //Hier muss der entsprechende STATUS der geschaltet werden soll rein.
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = 'Content-Type: text/plain';
$headers[] = 'Accept: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
}
?>
Mann kann es noch entsprechend erweitern, so dass man beide Schaltzustände in einem Code hat
Die ITEM könnten dann entsprechend so aussehen:
Code: Alles auswählen
Switch licht_flur "Steckdose" <poweroutlet>
Switch licht_flur_run {channel="exec:command:licht_flur:run"}
String licht_flur_Args {channel="exec:command:licht_flur:input"}
String licht_flur_Out {channel="exec:command:licht_flur:output"}
Oder wie folgt wenn du den aktuellen Status des ITEMS haben möchtest:
Code: Alles auswählen
<?php
//Datenbankverindung einbinden
include 'config.php';
//Erstmal den aktuellen Status des Items mit Curl auslesen
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, 'http://192.168.178.35:8080/rest/items/BatteryLevel1/state'); //Badezimmer
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
$result1 = curl_exec($ch1);
if (curl_errno($ch1)) {
echo 'Error:' . curl_error($ch1);
}
curl_close ($ch1);
//Daten in der Datenbank aktualisieren
$statement = $pdo->prepare("UPDATE battery SET zeit = :zeit_neu, status = :status_neu");
$statement->execute(array('zeit_neu' => 'NOW()', 'status_neu' => '$result1'));
?>
Code: Alles auswählen
Switch update1 { http=">[*:POST:http://DEINE-IP/openhabscripts/datenbank/update.php:default]" }
In meinem Fall schreibe ich den Status in eine SQL Datenbank...muss aber nicht zwingend....Man kann sie auch direkt weiterverarbeiten.
Aber wenn man es in einer Art Statistik anzeigen möchte, ist es recht angenehm die Werte in einer Datenbank zu haben....
Die Codes sind jetzt schon was älter, hatte diese noch erweitert...finde sie aber auf Anhieb jetzt nicht..Aber damit solltest du eigentlich zu recht kommen.
Was sehr Hilfreich ist, ist auch der folgende Link:
http://incarnate.github.io/curl-to-php/
Lieben Gruß, littlekenny