Seite 11 von 16

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 20:30
von Sebi
Zeig mal dein Script...

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 20:46
von Sebi
Anrufer Liste ist jetzt auch implementiert.
Bei mir werden nur die Anrufe angezeigt, die nicht entgegen genommen wurden:
anrufe.PNG
anrufe.PNG (25.37 KiB) 14028 mal betrachtet
Bei Interesse kann ich auch da was anbieten :-)

Gruß
Sebastian

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 20:47
von Blackbird
Sebi hat geschrieben:Zeig mal dein Script...
So sieht es jetzt aus.

Code: Alles auswählen

<html>
<head>
	<title>FB Anwesenheitserkennung</title>
</head>

<body>


<?php
// Love your Lightmanager Air!
$fritzbox_ip = "fritz.box";
$tr64_port = "49000";
$Host1 = 'S6'; 
$Host2 = 'bphone'; 
$Host3 = 'mphone'; 


// Getestet mit Fritz!OS 6.60
$client = new SoapClient(null,array(	'location'		=> "http://" . $fritzbox_ip . ":" . $tr64_port . "/upnp/control/hosts",
										'uri'			=> "urn:dslforum-org:service:Hosts:1",
										'soapaction'	=> "urn:dslforum-org:service:Hosts:1#GetSpecificHostEntry",
										'noroot'		=> False
	));

$NumberOfHosts = $client->GetHostNumberOfEntries();



echo '<table><tr><td>Hostname</td><td>Ist verbunden?</td></tr> ';

if (!(is_soap_fault($NumberOfHosts))) 
{
  for ($i=0;$i<$NumberOfHosts;$i++)  
	{
    $Host = $client->GetGenericHostEntry(new SoapParam($i,'NewIndex'));
	echo'<td>';
	echo $Host['NewHostName'];
	echo'</td><td align="center">';
	echo $Host['NewActive'];
	echo'</td></tr>';
    if  ($Host['NewHostName'] == $Host1) 
		{
		if(($Host['NewActive'] == 1)) 
		{
		 $Host1anwesend = 1;
		}
		else
		{
		 $Host1anwesend = 0;
		}

		}
	}
}
if (!(is_soap_fault($NumberOfHosts))) 
{
  for ($i=0;$i<$NumberOfHosts;$i++)  
	{
    $Host = $client->GetGenericHostEntry(new SoapParam($i,'NewIndex'));
    if  ($Host['NewHostName'] == $Host2) 
		{
		if(($Host['NewActive'] == 1)) 
		{
		 $Host2anwesend = 1;
		}
		else
		{
		 $Host2anwesend = 0;
		}

		}
	}
}
if (!(is_soap_fault($NumberOfHosts))) 
{
  for ($i=0;$i<$NumberOfHosts;$i++)  
	{
    $Host = $client->GetGenericHostEntry(new SoapParam($i,'NewIndex'));
    if  ($Host['NewHostName'] == $Host3) 
		{
		if(($Host['NewActive'] == 1)) 
		{
		 $Host3anwesend = 1;
		}
		else
		{
		 $Host3anwesend = 0;
		}

		}
	}
}

echo '</table>';

/* Ab hier Ausgabe oder Weiterverarbeitung in DB oder TXT File. 
Es wird in diesem Beispiel eine 1 für online und eine 2 für offline geschrieben. Abschließend eine Prüfung ob wenigstens einer online ist. 
Diese Rückgabe könnte dann - wenn das Feature beim Lightmanager kommen sollte, als Auslösung von Szenen, Marker, ... dienen
 */

if ($Host1anwesend == 1)
{
	echo $Host1 . ' ist online<br>';
}
else
{
	echo $Host1 . ' ist offline<br>';
}
  

if ($Host2anwesend == 1)
{
	echo $Host2 . ' ist online<br>';
}
else
{
	echo $Host2 . ' ist offline<br>';
}

if ($Host3anwesend == 1)
{
	echo $Host3 . ' ist online<br>';
}
else
{
	echo $Host3 . ' ist offline<br>';
}


if ($Host1anwesend == 1 OR $Host2anwesend == 1)
{
	echo '<b>Jemand ist zu Hause</b><br><br>';
}
else
{
	echo '<b>Keiner ist da</b><br><br>';
}
echo 'Anzahl der Hosts gesamt: ' . $NumberOfHosts . '<br><br>';


?>
</body>
</html>
Aber wie gesagt, die Fehlermeldung kommt auch in dem "Original" ohne "ELSE"
Aber bitte, wirklich nicht als Kritik verstehen! Ich bin Dir wirklich sehr dankbar....

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 21:05
von Sebi
Ne Quatsch ist doch gut wenn andere mitdenken ! :lol:

Habs nochmal mit deinem Script probiert. Geht auch ohne else einwandfrei. Ggf. hast du irgendwas in deiner PHP ini konfiguriert.

Weil generell muss das gehen. Heisst ja auch IF Schleife. Else ist lediglich eine Erweiterung.

Gruß
Sebastian

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 22:14
von Marioir
Also bei mir klappt das wunderbar.
Habe das Script auf ein Handy abgeändert.

Hätte auch nicht gedacht das, der das so schnell rafft, das ich Offline geschaltet habe

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 22:42
von Sebi
Wie lange dauert es bei dir, bis er mitbekommt, dass du nicht mehr eingebucht bist?
Bei mir ca. 4-5 Minuten. Einbuchen innerhalb von 10sek.

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 23:17
von Marioir
Vielleicht 3-4 Sekunden, in beide Richtungen.

Re: Steuerung unserer Wohnung

Verfasst: Fr 29. Jul 2016, 23:49
von Sebi
OK, komisch dass es bei mir beim ausloggen länger dauert.

Anbei übrigens das Anwesenheits-Script, dass eine Marker Aktion beim Lightmanager durchführt. Geht bestimmt noch eleganter, aber funzt so schonmal einwandfrei.

Könnt ja mal berichten.

Gruß
Sebastian

Re: Steuerung unserer Wohnung

Verfasst: Sa 30. Jul 2016, 00:27
von Sebi
Hab grade nochmal ein bischen getestet. Das Marker Setzen Script funktioniert einwandfrei, wenn man es manuell aufruft. Möchte man es jedoch automatisiert per Cronjob laufen lassen, geht es nicht. (Da Javascript und HTML Bestandteile enthalten sind). Da müssen wir weiter gucken oder hat jemand eine Idee?

EDIT: Problem erkannt, Problem gebannt. Anbei das PHP Script, dass je nach Anwesenheitszustand der Marker Zustand per Cronjob ändern kann.

Have Fun :lol:

Gruß
Sebastian

Re: Steuerung unserer Wohnung

Verfasst: Mo 1. Aug 2016, 09:20
von Marioir
Habe es leider noch nicht testen können.
Aber mal ne frage, glaub so einfach wird das nicht Funktionieren, dafür schaltet die Fritzbox mir zu schnell auf Offline.
Stehe ich bei mir vor der Garage, habe ich schon WLAN, laufe ich anschließend ums Haus rum, verliere ich den Kontakt zum WLAN, erst wenn ich im Treppenhaus bin gibt es wieder WLAN, Also könnte er schon auf Offline schalten, wenn ich nur den Müll runterbringe. Die Sache ich nicht so einfach wie ich immer denke :mrgreen:

Aber zu Visuellen Überwachung mittels IH und PHP wäre es nicht schlecht. Also so wie du es hast.
Vielleicht findet man ja noch ne Lösung.

Mal ne andere Frage: Zu dein Cronjobs, lässt du damit regelmäßig die PHP Seite aktualisieren?
Laufen die auf deiner NAS?