39_gassistant.pm (Google Assistant, Google Home)

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

Vorheriges Thema - Nächstes Thema

dominik

Ah, das war der Grund mit "off". Sollte jetzt funktionieren, einfach ein reload machen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

a_quadrat

Zitat von: dominik am 11 Oktober 2020, 19:52:31
Super! Folgende Readings bräuchtest du:
- rgb
- ct
- colormode
- state

State sollte gleich funktionieren. Die anderen Readings muss ich dann noch aktivieren, da ich für LightGroup vorerst keine Readings hinterlegt habe. Kann ich aber gerne ergänzen.

Hallo Dominik,

ich habe die Readings jetzt in meiner Gruppe zugefügt. Musst du jetzt noch was machen?

Zitat
Das geht mit dem offiziellen googlecast Modul. Eine Weiterentwicklung davon findest du aktuell hier:
https://github.com/dominikkarall/fhem_pythonbinding

Du hast von einer Weiterentwicklung deines googlecast Moduls geschrieben. Macht es Sinn schon umzusteigen? Welche Vorteile gibt es?

VG Andreas

kriegerkl

#2327
Bei LaCross-Devices kann man z.B. über die Frage "Ok Google wie ist die Temperatur im Wohnzimmer" sehr gut die Temperatur abfragen.
Allerdings weiß ich nicht, wie man die releative Feuchte abfragen kann.

Nach Logfile wird die Feuchte übergeben:
reportstate_v2: {"requestId":"...","agentUserId":"google-oauth2|.....","payload":{"devices":{"states":{"LaCrosse_Wohnzimmer":{"temperatureAmbientCelsius":23.6,"temperatureSetpointCelsius":23.6,"status":"SUCCESS","humidityAmbientPercent":52,"descriptiveCapacityRemaining":"FULL","online":true},"status":"SUCCESS"}}}}

Dann noch die Frage, warum LaCross-Devices in der Home-App als Wappen dargestellt werden und nicht als Sensor wie das 1-wire-Device?
Liegt es daran, dass es mehrere Werte enthält, also Temperatur, Feuchte und Batteriestatus?

Ich würde auch gerne die Werte meiner Wetterstation abfragen können Device-Type: WS3600

{
  "Arg":"Wetterstation",
  "Results": [
  {
    "Name":"Wetterstation",
    "PossibleSets":"",
    "PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 model:WS3600,WS2300,WS1080,WS3080 assistantName:textField cmdIcon devStateIcon:textField-long devStateStyle gassistantName:textField genericDeviceType:aircondition,coffeemaker,ac_unit,aircooler,airfreshener,airpurifier,audio_video_receiver,awning,bathtub,bed,blender,blinds,boiler,camera,carbon_monoxide_detector,charger,closet,coffee_maker,cooktop,curtain,dehumidifier,dehydrator,dishwasher,door,drawer,dryer,fan,faucet,fireplace,freezer,fryer,garage,gate,grill,heater,hood,humidifier,kettle,light,lock,remotecontrol,mop,mower,microwave,multicooker,network,outlet,oven,pergola,petfeeder,pressurecooker,radiator,refrigerator,router,scene,sensor,securitysystem,settop,shutter,shower,smoke_detector,sousvide,speaker,streaming_box,streaming_stick,streaming_soundbar,soundbar,sprinkler,standmixer,switch,tv,thermostat,vacuum,valve,washer,waterheater,waterpurifier,watersoftener,window,yogurtmaker homebridgeMapping:textField-long icon realRoom:textField sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
    "Internals": {
      "DEF": "\"ssh fhem@192.168.178.41 /volume1/wetterdaten/getWS3600Daten.sh\" 900",
      "DeviceName": "ssh fhem@192.168.178.41 /volume1/wetterdaten/getWS3600Daten.sh",
      "FUUID": "5f85d260-f33f-e8b8-6d9e-7eb5e03b02277c82",
      "LastRead": "2020-10-13 19:00:00",
      "NAME": "Wetterstation",
      "NR": "84",
      "STATE": "T: 7.5 H: 86 W: 0 R: 3573.9 Ti: 24.3 Hi: 47",
      "TYPE": "WS3600",
      "Timer": " 900"
    },
    "Readings": {
      "DTime": { "Value":"13-Oct-2020 16:26:59", "Time":"2020-10-13 19:00:00" },
      "Rain-total": { "Value":"3573.9", "Time":"2020-10-13 19:00:00" },
      "Temp-inside": { "Value":"24.3", "Time":"2020-10-13 19:00:00" },
      "Temp-outside": { "Value":"7.5", "Time":"2020-10-13 19:00:00" },
      "Wind-Dir": { "Value":"6", "Time":"2020-10-13 19:00:00" },
      "Wind-Direction-Text": { "Value":"SE", "Time":"2020-10-13 19:00:00" },
      "Wind-Gust": { "Value":"0", "Time":"2020-10-13 19:00:00" },
      "Wind-Speed": { "Value":"0", "Time":"2020-10-13 19:00:00" },
      "rel-Humidity-inside": { "Value":"47", "Time":"2020-10-13 19:00:00" },
      "rel-Humidity-outside": { "Value":"86", "Time":"2020-10-13 19:00:00" },
      "rel-Pressure": { "Value":"1013", "Time":"2020-10-13 19:00:00" }
    },
    "Attributes": {
      "alias": "Außen",
      "room": "GoogleAssistant"
    }
  }  ],
  "totalResultsReturned":1
}

