39_gassistant.pm (Google Assistant, Google Home)

Begonnen von dominik, 29 Januar 2019, 21:59:53

Vorheriges Thema - Nächstes Thema

NePheus

#1935
Zitat von: dominik am 16 Mai 2020, 20:04:36
Danke dir für die ausführliche Beschreibung.

Ein paar Fragen dazu:
- Wenn du den Fernseher einschalten willst, muss ein zuerst ein activity TV und danach on gesendet werden, richtig?
- Ich muss also bei jedem Befehl vorher das activity command mitgeben?
- Kannst du bitte testen ob man das direkt hintereinander schicken kann? In der Konsole "set device activity tv; set device off" eingeben und prüfen ob es so schnell verarbeitet wird.
- Würdest du beim Volume wirklich immer harmony sagen? Sollte das dann nicht auch TV, usw. lauten? Klingt aus meiner Sicht besser.
- Die Lautstärke bei "OK Google" zu ändern hatte ich auch schon überlegt. Leider bekomme ich über keinen Weg die Information, dass da gerade eine Anfrage läuft. Google macht es beim Chromecast und anderen Cast Devices automatisch.
- Die Lautstärke in Stufen zu ändern hat Google implementiert, leider funktioniert es noch nicht. Da kann man dann "viel lauter", "etwas lauter", "lauter" sagen und erhält unterschiedliche Stufen. Wie gesagt, funktioniert leider nicht. Bugreport dazu habe ich bei Google schon erstellt.


  • Einschaltablauf: Eine Activity kann einfach mit "set DEVICENAME activity 'ACTIVITYNAME'" gestartet werden, auch wenn vorher alles aus war. Es schaltet sich direkt alles automatisch ein. Ein weiterer Befehl ist nicht notwendig.
  • Activitywechsel: Beim Wechseln einer Activity wird ebenfalls nur einmal ein "set DEVICENAME activity 'ACTIVITYNAME'" mit der neuen Activity gesendet, mehr nicht. Die alte Activity beendet sich automatisch, anschließend startet die Neue.
  • "set harmony activity 'TV'; set harmony off": Wird es einen solchen Fall geben? Denn das macht nicht viel Sinn. Eine Activity muss normalerweise vom Einschaltablauf komplett durchgeführt sein, bis man einen weiteren Befehl abgeben kann. Denn das Hub könnte ja in der Sequenz erst Geräte Einschalten, die evtl. eine Einschaltverzögerung von 3 Sekunde haben und anschließend noch die Eingänge setzen. Erst wenn das alles abgeschlossen ist, ist z.B. die Fernbedienung wieder freigegeben um eine andere Activity zu starten oder alles auszuschalten. Genauso dürfte es sich verhalten wenn man in FHEM Befehle absendet. Ich denke mal dafür sind auch die Readings "activity" und "currentActivity". Das eine dient wahrscheinlich zu zeigen welche aktuell ausgewählt ist und das andere welche ausgeführt ist, was dann theoretisch beim Wechseln für ein paar Sekunden auseinander liegen könnte.
  • Volume-/Ausschaltbefehl: Wenn ich von der Fernbedienung ausgehe, habe ich immer fest die Buttons für "Aus/Lauter/Leiser/Mute", also unabhängig davon welche Activity gerade läuft. Die FHEM commans simulieren also nur den Klick auf diese Tasten. Ich würde es schon gut finden "schalte harmony stumm" sagen zu können, ohne vorher wissen zu müssen welche Activity läuft. Allerdings wäre es zusätzlich natürlich nicht schlecht den Befehl auch mit der laufenden Activity sagen zu können, also wie du meintest "schalte TV stumm". Genauso verhält es sich mit dem off Befehl. "schalte tv aus" macht natürlich absolut Sinn. Ohne drüber nachzudenken welche Activity läuft, wäre aber auch einfach ein "schalte harmony aus" nicht verkehrt. Auf der Fernbedienung navigiere ich ja auch nicht erst in eine Activity rein und klicke dort auf aus, sondern klicke einfach den globalen Ausschalter. Ich denke beide Varianten wären sinnvoll wenn das von deiner Seite aus möglich ist.
  • Lautstärkeabsenkung: Dass die Lautstärkesenkung nicht möglich ist, ist echt schade, habe ich mir aber schon gedacht. Leider habe ich die letzten Tagen festgestellt, dass es kaum möglich ist Befehle abzugeben während etwas über den AV-Receiver wiedergegeben wird. Vielleicht muss ich noch eine andere Position für den Google Nest Mini aussuchen.
  • Lautstärkestufen: Vielleicht müsstest du bei einem Lautstärkewechsel einen Wert fest vorgeben, dass er standardmäßig z.B. 5 mal lauter/leiser hintereinander ausführt und das nur über ein custom mapping zu ändern wäre. Ein einziger leiser Befehl wäre denke ich in den meisten Fällen zu wenig. Dann müsste man ja 10 mal hintereinander sagen "leiser" wenn man einen etwas größeren Sprung machen will. Kommt natürlich immer auf die Hardware an. Mein Denon macht 0.5er Schritte und da hört man bei einem Schritt noch keine große Änderung. Habe jetzt auch mal den Denon direkt mit Google Home verbunden (über den Denon HEOS Dienst) und da gibt es auch die Befehle lauter/leiser. Die machen Sprünge von etwa 5, das wäre als hätte ich 10 mal auf der Fernbedienung lauter/leiser gedrückt.

