ich hab da ein Problem,
seit dem 17.11 scheint es nicht mehr zu funktionieren. Bekomme folgende Meldung:
22.11.2017 05:34:07 | PHP | Error: Error: Call to protected method Geofency::ProcessHookData() from context ‚‘
Error in Script /var/lib/symcon/scripts/14429.ips.php on Line 4
134 in IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php (call IPSLogger_Out)
33 in IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
121 in IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
in IPSLogger_PhpFatalErrorHandler
Vorher funktionierte es tadellos.
hier noch das script (hook)
<? //Do not delete or modify.
include(IPS_GetKernelDirEx().„scripts/__ipsmodule.inc.php“);
include("…/modules/SymconMisc/Geofency/module.php");
(new Geofency(21805 /[iPhone Dirk]/))->ProcessHookData();
Welche IPS Version läuft denn? Das ist Gegenstand der Diskussion. In neueren IPS Versionen ist das Skript nicht mehr notwendig daher kann die Methode protected sein. Sollte es sich aber eine ältere Version sein das bräuchte man zwei Methoden Aufrufe. Ich hatte das auch mal eingebaut das dies sowohl mit alten als auch neuen IPS Versionen funktioniert indem die IPS Version geprüft wird und davon abhängig eine Methode aufgerufen wird bzw das Skript gelöscht. Dies ist momentan aber wieder rausgenommen worden. Paresy wollte sich da noch festlegen wie er das lösen will bzw. welche Version notwendig ist damit das Modul funktioniert. Ich persönlich wäre ja dafür die Version auszuwerten und unterschiedliche Methoden aufzurufen. So mache ich das mit anderen Modulen auch und dann funktioniert das sowohl mit alten als auch neuen Versionen von IPS 4.x
Um das Problem vorüber gehend zu lösen musst Du im Module Ordner die Module.php bearbeiten und die Methode ProcessHookData auf Public ändern dann sollte es so lange funktionieren bis ein Modul Update erfolgt und sich Paresy entschieden hat wie dies zu lösen ist.
Ah dann bist Du nicht alleine, das Problem hatte ich auch und daher hatte ich das geändert. Per Hand kannst Du das nämlich selber nicht korrigieren, weil es nicht möglich ist eine Instanz als Webhook zu setzten. Das geht in der Webhook Instanz nicht, da meckert IPS das eine Instanz nicht als Ziel gültig ist, daher kann das nur aus einem Modul selber verändert werden und das Skript auch gelöscht insofern es in der IPS Version nicht mehr benutzt wird. Daher müsste das dann auch aus dem Modul selber geändert werden. Mal sehen was Paresy dazu sagt.
du meinst sicherlich die Module im Ordner (Geofency)?
die Module.php bearbeiten und die Methode ProcessHookData auf Public ändern --> Wo muss ich das genau ändern?
Eher bis ich herausgefunden habe, warum bei einigen Leuten im WebHook das Skript anstatt der Instanz angegeben ist. Normalerweise sollte dieses automatisch auf die Instanz aktualisiert werden.
Falls du eine neuere IP-Symcon Version besitzt kannst Du auch in die Instanz Webhook unter Kerninstanzen gehen und dort den Webhook für Geofency löschen. Anschließend löscht Du das Skript von Geofeny, auf das der Webhook gezeigt hatte.
Dann führst Du folgendes Skript einmal aus ( passende ObjektID für die Geofency Instanz angeben)
danach must Du nichts im Modul selber ändern, also von protected umstellen, dann sollte der Hook auf die Instanz zeigen und dann sollte das auch funktionieren ohne Fehlermeldung.
Super, funktioniert perfekt nach einem ersten Test. Danke!
Einen kleinen Schönheitsfehler gibt es noch: In der vorherigen Modul-Version hießen die Eintrittskoordinaten „current*“, jetzt werden neue Variablen angelegt und groß geschrieben („Current*“). Ich habe einfach die alten gelöscht, ich hoffe, dass es damit erledigt ist.
Diese sind in der Doku im Repository noch nicht aufgeführt. Ist bestimmt für viele hilfreich die das Modul nutzen möchten und nicht erst alle Posts im Forum durchlesen wollen.
Wäre einfach nur nett und hilfreich. Ich habe den Thread nur am Rande verfolgt und finde die Entwicklung toll, aber habe die neuen Features selbst noch nicht genutzt und kann deshalb auch nicht dokumentieren wie alles korrekt zusammenhängt. Würde mich wie gesagt - durch diesen Thread arbeiten und hoffen das ich alles verstehe
da ich diese Erweiterung angestoßen habe - und sie dankenswerterweise auch so schnell umgesetzt wurden - hier mein Vorschlag für die Ergänzung der Dokumentation des Moduls:
Latitude
Float
Breitengrad (Mitte des Geofences) der letzten Aktivität
Longitude
Float
Längengrad (Mitte des Geofences) der letzten Aktivität
aktuelle Longitude (CurrentLongitude)
Float
Proximity-Koordinaten, also die aktuellen Koordinaten bei Ein- oder Austritt (äusserer Umkreis des Geofences), falls „Aktuelle Position senden“ in der App beim Webhook gewählt wurde
aktuelle Latitude (CurrentLatitude)
Float
Proximity-Koordinaten, also die aktuellen Koordinaten bei Ein- oder Austritt (äusserer Umkreis des Geofences), falls „Aktuelle Position senden“ in der App beim Webhook gewählt wurde
Direction
Integer
Azimutwinkel (Richtung in Grad) des aktuellen Ein-/Austrittspunktes bezogen auf die Mitte des Geofence-Kreises, falls „Aktuelle Position senden“ in der App beim Webhook gewählt wurde
Distance
Float
Abstand (in Meter) des aktuellen Ein-/Austrittspunktes bezogen auf die Mitte des Geofence-Kreises, falls „Aktuelle Position senden“ in der App beim Webhook gewählt wurde
Distance
Integer
Himmelsrichtung (als Name) des aktuellen Ein-/Austrittspunktes bezogen auf die Mitte des Geofence-Kreises, falls „Aktuelle Position senden“ in der App beim Webhook gewählt wurde
Jetzt müsste das nur noch jemand ggf. prüfen und dann in Github übernehmen.
Himmelsrichtung (als Name) des aktuellen Ein-/Austrittspunktes bezogen auf die Mitte des Geofence-Kreises, falls „Aktuelle Position senden“ in der App beim Webhook gewählt wurde