Könnte ich mir für dieses Device auch ein eigenes homebridgeMapping schreiben, das verschiedene Traits bedient? Wenn ja, wie würde man das angehen?

dominik

Zitat von: a_quadrat am 13 Oktober 2020, 11:42:44
Du hast von einer Weiterentwicklung deines googlecast Moduls geschrieben. Macht es Sinn schon umzusteigen? Welche Vorteile gibt es?
Aktuell Youtube App Support inkl. Playlist und Queue. Damit hat man auch keine Ladezeit mehr bei Videos. Zukuenftig dann auch Spotify, das habe ich aber noch nicht fertig integriert.
Du kannst durchaus schon mal testen und beiden Module (alt und neu) parallel nutzen. Wie auf github steht, ist es noch Beta und kann daher durchaus zu Fehlern fuehren.

@kriegerkl
Bei mir ging Luftfeuchtigkeitsabfrage auch nicht. Ich habe es gerade nochmals getestet, jetzt klappt es: Wie hoch ist die Luftfeuchtigkeit im Wohnzimmer?
Ich bekomme zwar eine englische Antwort, aber die ist korrekt.

Das Wappen Symbol in der App liegt daran, dass Google Sensoren in der Home App noch nicht unterstuetzt. Wie wird das 1-wire Device dargestellt? Wahrscheinlich noch als Thermostat, oder?

Sind die Readings aus dem WS3600 Modul alle immer gleich? Oder sind die von dir angepasst? Wenn es Standard ist, dann kann ich es integrieren, ansonsten bitte ueber homebrigeMapping mit den Konfiguration Infos aus dem Wiki (ThemperatureControl, Humidity).
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

kriegerkl

#2329
Bei mir funktioniert die Luftfeuchtigkeitsabfrage z.B. "Wie hoch ist die Luftfeuchtigkeit im Wohnzimmer?" nicht. Woran kann das liegen? Hier scheint ja Google generell noch Probleme zu haben. Kannst du dazu einen Fehler bei denen einstellen?
Jetzt habe ich noch herausgefunden, dass, wenn man den genericDeviceType von sensor auf thermostat ändert, die Luftfeuchtigkeit entsprechend abfragen kann. Er antwortet dann sogar richtig auf deutsch. Das einzige, was noch blöd ist, dass er bei der Temperaturabfrage immder noch sagt "Das Wohnzimmer ist ausgeschaltet bei einer aktuellen Temperatur von 23 Grad". Vielleicht müsste man hier im Trait noch queryOnlyTemperatureControl mit true angeben. Das müsstest Du wahrscheinlich noch umsetzen oder lassen sich die Parameter der Traits im homebridgeMapping einfach setzen?

Auf jeden Fall interessant, dass der genericDeviceType die Antwort on Google beeinflusst.

Ja, das 1-wire Device wird als Thermostat dargestellt. Schön ist, dass hier auch der aktuelle Temperaturwert in der Home-App angezeigt wird. Unschön ist, dass bei der Abfrage der Temperatur Google immer zusätzlich sagt, dass das Gerät aus ist s.o.

Zum Device WS3600 habe ich mir einmal die Comand-Ref https://fhem.de/commandref_DE.html#WS3600 angeguckt. Die Readings werden wohl danach erzeugt, welche Werte die Wetterstation liefert.
Von den Traits werden ja sowieso nicht alle Werte unterstützt. Gibt es die Möglichkeit Luftdruck (rel-Pressure) und Regenmenge (Rain-total) abfragen zu können?
Wie würde man die Werte für Innentemperatur + Feuchte Innen und Außentemperatur + Feuchte Außen trennen? Müssen dazu 2 Geräte angelegt werden?