dominik

Ok, ich glaub jetzt habe ich die Zusammenhaenge verstanden.

- Schalte den TV ein
set harmony activity TV
- Schalte die XBox ein
set harmony activity xbox
- Schalte den TV/XBox aus
set harmony activity poweroff ?
- Mach TV/XBox lauter/leiser/mute
set harmony special volumeUp/mute (egal welches activity gerade laeuft)

Eigentlich braucht man gar kein Device harmony, oder? Weil es klingt ja besser schalte TV aus statt harmony. Der Befehl waere einfach immer ein activity poweroff. Waere das so richtig?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

NePheus

Statt "set harmony activity poweroff" (habe ich noch garnicht getestet) kannst du einfachhalber "set harmony off" nehmen. Der kümmert sich automatisch dadrum, dass die laufende Activity beendet wird.

Das "special" kann hier nicht verwendet werden (hatte ich anfangs ausprobiert), das ist wohl nur für das Harmony Smart Keyboard (Zusatzhardware) gedacht. Stattdessen:
Lauter: set DEVICENAME command 'volumeUp'
Leiser: set DEVICENAME command 'volumeDown'
Muten: set DEVICENAME command 'mute'

Man könnte natürlich vorsehen, dass immer die aktuelle Activity angesprochen werden muss. Aber was, wenn ich (warum auch immer) gerade garnicht weiß welche Activity läuft und einfach nur alles ausschalten will. Dann müsste ich erst immer die Activity rausbekommen bevor ich das ganze bedienen kann. Ich kann das jetzt nur subjektiv beurteilen und würde wahrscheinlich selbst eher "mach harmony leiser" nutzen, statt immer die Activity zu benennen. Dann ist der Befehl nämlich immer gleich auszusprechen unabhängig der aktiven Activity. Andere würden vielleicht lieber "mach TV leiser" sagen wollen, was semantisch wahrscheinlich korrekter wäre. Wäre es nicht sinnvoll beides zu implementieren falls möglich?

dominik

Wenn set harmony off immer alles ausschaltet, dann kann ich das einfach bei jedem Device, egal ob XBox, TV, ... aktiv ist einfach senden.
Beim Lauter und Leiser müssen die Befehle wirklich innerhalb vom Hochkomma stehen? 'volumeUp' oder volumeUp?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

NePheus

Zitat von: dominik am 17 Mai 2020, 08:54:14
Wenn set harmony off immer alles ausschaltet, dann kann ich das einfach bei jedem Device, egal ob XBox, TV, ... aktiv ist einfach senden.
Richtig.

Zitat von: dominik am 17 Mai 2020, 08:54:14
Beim Lauter und Leiser müssen die Befehle wirklich innerhalb vom Hochkomma stehen? 'volumeUp' oder volumeUp?
Gerade ohne Hochkomma getestet, funktioniert auch. Beim Starten einer Activity kannst du auch entweder Hochkommas nutzen oder keine. Falls du keine nutzt, müssen Leerstellen aber durch einen Punkt ersetzt werden. z.B.
set harmony activity 'Fire TV'
oder
set harmony activity Fire.TV

