Astronomie Modul

Hallo Fonzo,

habe die Tage auf IPS 5 umgestellt und bekomme jetzt folgende Fehlermeldung:

02.04.2018 14:30:17 | 56968 | ERROR   | InstanceManager      | Could not create instance interface: <br />
<b>Warning</b>:  InstanceInterface is not available in <b>D:\IP-Symcon\modules\IPSymconAstronomy\Astronomy\module.php</b> on line <b>1712</b><br />
<br />
<b>Notice</b>:  Trying to get property 'latitude' of non-object in <b>D:\IP-Symcon\modules\IPSymconAstronomy\Astronomy\module.php</b> on line <b>1713</b><br />
<br />
<b>Notice</b>:  Trying to get property 'longitude' of non-object in <b>D:\IP-Symcon\modules\IPSymconAstronomy\Astronomy\module.php</b> on line <b>1714</b><br />

Kannst Du mal unter Kerninstanzen unter Location nachschauen, ob dort alles korrekt angelegt wurde?

Ansonsten kannst Du mal


$location = getlocation();
var_dump($location);

 function getlocation()
	{
		//Location auslesen
		$LocationID = IPS_GetInstanceListByModuleID("{45E97A63-F870-408A-B259-2933F7EABF74}")[0];
		$ipsversion = GetIPSVersion();
		var_dump($ipsversion);
		if ($ipsversion == 5) {
			$Location = json_decode(IPS_GetProperty($LocationID, "Location"));
			$Latitude = $Location->latitude;
			$Longitude = $Location->longitude;
		} else {
			$Latitude = IPS_GetProperty($LocationID, "Latitude");
			$Longitude = IPS_GetProperty($LocationID, "Longitude");
		}
		$location = array("Latitude" => $Latitude, "Longitude" => $Longitude);
		return $location;
	}


function GetIPSVersion()
	{
		$ipsversion = floatval(IPS_GetKernelVersion());
		if ($ipsversion < 4.1) // 4.0
		{
			$ipsversion = 0;
		} elseif ($ipsversion >= 4.1 && $ipsversion < 4.2) // 4.1
		{
			$ipsversion = 1;
		} elseif ($ipsversion >= 4.2 && $ipsversion < 4.3) // 4.2
		{
			$ipsversion = 2;
		} elseif ($ipsversion >= 4.3 && $ipsversion < 4.4) // 4.3
		{
			$ipsversion = 3;
		} elseif ($ipsversion >= 4.4 && $ipsversion < 5) // 4.4
		{
			$ipsversion = 4;
		} else   // 5
		{
			$ipsversion = 5;
		}

		return $ipsversion;
	}

ausführen, was kommt da bei Dir als Ausgabe?

in Location scheint alles ok. zu sein.

Ausgabe:

int(5)
array(2) {
  ["Latitude"]=>
  float(51,02)
  ["Longitude"]=>
  float(13,83)
}

Hm seltsam, und unter welchen Umständen taucht die Fehlermeldung oben genau auf?

beim Start von IPS.

Ist mir aber aufgefallen als sich die Position von Sonne und Mond in „Mondansicht“ nicht mehr verändert hat.
Sonnenhöhe steht z.B. seit Tagen auf -33,75

Hast Du den Dienst noch mal neu gestartet bringt das eine Besserung?

In den letzten Tagen mehrmals. Bleibt gleich.

Bringt nichts Fonzo,
ist ein Fehler in deinem Modul auf git !
Du hast es noch nicht auf git angepasst,
Hatte ich die Tage schon mal gesagt…
@Fonzo : https://www.symcon.de/forum/threads/36717-IPS_GetProperty(12345-*-Location-*-Latitude-)?p=357040#post357040

Aber wo ist denn jetzt genau der Fehler mit IPS 5? L1706 ist doch genau die Methode, die ja anscheinend bei ihm funktioniert, s.o. Also wo fehlt da denn jetzt was bzw. was muss da Eurer Meinung noch ausgebessert werden für IPS5?

OK Fonzo,
gerade noch mal geschaut, hast du eingebaut, aber auch hier geht es nicht, mit IPS 5

Was geht im alten Skript von Bernd ist :