Ich habe jetzt einmal für die Außentemperatur und Außenfeuchte ein homebridgeMapping angelegt. Das funktioniert.

      "DTime": { "Value":"13-Oct-2020 16:26:59", "Time":"2020-10-13 19:00:00" },
      "Rain-total": { "Value":"3573.9", "Time":"2020-10-13 19:00:00" },
      "Temp-inside": { "Value":"24.3", "Time":"2020-10-13 19:00:00" },
      "Temp-outside": { "Value":"7.5", "Time":"2020-10-13 19:00:00" },
      "Wind-Dir": { "Value":"6", "Time":"2020-10-13 19:00:00" },
      "Wind-Direction-Text": { "Value":"SE", "Time":"2020-10-13 19:00:00" },
      "Wind-Gust": { "Value":"0", "Time":"2020-10-13 19:00:00" },
      "Wind-Speed": { "Value":"0", "Time":"2020-10-13 19:00:00" },
      "rel-Humidity-inside": { "Value":"47", "Time":"2020-10-13 19:00:00" },
      "rel-Humidity-outside": { "Value":"86", "Time":"2020-10-13 19:00:00" },
      "rel-Pressure": { "Value":"1013", "Time":"2020-10-13 19:00:00" }

R1k4rd

#2330
Zitat von: dominik am 12 Oktober 2020, 23:33:22
Ah, das war der Grund mit "off". Sollte jetzt funktionieren, einfach ein reload machen.
Es funktioniert leider noch immer nicht und der Fehler
gassistant-fhem-lastServerError
heaterRichard:Error: 1.SET_POINT_TEMPERATURE not a number: off
2020-10-14 12:43:07