Florian11

Zitat von: dominik am 16 Mai 2020, 07:48:52
Loesche mal das homebridgeMapping und teste es danach nochmals. HM-CC-RT-DN ist bereits integriert, jedoch sieht der etwas anders aus als deine Readings. Hast du an dem Device was angepasst? Eigentlich sollte da noch ein 4.ACTUAL_TEMPERATURE, 4.CONTROL_MODE, 4.BATTERY_STATE Reading vorliegen.

Hallo Dominik, ich habe nichts geändert es wurde automatisch von fhem erstellt und ich habe das homebridgeMapping jetzt mal gelöscht aber das hat auch nichts gebracht :(

Trotzdem danke schön für deine Hilfe.

Gruß Florian

dominik

Zitat von: NePheus am 17 Mai 2020, 09:01:59
Richtig.
Gerade ohne Hochkomma getestet, funktioniert auch. Beim Starten einer Activity kannst du auch entweder Hochkommas nutzen oder keine. Falls du keine nutzt, müssen Leerstellen aber durch einen Punkt ersetzt werden. z.B.
set harmony activity 'Fire TV'
oder
set harmony activity Fire.TV

Passt, kenne mich aus. Werde pruefen wie ich die Integration mache und melde mich dann.

Zitat von: Florian11 am 17 Mai 2020, 09:57:20
Hallo Dominik, ich habe nichts geändert es wurde automatisch von fhem erstellt und ich habe das homebridgeMapping jetzt mal gelöscht aber das hat auch nichts gebracht :(

Trotzdem danke schön für deine Hilfe.

Gruß Florian
Das homebridgeMapping wurde automatisch beim Anlegen des Devices erstellt? Kannst du das Device bitte testweise loeschen und nochmals anlegen (lassen)?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

hermann1514

Zitat von: dominik am 16 Mai 2020, 07:51:19
Wenn du das Reading DS18B20_Temperature in temperature umbenennst, dann funktioniert alles automatisch. Teste das mal bitte.


Hi. Habe ich gemacht. Aber in Google wird das Gerät als normaler Schalter für die Lampe angezeigt. So soll es ja auch sein.
Der Temperaturfühler ist nur als addOn an dem Gerät und misst die Temperatur vom Wasser.
Da wäre es doch am besten, wenn ich ein Dummy Device erzeugen könnte, bei dem das Reading immer aktualisiert wird und auch dementsprechend genannt werden kann (Pool).

Gruß
Hermann

dominik

In der Home App bekommst du keine Anzeige zur Temperatur, das geht aktuell nur beim Thermostat Typ. Wenn der Switch sonst nichts mit dem Pool zu tun hat, macht es wahrscheinlich Sinn ein eigenes dummy zu erstellen. Das dummy muss nur ein temperature Reading haben, dann sollte es automatisch erkannt werden.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

hermann1514

Zitat von: dominik am 18 Mai 2020, 17:01:33
In der Home App bekommst du keine Anzeige zur Temperatur, das geht aktuell nur beim Thermostat Typ. Wenn der Switch sonst nichts mit dem Pool zu tun hat, macht es wahrscheinlich Sinn ein eigenes dummy zu erstellen. Das dummy muss nur ein temperature Reading haben, dann sollte es automatisch erkannt werden.

Hi,
da ich bei einem Dummy ja kein fremdes Reading setzen kann, habe ich - dank MQTT - ein neues Device in FHEM erstellt mit den gleichen Settings. Als genericDevice habe ich Thermometer gesetzt und ein Userreading temperature erstellt.
Nun wird das Gerät in der Google Home App angezeigt, aber zusätzlich auch noch on off .
Wenn ich google jetzt frage, wie viel Grad hat der Pool, dann kommt Der Pool ist zur Zeit ausgeschaltet und hat 16 Grad.

Ich denke es liegt noch an dem Attribut setList - oder?
Dort ist zur Zeit folgendes gesetzt:

off:noArg    cmnd/sonoff30/POWER1 0
  on:noArg     cmnd/sonoff30/POWER1 1
  toggle:noArg cmnd/sonoff30/POWER1 2
  setOtaUrl:textField cmnd/sonoff30/OtaUrl $EVTPART1
  upgrade:noArg   cmnd/sonoff30/upgrade 1



Was muss ich denn da einsetzten, damit es nur als Thermometer erkannt wird?

Und einen noch: In der HomeApp wird eine Temperatur von 16 Grad angezeigt, aber in FHEM ist die Temperatur 15,8 - Google rundet also auf. Kann Google auch die genaue Temperatur anzeigen?

Vielen Dank.
Gruß
Hermann



dominik

Du kannst auch bei einem dummy readings nutzen. Einfach "setreading device reading value" nutzen.

Wenn das Device auch on/off hat, dann hast du vielleicht im dummy ein "setList on off" Attribut? Das Thermostat = off bekommt man bei Google leider nicht weg. Der sagt immer, dass das Thermostat aus ist. Einzige Moeglichkeit waere noch statt TemperatureSetting TemperatureControl zu nutzen. Das muss ich mir noch anschauen wie es dort ist.

Google kennt aktuell nur Temperaturen in 0,5 Grad Schritten, daher diese Ungenauigkeit.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

JF Mennedy

Hallo,

ich habe einen Füllstandsanzeiger für meinen Öltank. Das Gerät ist als Device TEK603 in fhem eingebunden :

Internals:
   DEF        /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
   DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
   FD         11
   FUUID      5c5b16bb-f33f-9a76-c9ec-70a037b6600abaca
   NAME       Oelstand
   NR         256
   PARTIAL   
   PORTSTATE  open
   STATE      2229 Liter
   TYPE       TEK603
   buffer     5349001602100b21260000c8256a003308b50bb82c82
   Helper:
     DBLOG:
       RemainingUsableLevel:
         DBLogging:
           TIME       1589882054.82924
           VALUE      2229
       RemainingUsablePercent:
         DBLogging:
           TIME       1589882054.82924
           VALUE      74.3
   OLDREADINGS:
   READINGS:
     2020-05-19 11:54:14   RemainingUsableLevel 2229
     2020-05-19 11:54:14   RemainingUsablePercent 74.3
     2020-05-19 11:54:14   Temperature     18.89
     2020-05-19 11:54:14   Time            11:33:38
     2020-05-19 11:54:14   TotalUsableCapacity 3000
     2020-05-19 11:54:14   Ullage          51
     2020-05-19 11:54:14   level           2229
     2020-05-19 11:54:14   percent         74.3
     2020-05-18 15:07:48   state           opened
Attributes:
   DbLogExclude .*
   DbLogInclude RemainingUsableLevel,RemainingUsablePercent
   alexaName  Ölstand
   alias      Oelstand
   comment    MBR:1,67,H,RemainingUsableLevel
   event-min-interval 3600
   event-on-change-reading RemainingUsableLevel,RemainingUsablePercent
   event-on-update-reading RemainingUsableLevel,RemainingUsablePercent
   gassistantName Ölstand
   group      Home State
   icon       sani_buffer_temp_down
   mqttDefaults base={"$base"}
   mqttPublish *:topic={"$base/$device/$name"}
   realRoom   Global
   room       00_Haus,20_Flur,61_Heizung,73_GoogleHome
   stateFormat RemainingUsableLevel Liter
   userReadings level { ReadingsNum($name,"RemainingUsableLevel",0) }, percent { ReadingsNum($name,"RemainingUsablePercent",0)


Ich würde gerne den Füllstand RemainingUsableLevel in Liter auch in Google Home integrieren, komme hier aber irgendwie nicht weiter...

Hätte da jemand eine Idee, um mich in die richtige Richtung zu stossen?

Vielen Dank,

Gruss Jan

R1k4rd

Hey,

das devStateIcon ist super, das normale Google Assistant Icon brauche ich leider nicht, immer wenn ich das Icon einfach lösche und einen Neustart von Fhem mache legt sich das Icon immer wieder erneut an, soll das so sein? Ansonsten hat das Update vom Client auf 3.0.1 bei mir ohne Probleme funktioniert!

localHome ist wie du bereits erwartet hast bei mir noch immer auf inactive weil die Sonos Komponenten es bislang scheinbar leider nicht unterstützen, ich hoffe aber mal dass das seitens Sonos noch kommt (gibt ja bald eine neue Sonos App und ein größeres Update der Geräte ;D).

@smoki3 falls du ein DOIF für den SamsungTV brauchst um mit WOL ein/auszuschalten sag bescheid, ich kann dir meins gerne mal hier rein stellen, auch wenn es nur ein sehr einfaches ist.

Und dann noch so eine allgemeine Frage: in wie weit kann ich mir selbst mal so eine Meldung über eine fast leere Batterie erzwingen in der App bzw. ist es auch möglich diese Meldung irgendwie als Push Notification zu missbrauchen? Also z.B. Fhem als Gerät anlegen und dann beliebige Nachrichten bekommen, wie es z.B. bei Pushover der Fall ist?

LG Richard

dominik

Zitat von: JF Mennedy am 19 Mai 2020, 11:57:45
Hallo,

ich habe einen Füllstandsanzeiger für meinen Öltank. Das Gerät ist als Device TEK603 in fhem eingebunden :

Internals:
   DEF        /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
   DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0
   FD         11
   FUUID      5c5b16bb-f33f-9a76-c9ec-70a037b6600abaca
   NAME       Oelstand
   NR         256
   PARTIAL   
   PORTSTATE  open
   STATE      2229 Liter
   TYPE       TEK603
   buffer     5349001602100b21260000c8256a003308b50bb82c82
   Helper:
     DBLOG:
       RemainingUsableLevel:
         DBLogging:
           TIME       1589882054.82924
           VALUE      2229
       RemainingUsablePercent:
         DBLogging:
           TIME       1589882054.82924
           VALUE      74.3
   OLDREADINGS:
   READINGS:
     2020-05-19 11:54:14   RemainingUsableLevel 2229
     2020-05-19 11:54:14   RemainingUsablePercent 74.3
     2020-05-19 11:54:14   Temperature     18.89
     2020-05-19 11:54:14   Time            11:33:38
     2020-05-19 11:54:14   TotalUsableCapacity 3000
     2020-05-19 11:54:14   Ullage          51
     2020-05-19 11:54:14   level           2229
     2020-05-19 11:54:14   percent         74.3
     2020-05-18 15:07:48   state           opened
Attributes:
   DbLogExclude .*
   DbLogInclude RemainingUsableLevel,RemainingUsablePercent
   alexaName  Ölstand
   alias      Oelstand
   comment    MBR:1,67,H,RemainingUsableLevel
   event-min-interval 3600
   event-on-change-reading RemainingUsableLevel,RemainingUsablePercent
   event-on-update-reading RemainingUsableLevel,RemainingUsablePercent
   gassistantName Ölstand
   group      Home State
   icon       sani_buffer_temp_down
   mqttDefaults base={"$base"}
   mqttPublish *:topic={"$base/$device/$name"}
   realRoom   Global
   room       00_Haus,20_Flur,61_Heizung,73_GoogleHome
   stateFormat RemainingUsableLevel Liter
   userReadings level { ReadingsNum($name,"RemainingUsableLevel",0) }, percent { ReadingsNum($name,"RemainingUsablePercent",0)


Ich würde gerne den Füllstand RemainingUsableLevel in Liter auch in Google Home integrieren, komme hier aber irgendwie nicht weiter...

Hätte da jemand eine Idee, um mich in die richtige Richtung zu stossen?

Vielen Dank,

Gruss Jan

Dafuer gibt es leider im Moment keine Funktion. Man koennte es jetzt auf Temperatur, Volume oder Brightness mappen, ist aber nicht korrekt. Fuellstandsanzeige fehlt leider bei Google noch.

Zitat von: R1k4rd am 19 Mai 2020, 12:19:45
das devStateIcon ist super, das normale Google Assistant Icon brauche ich leider nicht, immer wenn ich das Icon einfach lösche und einen Neustart von Fhem mache legt sich das Icon immer wieder erneut an, soll das so sein? Ansonsten hat das Update vom Client auf 3.0.1 bei mir ohne Probleme funktioniert!
Danke fuer den Hinweis, das hatte ich bei mir zum Testen drin. Ich werde das korrigieren, damit man icon als auch devStateIcon auch selbst definieren/aendern kann.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

a_quadrat

Hi,

wie muss die Syntax im homebridgeMapping aussehen, wenn ich z.B. "InputSelector" und "Modes" zusammen verwenden will?

VG Andreas