39_gassistant.pm (Google Assistant, Google Home)

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

Vorheriges Thema - Nächstes Thema

RomanB

Du gehst auf dein Device und da ist weiter unten ein Button "attr" und ein Dropdown mit zig Attributen "room", "webCmd" etc. Da gibt es auch "homebridgeMapping". Das auswählen und rechts auf das Textfeld daneben klicken. Dann kannst du den Wert eintragen. Danach mit Klick auf "attr" übernehmen und speichern. Das landet dann automatisch in deiner fhem.cfg.

SirMarvin

#2101
Jetzt mal hier und da was zusammen gesucht - Stichwort war das "homebridgeMapping" welches wohl das "Auto-Pilot-Mapping" zerstoert.
Input0:
https://developers.google.com/assistant/smarthome/traits/temperaturecontrol
ZitatTemperatureControl:
{
   "TemperatureControlSetCelsius": {"reading": "targetTemperature", "cmd": "desired", "minCelsius": 0, "maxCelsius": 300, "stepCelsius": 10, "formatUx": "C"},
   "TemperatureControlAmbientCelsius": {"reading": "currentTemperature"}
}
Input1:
https://wiki.fhem.de/wiki/Google_Assistant_FHEM_Connect#Konfiguration
ZitatHumiditySetting   
{
"CurrentRelativeHumidity": {
  "reading": "humidity"
},
"TargetRelativeHumidity": {
  "reading": "targetHumidity",
  "cmd": "humidity"
}
}

Input2:
https://forum.fhem.de/index.php/topic,48558.0.html

Zitat
1 device -> 1 service, 2 characteristics (thermostat)
attr <thermostat> genericDeviceType thermostat
attr <thermostat> homebridgeMapping TargetTemperature=target::target,minValue=18,maxValue=25,minStep=0.5
                                     CurrentTemperature=myTemp:temperatur

##

Frederiks Try#01:
Lacrosse Status


attr 1_SchlafzimmerNord homebridgeMapping [POPup hier, dann input:]
CurrentTemperature=temperature\
CurrentRelativeHumidity=humidity\

 
# Der Sensor vorher:
.Internals:
CFGFN:/opt/fhem/FHEM/fhemLaCrosse.cfg
DEF:18
FUUID:5c9543fc-f33f-11b4-9613-2a92c710bdf15fb7
IODev:myJeeLinkV3C
LASTInputDev:myJeeLinkV3C
LaCrosse_lastRcv:2020-08-23 20:20
MSGCNT:783
NAME:1_SchlafzimmerNord
NR:59
STATE:T: 26.5 H: 42
TYPE:LaCrosse
addr:18
battery_new:0
corr1:0
corr2:0
myJeeLinkV3C_MSGCNT:783
myJeeLinkV3C_RAWMSG:OK 9 24 1 4 241 42
myJeeLinkV3C_TIME:2020-08-23 20:20
previousH:42
previousT:26.5
sensorType:0=T(H)
.Readings:
battery:ok:2020-08-23 20:53
humidity:42:2020-08-23 20:53
state:T: 26.3 H: 42:2020-08-23 20:51
temperature:26.3:2020-08-23 20:53
.Attributes:
IODev:myJeeLinkV3C
group:GGnis24i
icon:scene_sleeping_alternat
room:1ST_Floor,GGnis24,GoogleAssistant,LaCrosse

###
Aenderung Sensor nach attr:

.Atributes:
homebridgeMapping
CurrentTemperature=temperature\
CurrentRelativeHumidity=humidity\


Mit NextLine/Zeilenumbruch dank des Pop-ups Editors.

Ich schau mal ob das funktioniert - noch bekomme ich immer gesagt, mein Thermostat ist aus...
##
Hauptfrage: Das wird alles nach dem "attr" system fuer den Sensor gemacht, und damit auch mit dem einfachen Coding:
CurrentTemperature=temperature
CurrentRelativeHumidity=humidity

Ohne die {
} und was alles aus Input 0 oder 1 (siehe links oben)
##

Update1: Hinter CurrentTemperature=temperature stand ein \ - das geht schonmal garnicht.. ggf war das nur ein hinweis auf den Zeilenumbruch.
Update2: GH sagt immer noch "ist aus" dazu...

amenomade

