Vorstellung Windows App - oder endlich eine Frau die macht was ich sage :-)

Servus
ja ich glaube das war es. Nachdem ich dann alles für Cortana aktiviert hatte war die Meldung weg. - Glaub ich zumindest, manchmal passieren da schon noch allerlei sonderbare Dinge.

Aktuell kann ich schon ganz brav:

  • Lichter und Szenen schalten
  • alle Temperaturen abfragen
  • Stromverbrauch und Kosten sowohl gesamt als auch alle Geräte einzeln abfragen
  • Badewasser aufwärmen, Heizung hochfahren
  • Status von ausgeählten Elektrogeräten abfragen
  • Kalendereinträge und eingegangene Email abfragen

Macht echt Laune das.

Langsam wird es kompliziert … gut wäre wenn es eine Möglichkeit gäbe bei nichtverstandenen Sätzen eine entsprechnde Antwort zu geben anstatt die Websuche zu starten.

Der WAF hat sich allerdings wieder verschlechtert, da ich heute mehr mit „Schnukki“ gesprochen habe als ihr.

gruß
bb

Hallo bb,

so wie Helmut schon geschrieben hat, sagt der Fehler das vermutlich das „ips4WindowsDeviceRegistration“ Modul noch nicht angelegt wurde (dann gibt es den Hook nicht).

Was Cortana angeht und ihre Spracherkennung angeht, so ist sie eben auch ein wenig eigen. Was sie nicht (er)kennt wird eine Websuche, leider ohne Chance das zu beeinflussen. Aber mit dem letzten Windows 10 Release auf dem Handy (122) ist die Erkennung nochmal merklich besser geworden, funktioniert bei mir inzwischen sogar im Auto tadellos.

Eine Sache noch zu Cortana, welche bisher nicht in der Doku steht. Mit der App Version 1.1.45 und dem Modulupdate vom Wochenende (5.03.2016) bekommen alle Geräte bei denen Pushbenachrichtigung in den Appeinstellungen aktiviert ist, automatisch einen Request sich bei Änderungen die neue Sprachdefinition zu laden.

Geofency ist gerade noch im Test, kommt dann in der nächsten Version (man kann Orte festlegen und bekommt beim betreten/verlassen eine Variable geändert).

Zur Darstellung, ich will das ganze Mobile UI nochmal überarbeiten sobald ich alle Variabledarstellungen umgesetzt habe (fehlen noch 3-4 Varianten). Kannst du mir bitte mal einen Screenshot per Mail (ipscontrol@outlook.com) von der Darstellung auf deinem Handy schicken, würde gerne mal verstehen ob das nur deine Wahrnehmung ist oder ob es vielleicht anders skaliert :slight_smile:

Danke und Grüße
Seb.

Hi Seb, du hast Post.

In der Doku feht noch ein Hinweis das man auch beliebige eigne Schlüsselwortgruppen definieren kann.
Ich lese sie so das nur actor/action/status/room möglich sind.
Konnte allerdings mit Freude feststellen das man auch beliebige eigene Gruppennamen definieren kann.:slight_smile:

Wie ist den das mit dem „CommandFeedback“. Da kann man doch nur eines pro command angeben, oder ?
Wäre es nicht gut mehrere zu haben aus denen zufällig ausgewählt wird um das Gespräch echter wirken zu lassen ?

Wenn man kein Feedback möchte, wie geht das dann ? weglassen oder „“ oder " " führten zu einer Fehlermeldung.

Kommt der weiße Balken ober der WinPhone APP noch weg ? Sieht häßlich aus.

Ich hab mir übrigens für alle Command-Gruppen eigne Scripte gebaut und verzweige aus dem ips4winCortanaWebHook dorthin. So ist das wie ich finde etwas übersichtlicher als in deinem Beispiel wo alles in einem liegt. Das wird ja doch sehr lang.

Und wäre es nicht besser die Schlüsselwörter der Sprachbefehldefinition irgendwie aus einem globalen Array zu ziehen? Denn irgendwann später braucht man genau diese Wörter eh nochmals wenn dann IPS auf das von Cortana gelieferte Array reagieren muß. Weißt was ich mein ?

schöne Grüße
bb

So meinte ich das:

$action =array("öffne","schliesse","aktiviere","starte","ein","aus","an","ab");
foreach ($action as $keyword) {
	$ips4WinCortana->AddActionPhraseCommand("action",$keyword);
}

Ist doch übersichtlicher als x mal die gleiche …AddPhraseCommand … Zeile.

bb

Moin zusammen,

