39_gassistant.pm (Google Assistant, Google Home)

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

Vorheriges Thema - Nächstes Thema

a_quadrat

Ja, die Senderliste funktioniert über Modes. Es sieht jetzt nicht überwältigend aus, aber es funktioniert. Im Anhang ein Foto

VG Andreas

Patrick Strassburger

Hallo,

kann mir jemand einen Tip geben, ich versteh die Doku nicht wie ich einen einfachen Temperatur Wert übergebe.
Ein einfacher Schalter bzw. Interaktion zu einem ESP8266(MQTT2) funktioniert aber ich scheitere an einem Dummy.
Ich möchte zB. an meiner Heizung die Vorlauftemperatur anheben. In Fhem ist dies ein Dummy mit einer setlist (Slider 20...50).
Ich habe den Dummy "vorlauf_haus_soll" dem Raum "GoogleAssistant" hinzugefügt und mit keinem bzw. verschiedenen genericdevicetypes getestet.
Ich bin der Meinung der korrekte wäre "thermostat", das device erscheint jedoch nicht in GHome.
Eine Fehlermeldung im Reading lautet:
gassistant-fhem-lastServerError No mappings (e.g. on/off) found for vorlauf_haus_soll
Fehlen wirklich Mappings?

Viele Grüße,
Patrick

dominik

Cool, danke für den Screenshot! Das heißt generell, dass alle Modes nun über Smartdisplays steuerbar sind.

Auf der amerikanischen Google Store Seite habe ich eine schöne Channel Ansicht beim Google Home Max gesehen:
https://store.google.com/us/product/google_nest_hub_max?hl=en-US
Da es auf der Seite schwer zu finden ist, hier habe ich ein Bild im Internet gefunden:
https://playsmarthome.com/wp-content/uploads/google-nest-hub-max-3-e1568055645761-800x500.png

Ich denke da kommt sicher noch ein "Channel" Trait über den ich das ebenfalls einbauen kann :) Aus meiner Sicht brauchen wir in FHEM jedoch ein eigenes ChannelList Device welches dann in FHEM Connect integriert werden kann. Weil ansonsten ist dieses Sendername auf Tastenabfolge Mapping immer nur aus Google Assistant nutzbar. Dort könnte man dann auch die URLs zu Icons hinterlegen, die dann sicher auch gebraucht werden.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Zitat von: Patrick Strassburger am 05 Mai 2020, 20:37:05
Hallo,

kann mir jemand einen Tip geben, ich versteh die Doku nicht wie ich einen einfachen Temperatur Wert übergebe.
Ein einfacher Schalter bzw. Interaktion zu einem ESP8266(MQTT2) funktioniert aber ich scheitere an einem Dummy.
Ich möchte zB. an meiner Heizung die Vorlauftemperatur anheben. In Fhem ist dies ein Dummy mit einer setlist (Slider 20...50).
Ich habe den Dummy "vorlauf_haus_soll" dem Raum "GoogleAssistant" hinzugefügt und mit keinem bzw. verschiedenen genericdevicetypes getestet.
Ich bin der Meinung der korrekte wäre "thermostat", das device erscheint jedoch nicht in GHome.
Eine Fehlermeldung im Reading lautet:
gassistant-fhem-lastServerError No mappings (e.g. on/off) found for vorlauf_haus_soll
Fehlen wirklich Mappings?

Viele Grüße,
Patrick

Welche Readings hat das Device? Poste mal ein jsonlist2 vom Device. Wenn das Device ein Reading temperature hat, 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

Patrick Strassburger

Hallo Dominik,

anbei der output. Ein Reading "temperature" gibt es nicht - Du meinst ein userreading?

{
  "Arg":"vorlauf_haus_soll",
  "Results": [
  {
    "Name":"vorlauf_haus_soll",
    "PossibleSets":"state:slider,20,1,55",
    "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 DbLogExclude DbLogInclude DbLogValueFn:textField-long assistantName:textField cmdIcon devStateIcon devStateIcon:textField-long devStateStyle gassistantName:textField genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock,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,oven,pergola,petfeeder,pressurecooker,radiator,refrigerator,scene,securitysystem,settop,sensor,shutter,shower,smoke_detector,sousvide,sprinkler,standmixer,tv,vacuum,valve,washer,waterheater,waterpurifier,watersoftener,yogurtmaker,network,router homebridgeMapping:textField-long icon realRoom:textField sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
    "Internals": {
      "FUUID": "5c8c93df-f33f-f3a5-3fa0-34c46c38ee3b72a7",
      "NAME": "vorlauf_haus_soll",
      "NR": "58",
      "STATE": "38",
      "TYPE": "dummy"
    },
    "Readings": {      "state": { "Value":"38", "Time":"2020-05-05 21:44:43" } },
    "Attributes": {
      "genericDeviceType": "thermostat",
      "group": "Steuerung",
      "room": "80_Heizung,GoogleAssistant",
      "setList": "state:slider,20,1,55"
    }
  }  ],
  "totalResultsReturned":1
}


