Daten per GET an openHAB senden?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
dirkabel
Beiträge: 40
Registriert: 2. Mai 2022 12:35
Answers: 0

Daten per GET an openHAB senden?

Beitrag von dirkabel »

Hallo,

meine http Portierung zu OH3 ist vollbracht!
Ein Thema noch:
Ich habe eine Wetterstation WH-2650A, die schickt Daten u.a. an Weather Underground, man kann aber auch einen freien Server für die Übertragung einstellen.
Dazu läuft auf dem NAS ein PHP Script, welches die Daten im Wheather Underground Format annimmt und an die passenden Items über die Classic UI per GET weiterleitet.
Da geht ja nun nicht mehr.
Gibt es noch eine ähnliche Möglichkeit?
Ich könnte natürlich das WU Binding verwenden, aber warum außen rum, wenn es intern geht?

Hier das Skipt:

Code: Alles auswählen

<?php

$inQuery = $_SERVER['QUERY_STRING'];

//$handle = fopen ("/var/www/html/weatherstation/query.txt", "w");
//fwrite ($handle, $inQuery);
//fclose ($handle);

$tempO = $_GET['tempf'];
$humidityO = $_GET['humidity'];
$dewpt = $_GET['dewptf'];
$windChill = $_GET['windchillf'];
$windDir2 = $_GET['winddir'];
$windSpeed = $_GET['windspeedmph'];
$windGustSpeed = $_GET['windgustmph'];
$rain = $_GET['rainin'];
$dailyRain = $_GET['dailyrainin'];
$weeklyRain = $_GET['weeklyrainin'];
$monthlyRain = $_GET['monthlyrainin'];
$yearlyRain = $_GET['yearlyrainin'];
$solar = $_GET['solarradiation'];
$UV = $_GET['UV'];
$tempI = $_GET['indoortempf'];
$humidityI = $_GET['indoorhumidity'];
$baroMin = $_GET['baromin'];
$lowBatt = $_GET['lowbatt'];

$outQuery  = "WS_TempOut="    . $tempO;
$outQuery .= "&WS_TempIn="    . $tempI;
$outQuery .= "&WS_DewPt="     . $dewpt;
$outQuery .= "&WS_WindChill=" . $windChill;
$outQuery .= "&WS_HumiIn="    . $humidityI;
$outQuery .= "&WS_HumiOut="   . $humidityO;
$outQuery .= "&WS_WindSpeed=" . $windSpeed;
$outQuery .= "&WS_WindGust="  . $windGustSpeed;
$outQuery .= "&WS_WindDir="   . $windDir2;
$outQuery .= "&WS_BaroRel="   . $baroMin;
$outQuery .= "&WS_Rain="      . $rain;
$outQuery .= "&WS_RainDay="   . $dailyRain;
$outQuery .= "&WS_RainWeek="  . $weeklyRain;
$outQuery .= "&WS_RainMonth=" . $monthlyRain;
$outQuery .= "&WS_RainYear="  . $yearlyRain;
$outQuery .= "&WS_Solar="     . $solar;
$outQuery .= "&WS_UV="        . $UV;
$outQuery .= "&WS_LowBattery=". $lowBatt;

$strURL = "http://192.168.0.138:8080/classicui/CMD?";
//$strURL .= $_SERVER['QUERY_STRING'];
$strURL .= $outQuery;

file_get_contents ($strURL);

echo "success";
//echo "\r\nOUT: " . $strURL;
?>

Benutzeravatar
udo1toni
Beiträge: 15313
Registriert: 11. Apr 2018 18:05
Answers: 246
Wohnort: Darmstadt

Re: Daten per GET an openHAB senden?

Beitrag von udo1toni »

Über die openHAB API musst Du PUT verwenden (oder alternativ POST). PUT entspricht dabei dem postUpdate, POST entspricht sendCommand.

Von php hab ich so gar keine Ahnung... Aber vielleicht reicht es schon, das Script dahingehend abzuändern, dass es PUT verwendet (und natürlich eine angepasste URL, schon weil für den API Zugriff gewöhnlich ein Token gebraucht wird).

Alternativ: ich habe in FreePBX Kommunikation mittels mqtt nachgerüstet (nur für die Rufnummernanzeige...), das war eigentlich schmerzfrei, nur ein vorhandenes Modul anpassen, und das php Script sendet mittels mosquitto_pub die Nachricht an den Broker. Es bietet sich dann an, JSON zu verwenden. In welchem Format liegen die Daten in /var/www/html/weatherstation/query.txt vor?
openHAB5.0.0 stable in einem Debian-Container (bookworm) (Proxmox 9.0.5, LXC)

dirkabel
Beiträge: 40
Registriert: 2. Mai 2022 12:35
Answers: 0

Re: Daten per GET an openHAB senden?

Beitrag von dirkabel »

In welchem Format liegen die Daten in /var/www/html/weatherstation/query.txt vor?
Die Frage verstehe ich nicht.

Hatte Du vielleicht für das"normale," PUT oder POST an die API ein Beispiel?

Benutzeravatar
udo1toni
Beiträge: 15313
Registriert: 11. Apr 2018 18:05
Answers: 246
Wohnort: Darmstadt

Re: Daten per GET an openHAB senden?

Beitrag von udo1toni »

Wenn Du in Main UI->Administration auf Entwickler Tools gesht und dort in die API wechselst, kannst Du Dir die notwendigen Codeschnipsel selbst zusammenklicken :) Inklusive direkt ausprobieren...

Mein Frage bezüglich der Daten: Dein php Script liest aus dieser Datei die Daten ein,welche es dann entsprechend weiter schickt. Jetzt wäre halt die Frage, wie der Inhalt dieser Datei aussieht, denn es gibt ja Datenformate, die man sehr elegant auswerten kann.
openHAB5.0.0 stable in einem Debian-Container (bookworm) (Proxmox 9.0.5, LXC)

dirkabel
Beiträge: 40
Registriert: 2. Mai 2022 12:35
Answers: 0

Re: Daten per GET an openHAB senden?

Beitrag von dirkabel »

Ach so, nein, das ist im Prinzip auch ein GET nur mit anderen Namen. Die Wetterstation schickt

Code: Alles auswählen

?ID=STATIONID&PASSWORD=**********&indoortempf=69.8&tempf=62.2&dewptf=51.6&windchillf=62.2&indoorhumidity=43&humidity=68&windspeedmph=1.8&windgustmph=2.2&winddir=206&absbaromin=28.61&baromin=29.47&rainin=0.00&dailyrainin=0.00&weeklyrainin=0.01&monthlyrainin=0.03&yearlyrainin=-9999&solarradiation=110.10&UV=1&dateutc=2019-4-8%2012:16:55&softwaretype=EasyWeatherV1.1.4&action=updateraw&realtime=1&rtfreq=5 
Irgendwer muss ihr zuhören.
Habe es erst mal über das Weather Company Binding eingebaut, alles andere werde ich mir mal noch ansehen. Habe das PHP auch größtenteils kopiert. Habe ich auch keine Ahnung von.
Vielleicht baue ich das mit in mein Web-CAN Gateway ein, da weiß ich wenigstens, was ich tue. :lol:

Antworten