ich habe das Problem gehabt, dass ich (wie auch in der Anleitung beschrieben) nicht über localhost bzw. die Ip auf den gleichen Rechner zugreifen konnte.
Nach ein bischen suchen, habe ich herausgefunden, das Windows Apps keinen Zugriff auf den localhost haben. (loopback)

Mit diesem Tool kann das Loopback für die jeweilige app freigegeben werden:
(weiß allerdings nicht wie das sicherheitstechnisch aussieht…)

Windows 8 Loopback Exemption Manager - Home

nachdem ich das tool runtergeladen hatte und die Ips4windows app freigegeben habe, konnte ich über die IP bzw über localhost zugreifen.

Gruß
Thomas

IP.jpg

Servus Sebastian

mir ist eben wieder eine kleine Unschönheit am WindowsPhone aufgefallen.
Man kann die App nicht bewusst schließen. Ich weiß unter WInPhone ist das auch nicht notwendig.
Irgendwie ist das aber trotzdem doof, wenn man ein Program nicht wegklicken kann wenn einem danach ist.

Ohne Datenverbindung zu IPS kommt eine unschöne Fehlermeldung hoch und die kriegt man nicht weg weil sich die APP nicht schließen läßt.

gruß
bb

Hallo bb,

das Problem bei nicht vorhandener Verbindung habe ich schon auf meiner ToDo Liste, der Updatethread versucht ständig weiter Daten zu bekommen. Behebe ich im nächsten Update.

Zum schließen der App, wie willst du das den machen? Wie du schon geschrieben hast, ist das eigentlich im Konzept von „mobilen“ Apps (iOS, Android, Windows) nicht vorgesehen. Das Betriebssystem schickt die App nach ein paar Minuten im Hintergrund schlafen, es wird alles angehalten und die App bekommt keine Ressourcen mehr. Wenn der User die App startet wir der letzte Stand wieder hergestellt - ähnelt ein wenig dem Hibernate an einem PC.
Damit Push, LiveTiles und Cortana funktioniert registriert sich die App beim Betriebssystem und gibt an welcher explizite Code bei einem Ereignis ausgeführt wird. Das Betriebssystem führt also zB. bei einem Cortana Befehl nicht die App aus (die schläft weiterhin), sondern nur eine Funktion die explizit dafür gebaut wurde. Dadurch verbraucht die App keine Ressourcen und schont den Akku.

Willst du eine App explizit schließen, hilft nur der Taskmanager (Pfeiltaste lange drücken und dann kann man die App abschießen).

Grüße
Seb.

Ohhh, wieder was gelernt :slight_smile: Na dann ist es gut…

Ich glaub im letzten Update hattest ja auch eingebaut das Änderungen am Sprachfile automatisch an die App gesendet werden. Davor mußte man ja neu starten. Da ich die APP nicht schließen konnte bedeutete das Handy neu starten um die Änderungen zu übernehmen.

Hast du den Einstellring absichtlich so schmal gemacht ? Zumindest auf meinem 640 sieh der etwas ärmlich aus.

gruß
bb

Hallo miteinander,

hab das ganze mit richtigem Übereifer installiert und auch schon Jalousie und Lichter mit
Cortana ans Laufen gebracht. Doch die Frage nach der Temperatur will nicht so recht.
Kann mir einer seine CortanaHook mal posten, in der man beispielhaft sehen kann, wie ich
mir von ihr die Temperatur im Wohnzimmer ansagen lassen kann ?

Grüße
chefhb88

Servus

bitte gerne:

Ich hab aber die CortanaHook gekürzt und Teile davon in externe Scripte ausgelagert.
Finde das so übersichtlicher.

Das hier ist in der CortanaHook:


if ($resultArray['CommandName'] == 'Frage_Temperatur') {
	$AnswerText = IPS_RunScriptWaitEx(18313 /*[Cortana\Frage_Temperatur]*/, $resultArray);
	echo $ips4WinCortana->SendFeedbackSuccess($AnswerText);
}

und dieses Script wird aufgerufen:

$room = $_IPS['room'];
switch ($room) {
		case 'Wohnzimmer':
		   $Temp = (int)GetValue(17209 /*[Heizung\Raumtemperaturregler\Wohnzimmer\Temperatur]*/);
		   $AnswerText = "Im Wohnzimmer hat es optimale".$Temp." Grad";
      break;
      
      case 'Badezimmer':
		   $Temp = (int)GetValue(57898 /*[Heizung\Raumtemperaturregler\Badezimmer\Temperatur]*/);
		   $AnswerText = "Im Badezimmer hat es ".$Temp." Grad";
      break;

      case 'Schlafzimmer':
		   $Temp = (int)GetValue(33847 /*[Heizung\Raumtemperaturregler\Schlafzimmer\Temperatur]*/);
		   $AnswerText = "Im Schlafzimmer hat es ".$Temp." Grad";
      break;

     case 'Keller':
		   $Temp = (int)GetValue(39879 /*[Heizung\Raumtemperaturregler\Keller\Temperatur]*/);
		   $AnswerText = "Im Keller hat es ".$Temp." Grad";
      break;

     case 'Garage':
		   $Temp = (int)GetValue(30257 /*[Heizung\Raumtemperaturregler\Garage im Abzweig zu Zählerkasten\Temperatur]*/);
		   $AnswerText = "In der Garage hat es ".$Temp." Grad";
      break;

	  case 'Aquarium':
		   $Temp = (int)GetValue(13651 /*[Aquarium\Temperatur\Zulauf\Temperatur]*/);
		   $AnswerText = "Die Wassertemperatur im Aquarium beträgt" .$Temp." Grad";
      break;

      case 'Maries Zimmer':
		case 'Kinderzimmer':
		   $Temp = (int)GetValue(36903 /*[Heizung\Raumtemperaturregler\Kinderzimmer\Temperatur]*/);
		   $AnswerText = "In Maries Zimmer hat es ".$Temp." Grad";
      break;

      case 'Flur':
		   $Temp = (int)GetValue(14749 /*[Heizung\Raumtemperaturregler\Flur\Temperatur]*/);
		   $AnswerText ="Im Flur hat es ".$Temp." Grad";
      break;

     case 'draußen':
     case 'Garten':
		   $Temp = (int)GetValue(59560 /*[Räume\Garten\Außensensor\Temperatur]*/);
		   $AnswerText ="Die Außentemperatur beträgt".$Temp." Grad";
      break;
      
     case 'Badewasser':
		   $Temp = (int)GetValue(40316 /*[Heizung\Heizkreis\Brauchwasser\Temperatur]*/);
			if ($Temp < 42) {
						$AnswerText ="Das Warmwasser hat ".$Temp." Grad. Das ist etwas zu kalt zum Duschen.";
				}
			else {
 						$AnswerText ="Das Warmwasser hat ".$Temp." Grad. Du kannst Duschen gehen.";
				}
		break;

		case 'Pumpe':
		
		break;

	}

#IPS_LogMessage("WebHook Cortana", $AnswerText);
echo $AnswerText;

?>

viele Glück
bb

Servus

bitte gerne:

Ich hab aber die CortanaHook gekürzt und Teile davon in externe Scripte ausgelagert.
Finde das so übersichtlicher. Damit kann ich nämlich für alle Commandgruppen eigene Scripte pflegen. So ewig lange Würste mag ich nicht.

Das hier ist in der CortanaHook:


if ($resultArray['CommandName'] == 'Frage_Temperatur') {
	$AnswerText = IPS_RunScriptWaitEx(18313 /*[Cortana\Frage_Temperatur]*/, $resultArray);
	echo $ips4WinCortana->SendFeedbackSuccess($AnswerText);
}

und dieses Script wird aufgerufen. zzt. noch etwas eintönig. Werde das noch so umbauen, das per Zufall aus einem Pool von möglichen Texten irgendwas ausgewählt wird.

