Astronomische Berechnungen

@Matthias
wie es unter Ubuntu gelöst werden kann weiß ich jetzt leider nicht…
Nur das es sich bei dem Befehl variant_fix() um eine Windowsbasierte Erweiterung handelt. Näheres siehe unter
http://php.net/manual/de/function.variant-fix.php

variant_int() meckert er dann später auch an, kommt nämlich auch vor…

Du kannst variant_fix und variant_int durch intval ersetzten dann kommt auch keine Fehlermeldung mehr.
PHP: intval - Manual

da die Formeln in dem Buch ja in vba vorliegen suchte ich vergleichbares in php.
In vba diese zwei Funktionen (siehe unter Beispiel auf folgender Seite):
https://msdn.microsoft.com/de-de/library/xh29swte%28v=vs.90%29.aspx

@Fonzo
Danke für die Info.
@Bernd
Ich hoffe, dass Du eine Lösung findest. Ich bin IPS-Neuling und arbeite mich gerade auch in PHP ein.

Matthias

Genau das macht intval. Du dividierst ja eine Zahl durch etwas und bekommst z.B. 4.3 und willst jetzt nur 4 zum weiter bearbeiten.

aber ist da nicht ein Unterschied bei negativen Zahlen ?
Habe gerade mal


echo intval(99.8)."
"; //return 99
echo intval(-99.8)."
"; //return -99
echo intval(-99.2)."
"; //return -99


echo variant_int(99.8)."
"; //return 99
echo variant_fix(99.8)."
"; //return 99

echo variant_int(-99.8)."
"; //return -100
echo variant_fix(-99.8)."
"; //return -99

echo variant_int(-99.2)."
"; //return -100
echo variant_fix(-99.2)."
"; //return -99


So genau habe ich mir die Formeln noch nicht angeschaut. Was willst Du denn was genau passiert?
Bei 99.6 soll 99 rauskommen. Und was soll bei einem Wert von -99.6 ausgegeben werden?

:wink:
es ging sich nur darum das in den vba-Formeln aus dem Buch die Funktionen „int“ und „fix“ vorkommen und ich etwas vergleichbares in php gesucht habe…

Beispiel:

// Greenwich calendar date to Julian date conversion
function CDJD($day, $month, $year)
    {
    if ($month < 3){
        $Y = $year - 1;
        $M = $month + 12;}
    else{
        $Y = $year;
        $M = $month;}

    if ($year > 1582){
        $A = variant_fix($Y / 100);
        $B = 2 - $A + variant_fix($A / 4);}
    else{
     if (($year == 1582) And ($month > 10)){
        $A = variant_fix($Y / 100);
        $B = 2 - $A + variant_fix($A / 4);}
     else{
      if (($year == 1582) And ($month == 10) And ($day >= 15)){
        $A = variant_fix($Y / 100);
        $B = 2 - $A + variant_fix($A / 4);}
      else{
        $B = 0;}
            }
            }

    if ($Y < 0){
        $C = variant_fix((365.25 * $Y) - 0.75);}
    else{
        $C = variant_fix(365.25 * $Y);}

    $D = variant_fix(30.6001 * ($M + 1));
    $CDJD = $B + $C + $D + $day + 1720994.5;
    return ($CDJD);
    }

In bin mit den Kalenderfunktionen nicht so fit.
Aber eventuell gibt es da etwas fertiges:
PHP: gregoriantojd - Manual
Vielleicht gibt es ja noch mehr ‚fertiges‘.
Michael

Ab IP-Symcon 4 liegt Latitude und Longitude schon in der Instanz Location, wenn diese dort eingetragen wurden. Daher sind also eigentlich nicht noch mal seperate Variablen notwendig um Latitude und Longitude abzuspeichern.

Ab IP-Symcon 4 kann Latitude und Longitude so ausgelesen werden


function getlocation()
{
	//Location auslesen
	$LocationID = IPS_GetInstanceListByModuleID("{45E97A63-F870-408A-B259-2933F7EABF74}")[0];
	$Latitude = IPS_GetProperty($LocationID, "Latitude");
	$Longitude = IPS_GetProperty($LocationID, "Longitude");
	$location = array ("Latitude" => $Latitude, "Longitude" => $Longitude);
	return $location;
}

$location = getlocation();
$Latitude = $location["Latitude"];
$Longitude = $location["Longitude"];
echo "Latitude: ".$Latitude." Longitude: ".$Longitude;

Danke Wolfgang,

Die DLL Datei muss in welchen pfad ?

Danke,