Google Assistant / Home Integration

Hi,
Der Funktionsumfang ist dem von Alexa sehr ähnlich, größter Unterschied ist das man mehrere Geräte mit einer „Ansprache“ steuern kann :smiley:

Grüße
Dave

Gesendet von iPhone mit Tapatalk

Nee, daran kann es nicht gelegen haben. ich hab die Klammern ergänzt aber bekomme dennoch den Fehler


Parse error:  syntax error, unexpected 'case*' (T_STRING), expecting case (T_CASE) or default (T_DEFAULT) or '}' in /var/lib/symcon/scripts/31621.ips.php on line 8

Ist vielleicht hinter dem case ein nicht sichtbares Sonderzeichen?

Kannst Du mal das komplette Skript posten, irgendwo muss sich da ja noch ein Flüchtigkeitsfehler eingeschlichen haben.

<?
$raum = GetValueString(59658 /*[Aktions-Scripte\IFTTT\Raum]*/);
$pos = GetValueString(27428 /*[Aktions-Scripte\IFTTT\Position]*/);
$position = intval($pos);

switch($raum)
{
case "Gästezimmer":
SC_Move(12161 /*[Räume\Gästezimmer\Rollo Gästezimmer]*/, $position);
break;
case "Schlafzimmer":
SC_Move(27265 /*[Räume\Schlafzimmer\Rollo Schlafzimmer]*/, $position);
break;
}

?> 

das ist der Skript. Dann noch der Eintrag bei IFTTT:

{"username":"NAME","password":"PASSWORT","objectid":11353,"values":{"Value1":"TextField","Value2":"NumberField","Last-Run":"CreatedAt"<<<}>>>}

Vielleicht hab ich da einen Fehler?

Und der Skrip sieht in IPS so aus:

Hallo Oekomat,
der IFTT Eintrag sollte so aussehen.

{"username":"name","password":"passwort","objectid":11353,"values":{"Value1":"{{TextField}}", "Value2":"{{NumberField}}", "Last-Run":"{{CreatedAt}}"<<<}>>>}

Ich würde bei NumberField die " weglassen, dann wird es auch korrekt als Integer übergeben, andernfalls wird es eventuell als String interpretiert.

Also


{"username":"name","password":"passwort","objectid":11353,"values":{"Value1":"{{TextField}}", "Value2":{{NumberField}}, "Last-Run":"{{CreatedAt}}"<<<}>>>}

dazu muss man sich dann entweder die Variable automatisch anlegen lassen dann wird diese auch gleich als Integer angelegt oder eben wenn man die Variable selber anlegt den passenden Variablentyp auswählen.

Danke für den Hinweis Fonzo.

Folglich kann das Script nun so aussehen:

<?
$raum = GetValueString(59658 /*[Aktions-Scripte\IFTTT\Raum]*/);
$position = GetValue(27428 /*[Aktions-Scripte\IFTTT\Position]*/);

switch($raum)
{
case "Gästezimmer":
SC_Move(12161 /*[Räume\Gästezimmer\Rollo Gästezimmer]*/, $position);
break;
case "Schlafzimmer":
SC_Move(27265 /*[Räume\Schlafzimmer\Rollo Schlafzimmer]*/, $position);
break;
}

?>

Die Variable position muss integer sein.

und bei ifttt wie von Dir geschrieben so:

{"username":"name","password":"passwort","objectid":11353,"values":{"Value1":"{{TextField}}", "Value2":{{NumberField}}, "Last-Run":"{{CreatedAt}}"<<<}>>>}

Hallo Dave,
ich wollte einmal nachfragen wie der Stand der App für Google Home ist?
Es wäre nett wenn du einmal eine kurze Info geben könntest.

Viele Grüße,
Winston

Hi Winston,
Wir sind dran…
Leider gibt es aktuell Probleme mit der OAuth2 Authentifizierung… ein Ticket bei google ist offen und wir suchen gemeinsam eine Lösung…

Grüße
Dave

Gesendet von iPhone mit Tapatalk

Hallo Dave,

danke für deine Info.
Hoffen wir mal, dass Google da schnell helfen kann.:slight_smile:

Viele Grüße,
Winston

Hallo, endlich mal wieder Zeit hier weiterzumachen :o

Skript sieht so aus

<?
$raum = GetValueString(59658 /*[Aktions-Scripte\IFTTT\Raum]*/);
$position = GetValue(45356 /*[Aktions-Scripte\IFTTT\Position]*/);

switch($raum)
{
case "Gästezimmer":
SC_Move(12161 /*[Räume\Gästezimmer\Rollo Gästezimmer]*/, $position);
break;
case "Schlafzimmer":
SC_Move(27265 /*[Räume\Schlafzimmer\Rollo Schlafzimmer]*/, $position);
break;
}

?>

also der Skript liefert bei mir den Fehler:

Parse error:  syntax error, unexpected ' ' (T_STRING) in /var/lib/symcon/scripts/28240.ips.php on line 2

und die Variable hab ich auf integer eingerichtet (aktualisierte Zeit ist nur, weil ich da versehentlich einen Wert manuell geändert hatte):

in IFTTT sieht es auch so aus, wie du beschrieben hattest:

{"username":"name","password":"pw","objectid":11353,"values":{"Value1":"{{TextField}}", "Value2":{{NumberField}}, "Last-Run":"{{CreatedAt}}"<<<}>>>}

Google versteht mich zwar und "Last-Run wird auch aktualisiert, aber das wars dann auch.

Gruß oekomat