$room = $_IPS['room'];
switch ($room) {
		case 'Wohnzimmer':
		   $Temp = (int)GetValue(17209 /*[Heizung\Raumtemperaturregler\Wohnzimmer\Temperatur]*/);
		   $AnswerText = "Im Wohnzimmer hat es optimale".$Temp." Grad";
      break;
      
      case 'Badezimmer':
		   $Temp = (int)GetValue(57898 /*[Heizung\Raumtemperaturregler\Badezimmer\Temperatur]*/);
		   $AnswerText = "Im Badezimmer hat es ".$Temp." Grad";
      break;

      case 'Schlafzimmer':
		   $Temp = (int)GetValue(33847 /*[Heizung\Raumtemperaturregler\Schlafzimmer\Temperatur]*/);
		   $AnswerText = "Im Schlafzimmer hat es ".$Temp." Grad";
      break;

     case 'Keller':
		   $Temp = (int)GetValue(39879 /*[Heizung\Raumtemperaturregler\Keller\Temperatur]*/);
		   $AnswerText = "Im Keller hat es ".$Temp." Grad";
      break;

     case 'Garage':
		   $Temp = (int)GetValue(30257 /*[Heizung\Raumtemperaturregler\Garage im Abzweig zu Zählerkasten\Temperatur]*/);
		   $AnswerText = "In der Garage hat es ".$Temp." Grad";
      break;

	  case 'Aquarium':
		   $Temp = (int)GetValue(13651 /*[Aquarium\Temperatur\Zulauf\Temperatur]*/);
		   $AnswerText = "Die Wassertemperatur im Aquarium beträgt" .$Temp." Grad";
      break;

      case 'Maries Zimmer':
		case 'Kinderzimmer':
		   $Temp = (int)GetValue(36903 /*[Heizung\Raumtemperaturregler\Kinderzimmer\Temperatur]*/);
		   $AnswerText = "In Maries Zimmer hat es ".$Temp." Grad";
      break;

      case 'Flur':
		   $Temp = (int)GetValue(14749 /*[Heizung\Raumtemperaturregler\Flur\Temperatur]*/);
		   $AnswerText ="Im Flur hat es ".$Temp." Grad";
      break;

     case 'draußen':
     case 'Garten':
		   $Temp = (int)GetValue(59560 /*[Räume\Garten\Außensensor\Temperatur]*/);
		   $AnswerText ="Die Außentemperatur beträgt".$Temp." Grad";
      break;
      
     case 'Badewasser':
		   $Temp = (int)GetValue(40316 /*[Heizung\Heizkreis\Brauchwasser\Temperatur]*/);
			if ($Temp < 42) {
						$AnswerText ="Das Warmwasser hat ".$Temp." Grad. Das ist etwas zu kalt zum Duschen.";
				}
			else {
 						$AnswerText ="Das Warmwasser hat ".$Temp." Grad. Du kannst Duschen gehen.";
				}
		break;

		case 'Pumpe':
		
		break;

	}

#IPS_LogMessage("WebHook Cortana", $AnswerText);
echo $AnswerText;

?>

in der Sprachdefinition schaut es so aus:


// Temperatur oder allgemeines abgfragen ******************************
$ips4WinCortana->AddVoiceCommand("Frage_Temperatur","wie {status} ist es im {room} ");
$ips4WinCortana->AddVoiceCommand("Frage_Temperatur","wie {status} ist das {room} ");
$ips4WinCortana->AddVoiceCommand("Frage_Temperatur","wieviel {status} hat es ist es im {room} ");
$ips4WinCortana->AddVoiceCommand("Frage_Temperatur","sag mir die {status} im {room} ");

$ips4WinCortana->AddCommandFeedback("Frage_Temperatur","einen Moment");
$ips4WinCortana->AddCommandFeedback("Frage_Temperatur","warte mal");

$ips4WinCortana->AddCommandExample("Frage_Temperatur","Wie warm ist es im Wohnzimmer ?");

@Sebastian: Für „AddCommandFeedback“ ist aber immer nur ein Satz gültig, oder? Kann ich es irgendwie hinkriegen das aus wenn ich so wie oben mehrere angebe zufällig ausgesucht wird ?

viele Glück
bb

Hallo bb,

auch das liegt leider am 640, das hat irgendwie eine komische Skalierung. Ändere ich aber, hab ich die Tage auch gesehen - hab keins zum testen.

Hallo chefhb88,

leider ist Cortana bei der Temperatur ein wenig eigen. Ich habe das Gefühl das es mit der Windows 10 Version xxxx.164 deutlich besser geworden ist, aber es kommt immer noch vor das die Frage „Haus wieviel Grad haben wir im Wohnzimmer?“ mir das aktuelle Wetter vom Ort liefert.

Ich habe aktuell die folgenden Fragen zur Temperatur definiert:

$ips4WinCortana->AddVoiceCommand(„TempFragen“,„Wieviel Grad haben wir [li] {room}?“);
[/li]$ips4WinCortana->AddVoiceCommand(„TempFragen“,„Wie ist die Temperatur [li] {room}?“);
[/li]$ips4WinCortana->AddVoiceCommand(„TempFragen“,„Wie ist das Raumklima [li] {room}?“);
[/li]
Grüße
Seb,

Keine Eile. Gib Bescheid falls du mehr Infos oder Testcases brauchst.

bb

Hallo zusammen,

da ich einiges an Feedback bekam das die App so sehr mächtig ist und man gar nicht weiß wie man einzelne Dinge Nutzen/Konfigurieren soll, habe ich eine einfache Doku in form eines Blogs angelegt. Diesen findet man unter ips4windows – ips4Windows ist eine Windows 10 Universal App, um die Fähigkeiten von Windows 10 mit der Homeautomation IP-Symcon zu verbinden

