PHP, XML, AJAX, SAJAX?? Wie Heizungswert über Webinterface abfragen..

Hallo Leute… vielleicht kann ein Webseiteprogrammierer oder so mir hierbei helfen. Ich habe eine Heizung mit Siemensregler… hierzu habe ich mir ein Controlerinterface zugelegt… eigentlich nichts anderes als ein gerätchen mit einem Webinterface das mir Werte von der Heizung auf Webseiten anzeigt welche das Gerät im Hintergrund über den BSB/LPB Bus ausliest. Das Gerätchen war echt teuer… und ich dacht mir super… so krieg ich die heizugn endlich ohne gebastel in mein IPS. Was bisher klappt ist das gerätchen so zu konfigurieren, dass ich eine email erhalte wenn was mit der heizung nicht tut völlig ips unabhängig und die werte meiner heizung werden schön angezeigt über den webbrowser und ich kann diese auch ändern.

Schritt zwei und das wie ich jedem anderen raten würde nun die entsprechenden Infos in ips einzulesen. über ips script webseite aufrufen, ergebnis auslesen oder über einen www reader. heute mit freude mal gemacht damit die daten endlich reinkommen und die heizung integriert ist. zu meinem erstaunen bei beiden varianten ist der Wert wenn ich zbsp die Vorlauftemp einlese immer gleich: —
Also auf die Webseite mit dem Browser, check… anstatt — sehe ich da 22C. nun musste ich feststellen, dass beim aufbau der seite — drinn steht und nach einer zeit (1-2 sekunden) der WErt 22C nachgeladen wird. Etwas recherche… und ich kam zu begriffen wie AJAX, die Werte werden dynamisch nach dem auslesen auf die webseite „geladen“. OK hier mal unter Ajax gesucht… nicht so wirklich schlau geworden aus den ergebnissen, kam zu Sajax… dies scheint aber eher den umgekehrten Weg zu beschreiben von dem was ich brauche… das heisst Werte aus IPS oder Geräten auf eine Webseite dynamisch zu platzieren…

Ich habe mir dann den Quellcode mal angeschaut wo die e-mail angezeigt angezeigt wird. Die folgende URL wird mit angezeigt im Browser:

http://IP/main.app?user=xy&pwd=1234&section=popcard&id=630&idtype=4

Dann fand ich heraus, dass über JAvascript eine funktion updateDataPoint() aus der common.js aufgerufen wird, welche das email-label mit dem entsprechenden inhalt fuellt. Die funktion ist:

function updateDataPoint()
{
/* // JQuery ajax: Options and Defaults

  • $.ajax({
  •   url: ,
    
  •   cache: true,
    
  •   type:"GET",
    
  •   data: ,
    
  •   dataType:XML,
    
  •   timeout: ,
    
  •   global:true,
    
  •   contentType: ,
    
  •   success:function (data,textStatus){},
    
  •   error:function (XMLHttpRequest,textStatus){},
    
  •   complete:function (XMLHttpRequest,textStatus){},
    
  •   beforeSend:function (XMLHttpRequest){},
    
  •   async:true;
    
  •   processData:true,
    
  •   ifModified:false,
    
  •   password: ,
    
  •   username:
    
  •   });
    

*/
if (DataPoints.length > 0) {
if (parseInt(DataPoints[ID].substr(2), 10) == 0) {
$(’.’ + DataPoints[ID]).html("? ? ?");
updateNextDataPoint();
}
else {
var URL = ‚/ajax.app?SessionId=‘ + getSessionId() + ‚&service=getDp&plantItemId=‘ + DataPoints[ID].substr(2);

		$.ajax({
			url: URL,
			cache: false,
			type: "GET",
			dataType: "json",
			global: true,
			success: function(data, textStatus){
				convertAjaxRspToHtml(data);
			},
			error: function(XMLHttpRequest, textStatus){
				$('.' + DataPoints[ID]).html("---");
				$('.' + DataPointUnits[ID]).html("");
				$('#' + DataPoints[ID]).html("---");
				$('#' + DataPointUnits[ID]).html("");
			},
			complete: function(XMLHttpRequest, textStatus){
				updateNextDataPoint();
			},
			async: true,
			processData: true,
			ifModified: false
		});
	}
}

}