Steh gerade auf dem Schlauch :-[

Viele Grüße,
Patrick

R1k4rd

Zitat@Richard,
- "name" ist beliebig. Solange nur ein Mode definiert wird, kann Google damit umgehen. Bei mehreren Modes muss man manchmal den Mode (Sender o.ä.) dazu sagen.
- "0_macro" kommt vom SamsungAV Modul und schickt die Befehle hintereinander. Damit braucht man nur einen Befehl und nicht mehrere.
Ok, mir war nur nicht ganz klar wie es genau funktioniert und ob mir irgendwo etwas fehlt, hatte es erst nur so probiert:
"ZDF":"2,enter",
allerdings ohne Erfolg, aber mit 0_macro davor funktioniert es jetzt alles, vielen Dank für die Hilfe!

Falls es jemand irgendwann gebrauchen kann hier mein kompletter Eintrag des homebridgeMapping zum einschalten über ein Dummy und den Senderwechsel bei einem Samsung TV:
{
   "On": {
     "reading":"state",
     "valueOff":"off",
     "device":"dummyName",
     "cmdOn":"on",
     "cmdOff":"off"
   },
   "SimpleModes": {
     "reading":"state",
     "name":"sender",
     "ARD":"0_macro 1,enter",
"ZDF":"0_macro 2,enter",
"RTL":"0_macro 3,enter",
     "SAT 1,SAT eins,SAT1":"0_macro 4,enter",
"PRO 7,PRO sieben,PRO7":"0_macro 5,enter",
"VOX":"0_macro 6,enter",
"RTL 2,RTL zwei,RTL2":"0_macro 7,enter",
"KABEL 1,KABEL eins,KABEL1":"0_macro 8,enter",
     "NTV":"0_macro 9,enter"
   }
}


Zitat- Hat dein dummy Device eine state Reading? Kannst du bitte ein set gassistant restart sicherheitshalber machen und dann nochmals testen?
Das Dummy device hat ein state Reading, gassistant habe ich neu gestartet. Soweit ich es jetzt beobachtet habe tritt der Fehler nur nach einem Neustart + manuellem Sync auf, wenn ich das Gerät danach einmal einschalte ist der Fehler weg und es läuft alles wie gewollt!

Zitat- Ich werde integrieren, dass bei Port 8001 automatisch power statt powerOff verwendet wird. Ich denke das sollte dann für mehr User passen.
Finde ich gut, dann muss nicht jeder User das extra einrichten allerdings bin ich mir auch nicht zu 100% sicher ob bei allen Geräten die Port 8001 nutzen das einschalten mit dem power Befehl funktioniert, falls doch alles gleich ist würde ja auch nur das ausschalten mit power funktionieren, das Einschalten müsste weiterhin separat über WOL erfolgen. Ich werde es nochmal im Forum ansprechen ob es nicht doch möglich wäre WOL zu integrieren und somit das ganze sauber mit einem Modul umzusetzen.

ZitatIch denke da kommt sicher noch ein "Channel" Trait über den ich das ebenfalls einbauen kann :) Aus meiner Sicht brauchen wir in FHEM jedoch ein eigenes ChannelList Device welches dann in FHEM Connect integriert werden kann. Weil ansonsten ist dieses Sendername auf Tastenabfolge Mapping immer nur aus Google Assistant nutzbar. Dort könnte man dann auch die URLs zu Icons hinterlegen, die dann sicher auch gebraucht werden.
Gibt es da nicht schon etwas ansatzweise irgendwie in Richtung Fernsehprogramm anzeigen? Ich bilde mir ein ich hätte da mal sowas gesehen in Fhem, zumindest falls es sowas in die Richtung schon gibt wäre es evtl. auch eine passende Stelle da die Icons schon da wären und man müsste nur noch seine Tastenfolge separat anlegen können. Aber sieht schon echt gut aus was da hoffentlich noch alles kommt von Google!

dominik

#1866
Zitat von: Patrick Strassburger am 05 Mai 2020, 21:52:28
Hallo Dominik,

anbei der output. Ein Reading "temperature" gibt es nicht - Du meinst ein userreading?

{
  "Arg":"vorlauf_haus_soll",
  "Results": [
  {
    "Name":"vorlauf_haus_soll",
    "PossibleSets":"state:slider,20,1,55",
    "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 DbLogExclude DbLogInclude DbLogValueFn:textField-long assistantName:textField cmdIcon devStateIcon devStateIcon:textField-long devStateStyle gassistantName:textField genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock,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,oven,pergola,petfeeder,pressurecooker,radiator,refrigerator,scene,securitysystem,settop,sensor,shutter,shower,smoke_detector,sousvide,sprinkler,standmixer,tv,vacuum,valve,washer,waterheater,waterpurifier,watersoftener,yogurtmaker,network,router homebridgeMapping:textField-long icon realRoom:textField sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
    "Internals": {
      "FUUID": "5c8c93df-f33f-f3a5-3fa0-34c46c38ee3b72a7",
      "NAME": "vorlauf_haus_soll",
      "NR": "58",
      "STATE": "38",
      "TYPE": "dummy"
    },
    "Readings": {      "state": { "Value":"38", "Time":"2020-05-05 21:44:43" } },
    "Attributes": {
      "genericDeviceType": "thermostat",
      "group": "Steuerung",
      "room": "80_Heizung,GoogleAssistant",
      "setList": "state:slider,20,1,55"
    }
  }  ],
  "totalResultsReturned":1
}