Hallo oekomat,
da stimmt was bei ifttt noch nicht.
Deine Variable Raum wird mit Textfield befüllt also nicht mit dem erkannten Raum.
Hier mal zwei Screenshots wie es bei ifttt aussehen sollte.
Der „If“ Teil sollte in etwa so aussehen:


und der „Then“ Teil so:

Mir ist noch aufgefallen, dass auch das auslösende Ereignis unter dem Script fehlt.
Bei Aktualsierung von Variable Raum Script ausführen.

Das sieht doch genauso aus wie bei mir:


Jetzt habe ich allerdings den Skript etwas angepasst und im Modul die Variablen angepasst. Jetzt läuft die Datenübertragung, aber der Rolladen bewegt sich wegen Fehler im Skript nicht

<?

$raum*=*GetValueString(34667);
$position*=*GetValue(45356/*[Aktions-Scripte\IFTTT\Position]*/);

switch($raum)
{
case"Gästezimmer":
SC_Move(12161/*[Räume\Gästezimmer\Rollo*Gästezimmer]*/, $position);
break;

case"Schlafzimmer":
SC_Move(27265/*[Räume\Schlafzimmer\Rollo*Schlafzimmer]*/,$position);
break;

}

?>
Warning:  Instance does not implement this function in /var/lib/symcon/scripts/28240.ips.php on line 9

Schaue doch mal bitte, ob das korrekt ist.

Grüße oekomat

Mein script ist für Shuttercontrol, Du sprichst aber eine Homematic Instanz an.
Du musst den Befehl ScMove… durch den Homematic Fahrbefehl ersetzen.

Hab ich inzwischen rausgefunden und habe das so:

HM_WriteValueInteger (12161 /*[Räume\Gästezimmer\Rollo Gästezimmer]*/, "LEVEL", $position);

Allerdingt kennt „Level“ nur Werte zwischen 0 und 1. Jetzt habe ich versucht den Wert aus $Position (z.B. 20) durch 100 zu dividieren, um so den für HM verständlichen Wert von 0.2 übergeben zu können. Und genau hier rechnet er nicht mit Zahlen die kleiner sind als 100. Subtraktion geht, aber bei Division kennt er hier nur 0.

Hier habe ich allerdings auch eine Lösung gefunden. Wen es interessiert, hier mein Skript:

<?

$zahl=100;
$raum=GetValueString(34667);
$position=GetValue(45356/*[Aktions-Scripte\IFTTT\Position]*/);
$hmposition=$position / $zahl;

switch($raum)

{
case "Arbeitszimmer":
HM_WriteValueFloat(12161 /*[Räume\Gästezimmer\Rollo Gästezimmer]*/, "LEVEL", $hmposition);
break;

case"Schlafzimmer":
SC_Move(27265/*[Räume\Schlafzimmer\Rollo Schlafzimmer]*/,$hmposition);
break;

}

?>

Klappt, dank deiner Hilfe super! danke

Ich habe bei mir festgestellt das es vorkommt das IFTTT den Wert CreatedAt nicht setzt, dadurch wird dann das JSON das von IFTTT gesendet wird ungültig. Daher habe ich bei mir CreatedAt rausgenommen und übertrage nur noch Textfield und Numberfield. Ansonsten habe ich eine kleine Änderung im IFTTT Modul eingefügt, bei der jetzt das von IFTTT übertragene JSON im Debug angezeigt wird bevor aufgrund eines falschen Benutzernames oder Passwort der Zugang verweigert wird. Das erleichtert die Fehlersuche, falls etwas falsch in IFTTT angegeben wurde. Die Schlüssel der Werte können jetzt auch frei gewählt werden und die Variablen, sollte diese vom Modul erstellt werden, werden passend zu den Schlüsseln benannt. Es ist also nicht mehr notwendig Value1 und Value2 zu schreiben man kann auch z.B. Position und Level benutzten.

Beispiel Body für IFTTT


{"username":"MeinUsername","password":"MeinPasswort","objectid":12345,"values":{"Position": " {{TextField}}","Level": {{NumberField}}<<<}>>>}

Dabei ist dann im Code der in der IFTTT IO Instanz gesetzte Benutzername und Passwort sowie bei objectid die passende Objekt ID der IFTTT Instanz einzutragen.

Hi,

gibt es hier schon etwas Neues?
Wird es vielleicht sogar ein Modul geben?

Grüße

Hallo Dave,

ich wollte noch einmal nach dem Stand des Moduls für Google Home fragen.
Hakt es immer noch an der OAuth2 Authentifizierung?
Es wäre noch einmal nett von dir, wenn du eine kurze Info zum Modul für Google Home geben könntest.:wink::+1:

Viele Grüße,
Winston

Hallo Dave,
ich schließe mich den vorangegangenen Posts an.
Gibt es schon etwas neues bezüglich Google Home Modul?

Durch den neuen Google Home Mini den es ja demnächst gibt,
wird die Verbreitung des Google Home bestimmt noch anwachsen.

Obwohl bei mir schon alles über ifttt angebunden ist,
freue ich mich natürlich trotzdem auf ein richtiges IPS Google Home Modul.
Vor allem weil in unserem Haushalt die Google Home Spracherkennung wirklich deutlich besser
als bei Amazon Echo ist.
Also bei mir wird bzw. hat der Home definitiv den Echo schon in der Smarthome(IPS) Sprachsteuerung verdrängt.

Echo kann zwar mehr, aber der wichtigste Punkt Spracherkennung macht der Google Home einfach besser.