$LocationID = IPS_GetInstanceListByModuleID("{45E97A63-F870-408A-B259-2933F7EABF74}")[0]; 
if(floatval(IPS_GetKernelVersion()) >= 5) {
        $Location = json_decode(IPS_GetProperty($LocationID, "Location"));
        $Latitude = $Location->latitude; 
        $Longitude = $Location->longitude; 
} else {
        $Latitude = IPS_GetProperty($LocationID, "Latitude"); 
        $Longitude = IPS_GetProperty($LocationID, "Longitude"); 
}

//echo "Latitude: ".$Latitude." Longitude: ".$Longitude;  
$P = $Latitude/*Breitengrad*/;
$L = $Longitude /*Längengrad*/;

Das liefert die passeden Werte, bei deinem Modul geht es mit IPS5 hier nicht.
Wenn ich was suchen soll, sage Bescheid.

Ich wüste jetzt nicht was der Unterschied von dem Skript zu dem im Modul wäre, aber wenn jemand eine Idee hat für den Fehler bzw. irgendwo fündig wird würde ich mich freuen.

Hab auch auf IPS5 umgestellt - habe keine Fehler, aber falsche Werte. Elevation ist jetzt -30, obwohl die Sonne noch scheint. Die Werte im Location Modul habe ich angepasst, (Lat/Lon) in einem Feld)

Seit dem letzten Update hab ich die Fehler im Log nicht mehr.
Diese Problem bleibt aber:

Elevation ist jetzt -30, obwohl die Sonne noch scheint. Die Werte im Location Modul habe ich angepasst, (Lat/Lon) in einem Feld)

Bei mir -33 und Sonnenaufgang ist 01:11, Sonnenuntergang 09:22

Auch umgestellt, Fehlermeldungen sind keine vorhanden, ansonsten Elevation -33 sollte aktuell 5 sein. Bild Position Mond/Sonne ändert sich auch nicht.

Gruß Torsten

Gesendet von iPhone mit Tapatalk

ich habe etwas gefunden, passt aber noch nicht ganz

public function CDJD(int $day, int $month, int $year)

es werden aber (lt. eingestreuten Debugs) für ‚day‘ in Realität Nachkommstellen übergeben - in PHP 7 wird das (im Gegensatz zu früher) aber in der Funktion als int weiterverarbeitet.

public function CDJD(float $day, int $month, int $year)

hat etwas geändert

  • in IPS 4.4 ist das zur Zeit -18.80°
  • in IPS 5 ist ohne den Fix -32.72°
  • in IPS 5 ist das mit diesem Fix -8.65°

… vielleicht hilft das etwas als Idee. Morgen werde ich nochmal etwas weiter versuchen …

Ich habe auch schon die Nachkommastellen der Longitude/Latitude angepasst (war ja in IPS 4.4. nur 2 Stellen), hat aber keine (sichtbare). Auswirkung.

Hallo Fonzo,

ich habe nun identische Werte. es waren folgende Funktionen die Parameter-Deklaration anzupassen:


public function CDJD(float $day, int $month, int $year)
public function HMSDH(float $Hour, int $Minute, int $Second)
public function GSTUT(float $GSH, int $GSM, int $GSS, int $GD, int $GM, int $GY)
public function GSTLST(float $GH, int $GM, int $GS, float $L)
public function LSTGST(float $LH, int $LM, int $LS, float $L)
public function DMSDD(float $D, int $M, int $S)

Alle Wert, die das Modul errechnet sind nun gleich zu IPS 4.4.

Ich verstehe allerdings von den Berechnungen nicht so viel, das ich beurteilen könnte, ob nicht zu anderen Zeitpunkten auch an anderen Stellen der Berechnungen eine float entsteht, die als int behandelt wird.

Ich habe Dir einen Pull-Request erstellt.

Gruß
demel

Vielen Dank, hatte nicht die Zeit mir das im Detail anzuschauen, ich habe den Request mal so übernommen. Würde mich über Rückmeldung freuen, ob dies das Problem jetzt grundsätzlich bei allen, die Probleme hatten, beseitigt.
Danke nochmals fürs suchen und beheben.

Jupp, das sieht gut aus. danke fürs fixen:)

Super, funktioniert wieder. Danke für den fix.

Gesendet von iPhone mit Tapatalk

Danke an,
demel42 und Fonzo.
Hier geht es jetzt auch , Mist leider zu wenig Zeit.