GELÖST - Nach Update auf Alexa-fhem - Einfachen Wert in Prozent ansagen lassen

Begonnen von Stargazer, 10 Dezember 2020, 09:52:29

Vorheriges Thema - Nächstes Thema

Stargazer

Hallo zusammen,

ich habe in den letzten 2 Tagen schon viel im Internet gesucht. Doch irgendwie blicke ich das mit der neuen alexa-fhem noch nicht so richtig. Mit dem Smart-Home Skill habe ich schon die Abfragen für 4 Homematic Heizungsthermostate sowie die Abfrage der Aussentemperatur unserer Wetterstation hinbekommen.

Was mir nun noch fehlt, wäre die Ansage seitens Alexa, wie der SoC unseres Elektroautos ist.

Wenn ich das im homeMapping als temperature einstelle läuft alles. Aber eben als °C anstatt in Prozent.

Habt ihr noch Quellen für einen Anfänger, damit ich mich da etwas mehr reinfuchsen kann ?
Wollte es gerne ohne einen Custom-Skill, wenn es denn geht ?

Viele Grüße und besten Dank

André

MadMax-FHEM

#1
Eventuell als Dimmer/Licht!?

Ansonsten (nahe am Custom Skill):

echodevice-Modul, Alexa-Routine, alexa-dummy...

Also du legst eine Routine an: "Alexa wie ist der Stand meines Elektroautos" -> schalte dummy (oder: Antworte "einen Moment"). Das ist nur, damit die Routine "gültig" ist...

Entweder dann auf den geschaltenen dummy -> set Echodevice speak "das Elektorauto ist zu $value Prozent geladen"
EDIT: $value ist dann halt mittels ReadingsVal/ReadingsNum oder "setMagic" vorher abzufragen ;)

Oder: das echodevice hat ein voice-Reading (mit extra update Intervall) hilfreich, wenn auch der Echo antworten soll, der die Frage gehört hat (weil der im notify auf "voice" ja mitkommt)
D.h. ein notify auf das voice-Reading. Dort dann prüfen, ob es die Abfrage war (der Text steht ja drin/kommt im Event) und dann eben das set Echo speak absetzen...

https://forum.fhem.de/index.php/topic,82631.msg747482.html#msg747482

EDIT: https://forum.fhem.de/index.php/topic,116367.msg1106460.html#msg1106460

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Stargazer

Hallo Joachim,

deine Antwort war Gold wert. Habe das jetzt mit viel Schweiß alles umsetzen können. Fast zumindest. Es reagiert alles so wie es soll.
Ich nutze die Variante mittels dem Echo speak. Ein tolles Feature, wie ich finde. Die Routine schaltet einen dummy, dieser wird von einem DOIF ausgelesen, welches dann die Meldung absetzt.
Doch ich bekomme das Reading des wertes nicht eingelesen. D.h., mit der $value - Geschichte habe ich noch Probleme.
Ich hatte das mal testweise eingesetzt. Hier mal die Def des DOIF's:

([ECHO_90F00818704XXXXX:voice] eq "akkustand elektroauto") (set ECHO_90F00818704XXXXX speak Der S.o.C. vom Kona beträgt $value %) (set SoCAbfrage off)

Nach der Abfrage resettet er dann gleich den "Schaltdummy" für die Routine mit, damit man wieder anfragen kann.

Aber das Problem bleibt. Zumindest, weil ich da noch nicht genau durchsteige, wie das funktionieren kann ?

Viele Grüße

André

MadMax-FHEM

#3
Poste doch mal ein list des "Elektro Autos"...

Du musst (wie ich geschrieben hatte) den Prozentwert "abfragen", z.B. mittels ReadingsVal/ReadingsNum (oder "setMagic" aber das "kann" ich nicht ;)  ).

Hast du nur einen Echo?

Und: eq "akkustand elektroauto" wird (verm.) nicht funktionieren, da im voice-Reading (verm.) "mehr" stehen wird, oder?

Und warum DOIF?
Ein "simples" notify reicht, da kann ich helfen.
Bei DOIF bin ich raus... ;)

Das voice-Intervall hast du eingestellt?
Und: beim Account-Device!
(wie verlinkt zu lesen war)

Du musst den dummy auch nicht auf off setzen (sofern "SoCAbfrage" der dummy für die Routine ist)...