#2102
Mach alle homeBridgeMappings weg und definiere das Attribut genericDeviceType auf thermostat.
Nach einem reload sollte es automatisch erkannt werden.

Wenn nicht, in der Log schauen, wie und mit welchen Characteristics es erkannt wurde.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

SirMarvin

#2103
Zitat von: amenomade am 23 August 2020, 21:54:04
Mach alle homeBridgeMappings weg und definiere das Attribut genericDeviceType auf thermostat.
Nach einem reload sollte es automatisch erkannt werden.

Wenn nicht, in der Log schauen, wie und mit welchen Characteristics es erkannt wurde.

Hallo,

wurde auf thermostat umgestellt:

genericDeviceType:thermostat

Nach FHEM Neustart und re-sync immer noch "ausgeschaltet" :/

Update1: gleiches beim setzen von genericDeviceType:thermostat bei einem 2. LaCrosse Thermostat

amenomade

#2104
Was sagt die Log bei der Erkennung?

Oh, und sorry: ich meinte thermometer, nicht thermostat! genericDeviceType thermometer
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

SirMarvin

#2105
Zitat von: amenomade am 23 August 2020, 23:53:47
Was sagt die Log bei der Erkennung?

Oh, und sorry: ich meinte thermometer, nicht thermostat! genericDeviceType thermometer

Hi, also im dropdown gibts nur thermostat, auch im

"Supported Google Device Types:" taucht nur thermostat auf.

Wegen Log - gibts da ein CLI CMD?

in der gassistant-2020-08.log taucht da nicht viel auf zu dem Geraet, nur:
[23/08/2020, 16:10:29] reportstate_v2: {"requestId":"488068405668","agentUserId":"google-oauth2|114911016824884451863","payload":{"devices":{"states":{"1_SchlafzimmerNord":{"thermostatMode":"off","thermostatTemperatureAmbient":26.7,"thermostatHumidityAmbient":42,"humidityAmbientPercent":42,"descriptiveCapacityRemaining":"FULL","online":true},"status":"SUCCESS"}}}}

amenomade

Ok sorry, vielleicht habe ich google assistant und Alexa vertauscht. Geht das mit "sensor" ?