Hier ist mal was mit Ajax, jquery und xml in den kommentaren drinn… der code brachte mich dazu mal folgende url zu probieren:

http://IP/ajax.app?user=xy&pwd=1234&service=getDp&plantItemId=661

Das Ergebnis war erstaunlich… rufe ich dies auf kommt als Antwort eine App.Datei mit dem folgenden Inhalt ueber Notepad geoeffnet:

{„service":„getDp“,„plantItemId“:„661“,„value“:"plz@xy.com“,„unit“:""}

wobei plz@xy.com der richtige E-Mail Wert ist der auf der Webseite schlussendlich angezeigt wird. Leider habe ich auch noch herausgefunden dass die ajax.app sich nur mit einer aktuellen session id aufrufen laesst. nicht mit den Getparametern alleine mit pwd und user wiebei der main.app sonst kommt access denied.

Ganz ehrlich… ich bin kein Webseite programmierer und AJAX wie JQuery und dergleichen ist mir fern. Ich bin gerne gewillt mir eins davon anzueignen wenn auch nur in der Basic… aber ich wuerde zuerst gerne wissen, womit ich es hier zu tun habe. Was ich will ist, die angezeigten Werte in IPS in Variablen zu schreiben und ganz super waere es natuerlich auch, wenn ich ueber ips entsprechende Werte wie ueber das Webinterface aendern koennte. Das moechte ich so sauber wie moeglich halten. Ich werde das gefuehl nicht los, dass hier ueber einen STandart wie JQuery, XML oder AJAX sich dies einfach loesen laesst… ich brauche nur den richtigen Wink oder einen Ansatzpunkt. Kann mir damit jemand helfen? Ein beispiel… oder ein Wink??

Hmm… Keiner ne Idee? Entweder war der Titel schlecht gewählt oder es fehlt was in der Problembeschreibung oder es weiß niemand Rat…?bin nicht weitergekommen bis jetzt:-(

Sorry, kann Dir leider nicht weiter helfen aber ich befürchte, dass ich ein Ähnliches Problem beokmmen werde wenn ich mir das Gateway für meine Stiebel Eltron WP zulege.

Zumindest hat mich dein Beitrag aufgeschreckt und ich werde mir das Teil wohl sehr genau ansehen müssen bevor ich es für über 400,- Euro kaufen werde!

8h volle Arbeit später ist nun mein Problem gelöst.Die eig Lösung wäre auch schon in 2h fertig gewesen aber es ging nicht nur um die Lösung aber auch darum das ganze zu verstehen wie Json etc laeuft oder was das ist:-) und den einfachsten weg zu finden. Alles oben gepostete ist 3/4der Miete.kurz gesagt waren noch zwei Probleme offen:
die Rückantwort als APp file muss mit json_decode() aufschlüsseln… Als zweiter Parameter True dann erhaelt man eine Array Variable zurück wo man nur noch den Wert auswählt und Viola… Der lesevorgang passiert mit Curl(). Uebrigens das Off. Pendant seitens php zu .Ajax() app

Das zweite Problem mit der Session id ist noch einfacher.hier muss ein Webparser her der die mainsite aufruft und aus dem hidden Label die Session id ausliest. Das kann man zyklisch oder ich werds so machen das ich mit einem Script die Werte Auslese wann auch immer…wenn der Wert value=Access denied Parser laufen lassen und id neu einlesen.vornedran noch ueber Ping prüfen ob Verbindung zur Heizung up ist.

Rest ist pippifax für andere Werte Schau ich im ie auf der Webseite nach der DP-ID und ergänze die im Script.

Läuft nun so mit einer elco,terragamma Wärmepumpe mit siemensregler RVS.

Kann kaum wer genau so uebernehmen aber es zeigt vielleicht wie man sich etwas herantasten kann…:slight_smile: haet gedacht es geht einfacher…aber das nachladen der Werte mit ajax machte die Sache etwas heißer.

Um neu die entsprechenden Heizungsdaten auszulesen suchen Sie bitte hier im Forum nach OZW welches ab der Version 2.6 nativ unterstützt wird.

This thread and comments are old. Please search with they Keywords OZW inside the forum and the homepage for the new solution which means a native included/embedded instance for OZW in IPS since the final Version 2.6.