Du reagierst doch auf den dummy gar nicht!?
Und selbst wenn: es kommen immer wieder "on" Events...
Außer du hast beim dummy event-on-change-reading gesetzt (was bei einem dummy meist eh "unnötig" ist)...

EDIT: und generell sind lists besser als "irgendwelche" kurzen "Ausschnitte" eines DEF oder fhem.cfg etc.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Stargazer

Hallo Joachim,

als erstes erstmal das list:

Internals:
   BUSY       0
   DEF        http://192.168.178.72/openWB/web/api.php?get=all 120
   FUUID      5ccc2e13-f33f-3a1f-0b78-5d9608876b671336
   Interval   120
   MainURL    http://192.168.178.72/openWB/web/api.php?get=all
   ModuleVersion 4.0.12 - 24.10.2020
   NAME       WallBoxStatus
   NOTIFYDEV  global
   NR         487
   NTFY_ORDER 50-WallBoxStatus
   STATE      Geladene Energiemenge: 19.40 kW/h ----- Aktuelle Leistung: 0 Watt ----- Akkustand-Kona: 69 %
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://192.168.178.72:80
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl http://192.168.178.72/openWB/web/api.php?get=all
     header     
     host       192.168.178.72
     httpheader HTTP/1.1 200 OK
Date: Thu, 10 Dec 2020 20:55:10 GMT
Server: Apache/2.4.25 (Raspbian)
Content-Length: 1119
Connection: close
Content-Type: application/json
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    80
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /openWB/web/api.php?get=all
     protocol   http
     redirects  0
     timeout    60
     url        http://192.168.178.72/openWB/web/api.php?get=all
     sslargs:
   QUEUE:
   READINGS:
     2020-12-10 21:55:10   Akkustand       69
     2020-12-10 21:55:10   GeladenekWh     19.40
     2020-12-10 21:55:10   Gesamtkosten    0
     2020-12-10 21:55:10   KostenLetzteLadung 0
     2020-12-10 21:55:10   Ladeleistung    0
     2020-12-10 21:55:10   Lademodus       0
     2020-12-10 21:55:10   Ladung_Aktiviert 0
     2020-12-10 21:53:31   SoC-Wert        26.772
     2020-12-10 21:53:31   SoC-Wert-Gesamt 87
     2020-12-10 21:55:10   Wallbox-Zaehler 677.51
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        0
     retryCount 0
     type       update
     url        http://192.168.178.72/openWB/web/api.php?get=all
   defptr:
     readingBase:
       Akkustand  reading
       GeladenekWh reading
       Ladeleistung reading
       Lademodus  reading
       Ladung_Aktiviert reading
       Wallbox-Zaehler reading
     readingNum:
       Akkustand  07
       GeladenekWh 03
       Ladeleistung 04
       Lademodus  01
       Ladung_Aktiviert 06
       Wallbox-Zaehler 02
     readingOutdated:
     requestReadings:
       update:
         Akkustand  reading 07
         GeladenekWh reading 03
         Ladeleistung reading 04
         Lademodus  reading 01
         Ladung_Aktiviert reading 06
         Wallbox-Zaehler reading 02
Attributes:
   reading01Name Lademodus
   reading01Regex lademodus":"([\d\.]+)
   reading02Name Wallbox-Zaehler
   reading02Regex llkwhLP1":"([\d\.]+)
   reading03Name GeladenekWh
   reading03Regex gelkwhlp1":"([\d\.]+)
   reading04Name Ladeleistung
   reading04Regex lllp1":"([\d\.]+)
   reading06Name Ladung_Aktiviert
   reading06Regex ladungaktivLP1":"([\d\.]+)
   reading07Name Akkustand
   reading07Regex socLP1":"([\d\.]+)
   room       Elektroauto
   stateFormat Geladene Energiemenge: GeladenekWh kW/h ----- Aktuelle Leistung: Ladeleistung Watt ----- Akkustand-Kona: Akkustand %
   timeout    60
   userReadings Gesamtkosten {(ReadingsVal("WallBoxStatus","Wallbox-Zaehler",0))*(ReadingsVal("Ladekosten","state",0))}, KostenLetzteLadung {(ReadingsVal("WallBoxStatus","GeladenekWh",0))*(ReadingsVal("Ladekosten","state",0))}
   userattr   reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex


Wie zu sehen, ist "Akkustand" das Ding worum es sich drehen soll  ;).

Die Sache mit dem DOIF. Ich weiß, ist eigentlich mit Kanonen auf Spatzen geschossen. Aber wenn wir es mit einem Notify austesten/machen können, werde ich das auch tun  ;) ;D.
Ist nur schon etwas her, dass ich das gemacht habe. Aber soll ja wie Schwimmen lernen sein.

Zum Thema Echo. Da haben wir drei Stück im Haus. Einen Dot, einen Show und einen normalen Echo. Alles von der ersten Generation. Läuft soweit mit FHEM wie eine eins.

Ich hatte beim Account-Device die "intervallsettings" auf 2 eingestellt. Mehr nicht. Und es läuft mit der Ansage super !

MMhhh....also..wie müsste ich Anfangen, wegen dem Reading ?

$value {ReadingsVal("WallBoxStatus","Akkustand",0)}

Mit der variablen stehe ich irgendwie auf Kriegsfuß. ABER...das Problem sitzt ja eigentlich immer vor dem Bildschirm, nich wahr ?

Viele Grüße

André


MadMax-FHEM

#5
Also mit notify bastle ich jetzt mal was...

Wenn du DOIF willst musst du "umbauen" ;)

Das als "Raw-Def":


defmod nAkkustand notify ECHO_.*:voice.* {if($EVENT =~ m/akkustand elektroauto/){my $value=ReadingsNum("WallBoxStatus","Akkustand",0);;fhem("set $NAME speak der akkustand ist $value prozent");;}}


Sofern wirklich im voice-Reading "akkustand elektroauto" vorkommt!

EDIT: ansonsten halt nachschauen was im voice-Reading steht und das "Match" anpassen...

EDIT: evtl. kann es sein, dass um das was gesprochen werden soll Anführungszeichen müssen, dann wäre es so:
muss nicht sein. Eben getestet. Bei mir geht es. Ich habe aber als "Routinenende": "moment" ;) Sollte aber egal sein...

EDIT: es sollte der Echo antworten, der eben auch die Anfrage bekommen hat (also wo sich das voice-Reading geändert hat). Poste doch mal den dummy. Aber wie geschrieben: der ist nur um die Routine "zufrieden zu stellen". Es ginge auch ein Alexa soll antworten mit: "Moment" (als "Ende" der Routine)... Aber einfach einen dummy schalten lassen ist auch i.O. ;) Du kannst den dummy ja auch für mehrere Routinen nutzen (falls du weitere Ansagen etc. haben möchtest) und dann auch die if-Abfrage im notify "aufbohren". Es gibt gegen Mitte oder so im Echo-Device-Thread auch Beispiele wo richtig viel Anfragen "ausgewertet" werden mit DOIF ;) Du kannst auch den Inhalt des voice-Readings an sowas wie: TEERKO, Talk2Fhem, Ballbe, ... "weitergeben" und dort die "Auswertung" machen lassen, inkl. Antwort (zumindest bei TEERKO geht auch die Antwort zu konfigurieren, habe ich "prototypisch" laufen aber nicht mit dem voice-Reading, hab mal ein wenig mit Snips etc. "rumgespielt" aber gibt es ja nicht mehr :-\ also Snips. TEERKO denke ich schon)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Stargazer

Hallo Joachim,

na das läuft mal echt out-of-the Box!
Ich danke dir recht herzlich dafür. Fakt ist: Das notify werde ich mir heute noch ganz in Ruhe ansehen und versuchen zu verstehen. Für den Rest gibt's dann das Wiki oder Google. Bei ganz harten Sachen dann das Forum hier.

Das mit dem voice-Reading klappt ganz wunderbar. Hatte das gestern mit dem DOIF auch so am laufen. Das DOIF hat ganz am Anfang auf den dummy reagiert, die die Routine einschaltet, ehe ich auf das voice-Reading umgestellt hatte. Darum auch noch der dummy-resett  ;D. Den brauche ich garnicht mehr.

Ich habe jetzt noch in der Routine einfach das Wort "Scanne" eingebaut. Den dummy spare ich mir jetzt komplett.

Vielen Dank und viele Grüße

André


MadMax-FHEM

Na dann: viel Spaß! :)

"Packst" du dann noch ein [gelöst] etc. vorne an den ersten Post, danke.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)