Aber dein Gerät scheint zumindest die Werte zu melden? Was hast Du jetzt genau für Attribute gesetzt (am besten, "list" vom Device) und was sagt die Log bei einem "reload" (das was Du hier kopiert hast hast sieht nicht so aus wie die Log der Erkennung, sondern eher die laufende Meldung der Werte
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

dominik

Das Problem mit der "ausgeschaltet" Ansage von Google liegt bei Google selbst. Laut Google Definition haben Thermostate einen Status und dieser wird dann (auch wenn dieser aus ist) wiedergegeben.

Für Sensoren, die keinen Status aus/... haben, sollte man laut Google TemperatureControl (https://developers.google.com/assistant/smarthome/traits/temperaturecontrol) verwenden, da gab es damals noch keine Anzeige in der Home App, daher habe ich alle standardmäßig als TemperatureSetting integriert.

Probier mal folgendes (selbst nicht getestet) im homebridgeMapping
{
   "TemperatureControlAmbientCelsius": {"reading": "temperature"}
}

genericDeviceTypes=sensor
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

SouzA

Moin,
Wird das beim FHEM dann auch mit dem Kamera-Stream funktionieren?
https://www.googlewatchblog.de/2020/08/google-home-neue-features/

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

dominik

Zitat von: SouzA am 28 August 2020, 09:47:21
Moin,
Wird das beim FHEM dann auch mit dem Kamera-Stream funktionieren?
https://www.googlewatchblog.de/2020/08/google-home-neue-features/

Bis denn
SouzA
Ja, solange der Kamera Stream jetzt schon funktioniert, wird der auch in der neuen Übersicht dargestellt werden. Keine weitere Anpassung erforderlich.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

SouzA

Hast du ne Ahnung ab welcher App-Version das funktionieren soll?
Hab Verion 2.27.1.9 und hier wird noch auf Chromecast verwiesen...

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

SirMarvin

Zitat von: dominik am 27 August 2020, 17:39:33
Das Problem mit der "ausgeschaltet" Ansage von Google liegt bei Google selbst. Laut Google Definition haben Thermostate einen Status und dieser wird dann (auch wenn dieser aus ist) wiedergegeben.

Für Sensoren, die keinen Status aus/... haben, sollte man laut Google TemperatureControl (https://developers.google.com/assistant/smarthome/traits/temperaturecontrol) verwenden, da gab es damals noch keine Anzeige in der Home App, daher habe ich alle standardmäßig als TemperatureSetting integriert.

Probier mal folgendes (selbst nicht getestet) im homebridgeMapping
{
   "TemperatureControlAmbientCelsius": {"reading": "temperature"}
}

genericDeviceTypes=sensor

Hallo,
test ich gleich mal, ich glaube aber das wird, wie du sagst, bei Google schon falsch angelegt. Sensor hatte ich als dev.type schon mal ausprobiert,
ausse rdas er die Luftfeuchtigkeit generell nicht mehr hatte, war das kein Unterschied fuer Google.

dominik

Zitat von: juemuc am 22 August 2020, 15:26:49
Hallo Dominik,
anbei das jsonlist2 von einem "Rollo-Device":
{
  "Arg":"Rollo_Buero",
  "Results": [
  {
    "Name":"Rollo_Buero",
    "PossibleSets":"pct:0,25,50,75,100",
    "PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 disable disabledForIntervals readingList setExtensionsEvent:1,0 setList useSetExtensions event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading alexaName alexaProactiveEvents:1,0 alexaRoom assistantName:textField cmdIcon devStateIcon devStateIcon:textField-long devStateStyle gassistantName:textField genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock,scene,ac_unit,aircondition,airfreshener,airpurifier,awning,bathtub,bed,blender,blinds,boiler,camera,carbon_monoxide_detector,charger,closet,coffee_maker,coffeemaker,cooktop,curtain,dehumidifier,dehydrator,dishwasher,door,drawer,dryer,fan,faucet,fireplace,fryer,gate,grill,heater,hood,humidifier,kettle,remotecontrol,mop,mower,microwave,multicooker,network,oven,pergola,petfeeder,pressurecooker,radiator,refrigerator,router,securitysystem,settop,sensor,shutter,shower,smoke_detector,sousvide,sprinkler,standmixer,tv,vacuum,valve,washer,waterheater,waterpurifier,watersoftener,yogurtmaker homebridgeMapping:textField-long icon realRoom:textField sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
    "Internals": {
      "FUUID": "5ca8a643-f33f-ca7c-316a-4b986d7ffff4e837",
      "NAME": "Rollo_Buero",
      "NR": "218",
      "STATE": "pct 0",
      "STILLDONETIME": "0",
      "TYPE": "dummy"
    },
    "Readings": {
      "pct": { "Value":"0", "Time":"2020-08-22 13:51:30" },
      "state": { "Value":"pct 0", "Time":"2020-08-22 13:51:30" }
    },
    "Attributes": {
      "alexaName": "Rollo Büro",
      "alias": "Rollo Büro",
      "assistantName": "Rollo im Büro",
      "devStateIcon": "{my $state = ReadingsVal(\"HMIP_SWDO_0000DA498D425C\",\"state\",\" \");; if ($state eq \"open\") {\"pct.0:fts_roof_window_shutter_0\u005c@red pct.25:fts_roof_window_shutter_02\u005c@red pct.50:fts_roof_window_shutter_05\u005c@red pct.75:fts_roof_window_shutter_07\u005c@red pct.100:fts_roof_window_shutter_10\u005c@red pct.*:unknown\"} else {\"pct.0:fts_roof_window_shutter_0 pct.25:fts_roof_window_shutter_02 pct.50:fts_roof_window_shutter_05 pct.75:fts_roof_window_shutter_07 pct.100:fts_roof_window_shutter_10 pct.*:unknown\"}}",
      "genericDeviceType": "blind",
      "group": "HM Funkschalter",
      "homebridgeMapping": "clear CurrentPosition=pct,minValue=0,maxValue=100,minStep=25\nTargetPosition=pct,minValue=0,maxValue=100,minStep=25,cmd=pct\nOpenClose=state,cmdOpen=pct 0,cmdClose=pct 100",
      "icon": "it_remote@black",
      "oldreadings": "pct",
      "readingList": "state",
      "room": "Alexa,Büro,GoogleAssistant,Schaltzentrale",
      "setList": "pct:0,25,50,75,100",
      "sortby": "01",
      "userReadings": "pct {ReadingsNum($name,\"state\",\"0\")}",
      "webCmd": "pct",
      "webCmdLabel": "Prozent :"
    }
  }  ],
  "totalResultsReturned":1
}


Viele Grüße
Jürgen

Hi,
gibt es einen Grund wieso du nicht das Device selbst in Google Assistant hinzufügst? Weil beim dummy Device kann ich leider nicht viel automatisch erkennen, da braucht man ein homebridgeMapping. Probier mal das hier
{
  "OpenClose": {
    "reading": "pct",
    "values": ["/^0/:CLOSED", "/.*/:OPEN"],
    "cmdOpen": "pct 100",
    "cmdClose": "pct 0"
  },
  "TargetPosition": {
    "reading": "pct",
    "cmd": "pct",
    "invert": true
  },
  "CurrentPosition": {
    "reading": "pct",
    "invert": true
  }
}

Falls es dann noch falsch herum ist, nimm einfach das "invert" raus.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

#2113
Zitat von: juemuc am 22 August 2020, 15:31:40
Hallo Dominik,

und hier das jsonlist2 für einen Fensterkontakt:
{
  "Arg":"HM_Sec_SCo_OEQ0424862",
  "Results": [
  {
    "Name":"HM_Sec_SCo_OEQ0424862",
    "PossibleSets":"clear config defaults:noArg control datapoint rpcparameter devstate toggle:noArg attrTemplate:?,speechcontrol_general_naming_master_template,speech_recognition_general_naming_master_template",
    "PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 IODev ccuaggregate:textField-long ccucalculate:textField-long ccuflags:multiple-strict,ackState,logCommand,nochn0,trace ccureadingfilter:textField-long ccureadingformat:name,namelc,address,addresslc,datapoint,datapointlc ccureadingname:textField-long ccureadings:0,1 ccuget:State,Value ccuscaleval ccuSetOnChange ccuverify:0,1,2 disable:0,1 hmstatevals:textField-long statevals substexcl substitute:textField-long statechannel statedatapoint controldatapoint stripnumber peer:textField-long event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading alexaName alexaProactiveEvents:1,0 alexaRoom assistantName:textField cmdIcon devStateIcon devStateIcon:textField-long devStateStyle gassistantName:textField genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock,scene,ac_unit,aircondition,airfreshener,airpurifier,awning,bathtub,bed,blender,blinds,boiler,camera,carbon_monoxide_detector,charger,closet,coffee_maker,coffeemaker,cooktop,curtain,dehumidifier,dehydrator,dishwasher,door,drawer,dryer,fan,faucet,fireplace,fryer,gate,grill,heater,hood,humidifier,kettle,remotecontrol,mop,mower,microwave,multicooker,network,oven,pergola,petfeeder,pressurecooker,radiator,refrigerator,router,securitysystem,settop,sensor,shutter,shower,smoke_detector,sousvide,sprinkler,standmixer,tv,vacuum,valve,washer,waterheater,waterpurifier,watersoftener,yogurtmaker homebridgeMapping:textField-long icon realRoom:textField sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
    "Internals": {
      "DEF": "OEQ0424862",
      "FUUID": "5c435f29-f33f-4885-7d8d-a17f1fa9124f2ec5",
      "IODev": "HMCCU3",
      "NAME": "HM_Sec_SCo_OEQ0424862",
      "NR": "152",
      "STATE": "Status: closed / LastOpen: 22.08.2020 - 12:31:27 / LastClose: 22.08.2020 - 13:01:15",
      "TYPE": "HMCCUDEV",
      "ccuaddr": "OEQ0424862",
      "ccudevstate": "active",
      "ccuif": "BidCos-RF",
      "ccuname": "HM_Sec_SCo_OEQ0424862",
      "ccutype": "HM-Sec-SCo",
      "channels": "2",
      "firmware": "1.0",
      "statevals": "devstate"
    },
    "Readings": {
      "0.AES_KEY": { "Value":"off", "Time":"2020-08-20 23:43:10" },
      "0.CONFIG_PENDING": { "Value":"false", "Time":"2020-08-20 23:43:10" },
      "0.DEVICE_IN_BOOTLOADER": { "Value":"false", "Time":"2020-08-20 23:43:10" },
      "0.RSSI_DEVICE": { "Value":"1", "Time":"2020-08-20 23:43:10" },
      "0.RSSI_PEER": { "Value":"1", "Time":"2020-08-20 23:43:10" },
      "0.STICKY_UNREACH": { "Value":"1", "Time":"2020-08-22 03:02:26" },
      "0.UPDATE_PENDING": { "Value":"false", "Time":"2020-08-20 23:43:10" },
      "1.ERROR": { "Value":"0", "Time":"2020-08-22 15:29:12" },
      "1.STATE": { "Value":"closed", "Time":"2020-08-22 15:29:12" },
      "LastClose": { "Value":"22.08.2020 - 13:01:15", "Time":"2020-08-22 13:01:15" },
      "LastOpen": { "Value":"22.08.2020 - 12:31:27", "Time":"2020-08-22 13:01:15" },
      "R-CYCLIC_INFO_MSG": { "Value":"1", "Time":"2020-07-01 23:03:18" },
      "R-LOCAL_RESET_DISABLE": { "Value":"0", "Time":"2020-07-01 23:03:18" },
      "R-SABOTAGE_MSG": { "Value":"1", "Time":"2020-07-01 23:03:18" },
      "R-TRANSMIT_DEV_TRY_MAX": { "Value":"6", "Time":"2020-07-01 23:03:18" },
      "activity": { "Value":"alive", "Time":"2020-08-22 07:55:17" },
      "battery": { "Value":"ok", "Time":"2020-08-22 15:29:12" },
      "control": { "Value":"closed", "Time":"2020-08-22 15:29:12" },
      "hmstate": { "Value":"closed", "Time":"2020-08-22 15:29:12" },
      "state": { "Value":"closed", "Time":"2020-08-22 15:29:12" }
    },
    "Attributes": {
      "IODev": "HMCCU3",
      "alexaName": "Küchenfenster",
      "alias": "Küchenfenster",
      "devStateStyle": "style=\"text-align:right\"",
      "event-min-interval": "battery:3600",
      "event-on-change-reading": ".*",
      "genericDeviceType": "contact",
      "group": "HM Fenster-/Türkontakte",
      "hmstatevals": "ERROR!7:sabotage;SABOTAGE!1:sabotage",
      "homebridgeMapping": "ContactSensorState=state,values=closed:CONTACT_DETECTED;open:CONTACT_NOT_DETECTED",
      "icon": "hm-sec-win@black",
      "stateFormat": "{\"Status: \".ReadingsVal($name,\"state\" ,\"\").\" / LastOpen: \".ReadingsVal(\"HMCCU3\",\"Fenster_Kueche_auf\",\"\").\" / LastClose: \".ReadingsVal(\"HMCCU3\",\"Fenster_Kueche_zu\",\"\")}",
      "statedatapoint": "1.STATE",
      "substitute": "STATE!(0|false):closed,(1|true):open",
      "userReadings": "LastOpen:hmstate.* {ReadingsVal(\"HMCCU3\",\"Fenster_Kueche_auf\",\"\")},LastClose:hmstate.* {ReadingsVal(\"HMCCU3\",\"Fenster_Kueche_zu\",\"\")}"
    }
  }  ],
  "totalResultsReturned":1
}


Bei Bedarf kann ich auch noch das List für einen HM-IP-Kontaktsenso senden.

Viele Grüße
Jürgen

Morgen ca. 12 Uhr spiele ich das Update ein, dann sollte es funktionieren. genericDeviceType brauchst du nicht setzen, ausser du willst statt einem Fenster eine Tuer, dann einfach auf door setzen.
//Edit: Update eingespielt.

Falls der HM-IP ein anderer ist, dann gerne posten und ich integriere es.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Zitat von: RomanB am 17 August 2020, 17:23:56
Ich bin's noch mal. Gibt es denn eine Möglichkeit das Cook-Trait über das homebridgeMapping zu konfigurieren? Die Konfigurations-Doku schweigt sich hierüber leider aus. Ich würde gerne meine Siemens Kaffeemaschine anbinden und mehr als ein- und ausschalten können! :-)

Kannst du mir bitte ein jsonlist2 von der Kaffeemaschine posten? Bin naemlich noch am ueberlegen wie man die vielen Parameter die Google verlangt am besten in einer leichten Konfiguration unterbekommt. Uebrigens benoetigst du wahrscheinlich Dispense (https://developers.google.com/assistant/smarthome/traits/dispense) statt Cook.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik