Eigene PHP Seite mit IPS.SMD - Nach Update auf 5.0 keine Daten mehr

Ich habe es jetzt noch nicht untersucht, aber nach dem Update auf 5.0 bekommen meine eigenen handcodierten PHP Seiten (ins Webfront eingebunden) keine Daten mehr. Ich verwende den Zugriff via IPS.SMD.

Wurde da was um/eingestellt?

Hast du irgendwas an Fehlermeldungen oder so anzubieten?

paresy

In der Console nichts. Wo kann ich denn Fehlermeldungen hierzu sehen?

Ich verwende eine alte lokale „ips.smd“ und „json-rpc.php“ Files (2012). Gab’s da Änderungen?

Meine Implementierung sieht (stark vereinfacht) so aus und lief mit 4.4 problemlos.


<html>

<head>

  <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js" data-dojo-config="isDebug: true, async: true, parseOnLoad: true"></script>
  <script>
	var ips = null;	
  	require(["dijit/form/Button", "dijit/form/TextBox"]);
	require(["dojo/dom", "dojo/domReady!", "dojox/rpc/Service", "dojox/rpc/JsonRPC", "dojo/parser"], function(dom, ready) {	
 		ips = new dojox.rpc.Service("ips.smd");
		//start variable reading loop
		readVariables();			
	});
	  			  			
	function readVariables() { 
        // Über DIV's der Klasse IPSVariable loopen
		require(["dojo/query"], function(query) {
		
		    //--- von IPS formatierte Variablen ---
			query(".IPSVariable").forEach(function(node, index, arr){
			    node.innerHTML = 'Read Called';
				ips.GetValueFormatted(parseInt(node.getAttribute("ips-variable-id"))).then(
					function(data) {   
				  		node.innerHTML = data;
					}
				);
			});


		});
		window.setTimeout(readVariables, 10000);
	}
  </script>

</head>

<body>

    <div class="IPSVariable" ips-variable-id="35716">Empty</div>
    
</body>

</html>

Hast du im Netzwerk Reiter mal geschaut, ob überhaupt anfragen gesendet werden?

paresy

In der Javascript Console im Chrome erscheint folgendes:


dojo.js:15 SyntaxError: Unexpected token <
    at Object.dojo.fromJson (VM60 dojo.js:15)
    at Object.json (VM60 dojo.js:15)
    at _422 (VM60 dojo.js:15)
    at _1c0 (VM60 dojo.js:15)
    at _1be (VM60 dojo.js:15)
    at dojo.Deferred.resolve.callback (VM60 dojo.js:15)
    at Object._430 [as resHandle] (VM60 dojo.js:15)
    at func (VM60 dojo.js:15)
    at _429 (VM60 dojo.js:15)

Muss ich eine neuere Dojo Version nehmen? Bisher nehme ich die 1.7.2…


<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dojo/dojo.js" data-dojo-config="isDebug: true, async: true, parseOnLoad: true"></script>

Nachtrag:

Im Netzwerkmonitor von Chrome sehe ich u.a. auch folgenden Fehler:

Notice: Undefined variable: HTTP_RAW_POST_DATA in C:\IP-Symcon\webfront\user\XXXX\json-rpc.php on line 52
{„jsonrpc“:„2.0“,„error“:{„code“:"-32700",„message“:„Invalid request“,„data“:„Invalid header or postdata.“},„id“:„Null“}

Meine JSON-RPC.PHP ist von 2012. Zu alt? Woher bekomme ich eine neue?

Im Grunde basiert meine Implementierung ja noch immer auf dem Prinzip der 2.6 (siehe https://www.symcon.de/forum/threads/18690-Einfache-eigene-Seiten-mit-JSON-RPC-Dojo-Javascript-ab-IP-Symcon-2-6).

Kann man ggf. die JSONRPC Schnittstelle seit 3.0 via Javascript rufen? Bin nicht so fit damit, aber ich möchte in einer eigenen Seite permanent die Werte aktualisiert anzeigen.

Versuch mal das $HTTP_RAW_POST_DATA durch ein file_get_contents(„php://input“); zu ersetzen.

paresy

Danke!

Das hat das Problem gelöst.

Zusammen mit Dojo 1.7.2 (Version 1.13.0 funktioniert nicht!) klappt es jetzt wieder. Ich habe mal meine JSON-RPC und IPS.SMD angehängt (die Suche ich ja immer wieder mal ;))

:loveips:

JSONRPC + IPS-SMD.zip (10.6 KB)