Steuerung unserer Wohnung

Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Fr 29. Jul 2016, 20:30

Zeig mal dein Script...
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Fr 29. Jul 2016, 20:46

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) 14038 mal betrachtet
Bei Interesse kann ich auch da was anbieten :-)

Gruß
Sebastian
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Benutzeravatar
Blackbird
Beiträge: 829
Registriert: Sa 20. Feb 2016, 17:51

Fr 29. Jul 2016, 20:47

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....
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Fr 29. Jul 2016, 21:05

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
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Marioir
Beiträge: 1147
Registriert: Mi 24. Feb 2016, 15:36
Wohnort: Offenbach

Fr 29. Jul 2016, 22:14

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
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Fr 29. Jul 2016, 22:42

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.
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Marioir
Beiträge: 1147
Registriert: Mi 24. Feb 2016, 15:36
Wohnort: Offenbach

Fr 29. Jul 2016, 23:17

Vielleicht 3-4 Sekunden, in beide Richtungen.
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Fr 29. Jul 2016, 23:49

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
Dateianhänge
fritz_anwesenheit_do_action.zip
(918 Bytes) 443-mal heruntergeladen
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Sebi
Beiträge: 334
Registriert: Do 18. Feb 2016, 13:22
Wohnort: Aachen

Sa 30. Jul 2016, 00:27

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
Zuletzt geändert von Sebi am Di 2. Aug 2016, 14:02, insgesamt 1-mal geändert.
Darf's ein bisschen smarter sein? http://www.schlaue-huette.de ! :idea:
Marioir
Beiträge: 1147
Registriert: Mi 24. Feb 2016, 15:36
Wohnort: Offenbach

Mo 1. Aug 2016, 09:20

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?
Antworten