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é
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
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é
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
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é
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
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é
Na dann: viel Spaß! :)
"Packst" du dann noch ein [gelöst] etc. vorne an den ersten Post, danke.
Gruß, Joachim