Seit gestern ist auch die Version 1.1.46 unterwegs, in dieser ist neben Bugfixes jetzt auch Geofence aktiviert um eine sehr einfache Anwesenheitserkennung zu realisieren.

Grüße
Seb.

Servus

Super das du uns was ins Osternestl gelegt hast. Da hamma gleich was zum Spielen am langen Wochenende.
Bis jetzt konnte ich Geofency aber noch nicht um laufen bringen.

Die aktuelle App Version hab ich, Geofency ist aktiviert und der Ort eingerichtet.
Die Module in IPS sind ebenfalls upgedated.

Es tut sich aber nix, d.h. es wird keine Geofency Kategorie im IPS4WINDeviceregistration Modul angelegt.
Hab dann auch probeweise die Device mal gelöscht.
Die wurden dann wieder brav neu angelegt, aber Geofency fehlt.

Muß ich da noch irgendwo etwas machen ? IPS4 hab ich, Notifications und Cortana funktionieren.

Ach ja, wie kann man Orte in der App löschen ?

Edit: sorry der „Orte löschen“ Button ist bei nur im Querformat sichtbar, Hochformat ist er rechts draußen versteckt.
Den solltest vielleicht woanders hinplazieren, da werden sonst noch viele danach suchen.

schöne Grüße
bb

Hallo bb,

danke für den Hinweis, das mit den Buttons ändere ich.
Die Orte werden in IPS erst angelegt, wenn es innerhalb der App einen Event zum Betreten/Verlassen gegeben hat.
Irgendwie hatte ich bisher gar nicht drüber nachgedacht, die Orte direkt anzulegen - schaue ich mir aber mal an (dann auch inkl. Löschung).

Neben dem Auslösen durch Betreten/Verlassen muss es auch eine Netzwerkverbindung zu dem Zeitpunkt geben, sonst wird der Event verworfen.

Grüße
Seb.

OK danke. Dann probiere ich das morgen nochmals.

Schöner wäre aber wenn der beim Anlernen des Ortes dieser auch gleich in IPS angelegt würde - natürlich als anwesend.
Noch besser wäre wenn man manuel Anwesende/Abwesend setzen zu können. Dann kann man das direkt ausprobieren, evlt. will man auch mal den tatsächlichen Status überschreiben.
Vielleicht auch hilfreich um nachgeschaltete IPScripte zu testen.

Und sag mal wie ist den das mit der Sicherheit? Hab bis jetzt nur über VPN gearbeitet und net weiter darüber nachgedacht. Aber für Geofency müßte das ja permanent aktiv sein was dann wohl dem Akku etwas zusetzt.

Ansonsten alles super.
schöne Grüße
bb

Hi Sebastian
OK, nun hat das funktioniert und die Geofency Kategorie wurde erstellt.

Werde mich jetzt mal damit spielen.

bb

Hallo Sebastian,

die App läuft super auf dem Windows Phone 10.
Nur die Pushbenachrichtigungen funktionieren nicht wenn man die Connection über Symcon Connect macht (ipmagic.de).
Dann wird der hook nicht gefunden. Intern im Wlan per IP geht’s.
Gruß
Bilderbuch

Moin Sebi,

danke erstmal für die App. Auf meinem Tablet in der Küche läuft es wunderbar, erste Schritte mit Cortana sind schon getan.

Nun habe ich aber noch ein 7" Tablet mit Win10 rumliegen, dass ich gerne als „digitalen Bilderrahmen“ nutzen wurde. Darum hätte ich zu dieser Funktion Deiner App noch einige Wünsche:

[ul]
[li]Übergänge zwischen den Bildern (am liebsten „überblenden“ o.s.)[/li][li]Auswahlmöglichkeit für die Hintergrundfarbe (ich hätte gerne schwarz statt grau)[/li][li]Auswahlmöglichkeit wie lange die Bilder jeweils angezeigt werden sollen[/li][li]Reihenfolge auswählen: zufällig oder in Reihe. Gerne auch irgendwas wie „priorisiere neueste Bilder“, damit die aktuellsten Fotos häufiger erscheint.[/li][li]Automatischer Rescan des Ordners nach neuen Fotos (falls nicht schon implementiert)[/li][/ul]

Zudem ist das einlesen der Bilder noch nicht ganz Fehlerfrei oder nicht performant. Das kleine Tablet hat nur 1GB RAM. Wenn ich bei Bilderpath ein Verzeichnis auf der lokalen SD-Karte mit 230 JPGs (je 500-2000kb) auswähle passiert… nichts. Der Hintergrund bleibt grau und das seit über 24 Stunden. Irgendeine Idee?