ich nutze den WWWReader um eine URL in einen Webbrower zu posten. Leider funktioniert das Script nicht mehr. Inzwischen habe auch WWWReader_SetPage durch SetProperty ersetzt, aber es funktioniert nicht. Die Funktion WWWReader_UpdatePage bekommt immer die Fehlermeldung.
Fatal error: Call to undefined function WWWReader_UpdatePage()
Auch wenn ich es direkt im WWWReader versuche kommt diese Fehlermeldung.
Gut das es dieses Forum gibt! Ich hatte mich gewundert, warum meine Abfragen von Web-Seiten nicht mehr funktionieren!!!
Allerdings habe ich noch nicht rausgefunden, wie ich den TextParser bzw. die dort hinterlegten Regeln anpassen kann. Die Funktion TextParser_EditRule funktioniert bei mir zumindest nicht mehr! Geht das auch mit IPS_SetProperty? Wenn ich mir das Objekt ausgeben lasse, kann ich aber leider nicht auf den PropertyName (String) schließen, bei dem die Regeln hinterlegt sind! Jedwede Hilfe ist willkommen…
Hab’ jetzt noch was gefunden: Scheint mit IPS_SetProperty zu gehen! Allerdings verstehe ich die Parameter der Funktion nicht wirklich! Kann da jemand mit einem Beispiel helfen? Neben Objekt-ID und ‚Rule‘ ist wohl ein Array zu übergeben. Aber was sind die möglichen Argumente?
Damit kannst du eine bestehende TextParser Config auslesen (zum Abschauen der notwendigen Daten, bzw. Aufbau vom String):
$TextParser_ID = 12345; // ID der TextParser IO-Instanz
$TextParserEinstellungen = IPS_GetConfiguration($TextParser_ID);
print_r($TextParserEinstellungen);
Also irgendwie steh ich grad auf dem Schlauch
Das hier…
$TextParser_ID = 11111;
$TP_VarID = 22222; // ID der Variable, die das Ergebnis vom TextParser aufnehmen soll
$TP_TagTwo = "BBB";
$TP_TagOne = "AAA";
$TP_Type = 4; // 1 = Text abschneiden vor // 2 = Text abschneiden hinter // 3 = Hole Text // 4 = Text ausschneiden zwischen
IPS_SetProperty($TextParser_ID, "Rules", '[{\"Variable\":$TP_VarID,\"TagTwo\":$TP_TagTwo,\"TagOne\":$TP_TagOne,\"ParseType\":$TP_Type}]');
IPS_ApplyChanges($TextParser_ID);
…ergibt diese Fehlermeldung: „Warning: Expected value of type int for ParseType“
Bug?
Du kannst entweder die Kompatibilitätsfunktionen aktivieren, oder mal in die __compatibility.inc.php schauen. Dort ist deine fehlende Funktion nachgebaut und du kannst schauen wie die Magie dahinter ist
Ich habe jetzt nach langem suchen die Lösung für mein Problem gefunden. Ich muss allerdings sagen, dass ich mit dem sehr generischen API von IPS nicht wirklich zufrieden bin, zumal es einfach an der Doku mangelt. Nichts desto trotz: Im Fall vom TextParser erwartet Property als Argument einen (ziemlich kryptischen) String:
Was ich mir übrigens mal wünschen würde, wäre eine Entwicklungsumgebung, mit der ich Step-by-Step debuggen kann. Ich glaube, dass würde meine Produktivität deutlich erhöhen…
So kann man nur mit echo und print_r arbeiten und das ist echt mühselig!
Ich meine nur den krptischen String.
Das Ist halt ein Array, welches als json-String in eine Eigenschaft geschrieben wird.
Nur darauf wollte ich hinaus.
Die Fehlermeldung sieht für mich wirklich nach einen Bug aus.
Bei anderen Instanzen gibt es das aber auch. Und dort funktioniert es, z.B. bei dem EventControl, oder bei den neuen WebHooks
So, eben noch mal getestet.
Bei mir klappt das mit IPS 4.
$TextParser_ID = 11242 /*[Text Parser]*/;
$TextParserEinstellungen = json_decode(IPS_GetProperty($TextParser_ID,"Rules"),1);
echo "ALT:".PHP_EOL;
var_dump($TextParserEinstellungen);
$NewRule = array(
"Variable" => 32144, // ID der Variable, die das Ergebnis vom TextParser aufnehmen soll
"TagTwo" => "BBB",
"TagOne" => "AAA",
"ParseType" => 4 // 1 = Text abschneiden vor // 2 = Text abschneiden hinter // 3 = Hole Text // 4 = Text ausschneiden zwischen
);
$TextParserEinstellungen[] = $NewRule; // $NewRule hinten anhängen.
IPS_SetProperty($TextParser_ID, "Rules", json_encode($TextParserEinstellungen));
IPS_ApplyChanges($TextParser_ID);
echo "------------------------------------------------------------".PHP_EOL;
echo "NEU:".PHP_EOL;
$TextParserEinstellungen = json_decode(IPS_GetProperty($TextParser_ID,"Rules"),1);
var_dump($TextParserEinstellungen);
Dann ist es wohl wirklich ein Bug, weil weder direkt als Array geschrieben klappt es, noch über die Funktionen in der "__compatibility.inc.php "…
…kommt immer das erwähnte „Warning“.
Auch wenn ich grad nicht wirklich den Unterschied verstehe
Das Array habe ich bei euch nicht gesehen?! Und das kann ja nicht gehen.
Es wird ja ein String erwartet.
Wobei der Code von dir mit dem String, immer nur ‚Ungültige JSON in …‘ erzeugte.
Ah, zum Glück war es doch ein Fehler Nur bringt mir der Fix leider noch nichts, da ich nach wie vor nicht auf IPS 4.x updaten kann Ich warte noch sehnlichst auf die Webserver und SSL…mit den anderen Punkten komme ich dann schon irgendwie klar…erstmal…