besteht weiterhin. Auf off setzten geht, sobald ich dann eine Temperatur einstellen möchte bekommen ich den Fehler. Es fällt mir irgendwie schwer zuzuordnen woran es liegen könnte :-[

{
   "CurrentTemperature": {
     "device":"thermometerRichard",
     "reading":"temperature"
   }
}

Als homebridgeMapping habe ich ausprobiert, funktioniert leider nicht. Weder die Ist-Temperatur des Thermostats, noch die des im homebridgeMapping definierten Gerätes wird in der App angezeigt.

//Edit: Gerade ein Fhem Update gemacht und dementsprechend einen Restart, das Thermostat war vor dem Restart off. Nach dem Restart könnte ich in der App jetzt richtig sehen das es aus ist, allerdings nichts steuern. Ein Sprachbefehl mit der gewünschten Temperatur brachte dann folgenden Fehler
gassistant-fhem-lastServerError
Command action.devices.commands.ThermostatTemperatureSetpoint not configured for device heaterRichard
2020-10-14 12:57:09

dominik

Nimm bitte das homebridgeMapping nochmals raus und mach ein reload. Teste danach mal ob on/off funktioniert.

Wenn das geht, machen wir mit homebridgeMapping weiter.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

R1k4rd

Ich hatte es vorher schon getestet ohne das homebridgeMapping um den Fehler an dieser Stelle auszuschließen. Habe es jetzt nochmal raus genommen, der besagt Fehler bleibt leider.

dominik

Ok, danke. Ich habe den Fehler glaube ich. Das Problem ist, das Mapping von SET_POINT_TEMPERATURE, da dort keine Zahl mehr drin steht sondern off. Habe ich es richtig in Erinnerung, dass im Reading control immer die Temperatur steht? Dann wuerde ich das verwenden.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

R1k4rd

Genau, in control steht immer die Soll-Temperatur, allerdings kein on/off. Alternativ zu "SET_POINT_TEMPERATURE" waren noch hmstate und state, da stehen die Temperaturen sowie auch on/off im Reading, bin mir aber unsicher in wie weit es dann klappen würde weil sich die drei Readings augenscheinlich nicht unterscheiden bei mir ???

dominik

Passt, dann kann ich control verwenden. Ich brauch genau ein Reading wo immer nur die Soll Temperatur drin steht.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Bitte reload machen und nochmals testen. Danke!
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

R1k4rd

Ähm ja, was soll ich sagen.. es funktioniert.. zumindest soweit es dir von deiner Seite möglich ist :D
Ich habe die Heizung immer automatisiert verwendet also meistens nur sehr selten manuel die Temperatur verstellt. Ich merke jetzt erst was bei ein/ausschalten sowie dem Ändern des Modus wirklich im Fhem Modul passiert. Das ist für mich etwas durcheinander und weicht defintiv auch von den Befehlen die Homematic selbst verwendet ab. Das alles zu erklären würde dir nicht helfen, auch weil es mich selbst noch an der ein oder anderen Stelle verwirrt...

Funktioniert:
- Temperatur einstellen
- ausschalten
- anzeigen/abfragen der aktuellen Ist-Temperatur
- "Stell die Heizung auf automatisch"

Funktioniert noch nicht/nicht richtig:
- einschalten
- Heizen in der App stellt den Modus auf manuel?
- "Stell die Heizung auf heizen" aktiviert den boost Modus?
- "Stelle die Heizung auf manuel"

Was genau wird denn für ein Befehl übergeben für das Einschalten? (Soweit ich das sehen konnte setzt es den manuellen Modus aktiv?). Falls das so ist, lande ich an der Stelle halt zumindest in der App in einer Art "Trap". Wenn die Temperatur auf off gesetzt ist und der manuelle Modus eingeschalten wird, bleibt er vom Fhem Modul her auf off stehen und danach kann ich über die App keine Temperaturänderung mehr vornehmen.

Könntest du bitte folgendes ändern:
für on: set <device> control 21.0
Also das es einfach für on eine feste Temperatur übergibt, sicher vorerst unschön aber durch die Umsetzung im Fhem Modul gerade nicht anders machbar soweit ich das herausfinden konnte.

minThresholdCelsius  12 (normal sind unter 12 Grad möglich aber eigentlich sinnlos, mit 12 sollte die Mitte in der UI auch wieder bei 21 liegen.)
maxThresholdCelsius  30

Scheint vorerst unwichtig zu sein, allerdings führen die Werte > 30 Grad zu Fehlern im Modul des Thermostats.

Danach würde ich dann nochmal genauer die Modi testen. Wie sieht das bei dir eigentlich aus, wenn du ein Gerät fest mit aufnimmst? Also welche Form hat das Ganze - wie der Code des homebridgeMapping? Könnte man das gegebenfalls selbst für ein Gerät erstellen, ausprobieren und dir dann schicken? Klar bist du immer super schnell und erfüllst jedem seine Wünsche aber es ist für dich sicher auch extrem schwer nur anhand von Feedback und ohne dem Gerät selbst das richtige zu implementieren.

dominik

 - einschalten: Wird korrigiert, sende dann "on", weil dann wird der letzte Zustand hergestellt
- Heizen: Muss ich leider auf manual lassen, da Google es so vorsieht. (Heizen = manuelles Heizen, Auto = Heizen anhand von Zeitplänen - in der App wird Auto leider nicht angezeigt)
- "Stell die Heizung auf heizen": Das liegt wahrscheinlich an der Sprache, da ich für "boost" "schnell heizen" als Synonym hinterlegt hatte. Ich werde das mal entfernen.
- "Stelle die Heizung auf manuel": Das unterstützt Google leider nicht, da musst du dann leider "heizen" sagen
Ich stelle es heute ca. Mitternacht online.

Die möglichen Modes von Google sind hier gelistet: https://developers.google.com/assistant/smarthome/traits/temperaturesetting

Wegen Temperaturbereich: Aktuell übergebe ich 4.5 - 30 Grad. Ich glaube die Home App passt sich da jedoch leider nicht an, die zeigt immer 10 - glaub 32.

Sehr gerne können wir zum Testen homebridgeMapping einsetzen. Es ist so, dass im Code bei mir das Mapping sehr ähnlich aussieht. In manchen Fällen versuche ich natürlich per Code genaue Werte aus setList, Internals, etc. auszulesen, das geht dann nur im Code. Das homebridgeMapping kann hier entnommen werden: https://wiki.fhem.de/wiki/Google_Assistant_FHEM_Connect#Konfiguration
Dort muss ich noch etwas aufräumen, da dort noch homebridgeMappings im alten Format (nicht JSON) vorliegen. Bei Fragen dazu, einfach melden, dann versuche ich die Infos im Wiki besser zu hinterlegen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

SouzA

Moin,

ich hätte da gern mal wieder eine Auffälligkeit.
Bei meinen Schalt-Dummys werden die Zustände nicht richtig erfasst.
Bedeutet:
Wenn fhem einen Schalter einschaltet, wird dies in der App richtig angezeigt.
Wenn fhem den Schalter wieder ausschaltet, bleibt in der App der Schalter weiterhin an.
Der Schalter wird aus der App heraus nicht getoggelt. Soll heißen, wenn man jetzt auf den Schalter (noch on in der App, Dummy in fhem off) in der App drückt, wird der Schalter in der App ausgeschaltet, aber in fhem bleibt der Dummy auch weiterhin aus.
Die nächste Betätigung in der App schaltet den Dummy wieder ein.

Hier ein Dummy:
Internals:
   NAME       du_ku_Radio_ein_aus
   STATE      off
   TYPE       dummy
   READINGS:
     2020-10-15 19:58:24   state           Aus
Attributes:
   alias      Radio
   devStateIcon on:general_an@green off:general_aus@red
   event-on-update-reading state
   eventMap   An:on Aus:off
   genericDeviceType switch
   homebridgeMapping On=state,cmdOn=on,cmdOff=off
   icon       it_radio
   realRoom   Küche
   room       GoogleHome
   setList    An,Aus
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
   webCmd     An:Aus


Liegt das am Device oder an Google?
Thx und bis denn
SouzA
Raspi 4, EnOcean TCM310 USB, HM-MOD-UART-USB, Jeelink, hue, AMAD, fully, FRITZBOX, Signalbot, VIERA, Presence BT/Mac, TPLink, Gassistant, Shelly, fhempy, ZigBee