Steh gerade auf dem Schlauch :-[

Viele Grüße,
Patrick

Genau, ein userreadings mit temperature. Wobei du die Temperatur ja einstellen willst, oder? Dann desiredTempearture, bzw. probier mal folgendes
{
  "TargetTemperature": {
      "reading": "state",
      "cmd": "state"
    }


Aktuell leider per App nur bis 30 Grad moeglich.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

@Richard, kann es sein, dass das dummy Device nicht im GoogleAssistant room ist? Kannst du es bitte mal testen wenn das Device im Sync mit drin ist? Ich denke daran liegt es.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

R1k4rd

Hey Dominik,

ja das war der Fehler, nun taucht er nicht mehr auf nach einem Sync und in der App wird der Status auch ganz normal angezeigt. Hatte das Gerät dann halt raus genommen weil der on/off Befehl ja im anderen Device mit drin ist, blöder Fehler von mir ::)

Tabularasa

Zitat von: dominik am 28 April 2020, 00:09:57
Root ist nicht notwendig, Token auslesen geht mittlerweile ganz einfach mit einer älteren Version von MiHome auf Android Geräten:
https://github.com/Maxmudjon/com.xiaomi-miio/blob/master/docs/obtain_token.md#extract-token-from-log-file

Du kannst den Saugroboter danach sowohl über FHEM als auch über MiHome bedienen.

Ich habe nun mal den Token ausgelesen und den Roboter in Fhem angelegt. Wie kann ich die Zonen denn definieren? In der App habe ich bereits alle Zonen markiert. Kann man diese auch wieder auslesen?

dominik

Zitat von: R1k4rd am 07 Mai 2020, 08:47:33
Hey Dominik,

ja das war der Fehler, nun taucht er nicht mehr auf nach einem Sync und in der App wird der Status auch ganz normal angezeigt. Hatte das Gerät dann halt raus genommen weil der on/off Befehl ja im anderen Device mit drin ist, blöder Fehler von mir ::)

Nicht dein Fehler, weil eigentlich macht das dummy Device wenig Sinn im Google Assistant Raum. Ich versuche da noch eine Loesung zu finden, damit solche dummy Devices auch ausserhalb vom Google Assistant Raum verwendet werden koennen.

Zitat von: Tabularasa am 07 Mai 2020, 14:56:19
Ich habe nun mal den Token ausgelesen und den Roboter in Fhem angelegt. Wie kann ich die Zonen denn definieren? In der App habe ich bereits alle Zonen markiert. Kann man diese auch wieder auslesen?
Bitte dazu im Xiaomi Vacuum Thread oder Xiaomi Vacuum FHEM Wiki nachlesen, dort steht alles beschrieben.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Lukas1003

Tag zusammen, habe heute meinen pi neu aufgesetzt und fhem auch, bekomme den gassistant aber nicht mehr zum laufen, Konsole sieht wie folgt aus pi@raspberrypi:~ $ gassistant-fhem
Loading cli.js...
Loading version.js...
Loading server.js...
Loading user.js...
Loading logger.js...
Loading fhem.js...
Loading database.js...
Loading localhandleQUERY.js...
Loading utils.js...
Loading localserver.js...
Loading localhandleEXECUTE.js...
[08/05/2020, 21:51:21] using /home/pi/.fhemconnect/config.json
[08/05/2020, 21:51:22] ---
[08/05/2020, 21:51:22] config:
{"connections":[{"name":"FHEM","server":"192.168.178.205","port":"8083","auth":{"user":"lukas","pass":"raspberry"},"webname":"fhem","filter":"room=GoogleAssistant"}]}
[08/05/2020, 21:51:22] ---
[08/05/2020, 21:51:22] Google Assistant FHEM Connect 3.0.0 started
[08/05/2020, 21:51:22] Fetching FHEM connections...
[08/05/2020, 21:51:22] [FHEM] starting longpoll: http://192.168.178.205:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1588971082101
[08/05/2020, 21:51:22] [FHEM]   executing: http://192.168.178.205:8083/fhem?cmd=jsonlist2%20TYPE%3Dgassistant&XHR=1
[08/05/2020, 21:51:22] [FHEM] Please define Google Assistant device in FHEM: define gassistant gassistant
pi@raspberrypi:~ $


In fhem bekomme ich nur die Meldung "cannot load module gassistant

dominik

Poste bitte noch das FHEM Log, dort sollte der Fehler zu finden sein.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Lukas1003

Hier bitte Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM ./FHEM/lib) at ./FHEM/39_gassistant.pm line 11.
BEGIN failed--compilation aborted at ./FHEM/39_gassistant.pm line 11.

2020.05.09 07:33:44 0: Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM ./FHEM/lib) at ./FHEM/39_gassistant.pm line 11.
BEGIN failed--compilation aborted at ./FHEM/39_gassistant.pm line 11.


dominik

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