Ich verwende ein Dual-Thermometer an/in der Sauna. Das Thermometer hängt draußen, weil es nur bis 60° arbeitet , der Sensor für temperature2 ist in 60cm Höhe durch die Wand geführt. Wenn die Sauna 90° hat, dann sind an der Stelle 60°, bis dahin arbeitet das Thermometer, darüber kommt eine Fehlermeldung. Soweit passt alles, muss halt 30 Grad zuaddieren und kann mich bei temperature2 = 50° auf den Weg machen. Muss dazu aber FHEM-WEB benutzen, das ist umständlich. Alexa sagt mir nur die Kellertemperatur (temperature1).
Das Thema hatte ich schon mal gelöst, wenn ich mich recht erinnere mit homebridge mapping, vergessen - Alzheimer.
Die temperatur2 einem Dummy zuzuweisen ist simpel, hilft aber nicht weil der Alexa-Connector bei Dummy nur setlist on off erlaubt.
Die zweite Frage wäre wie ich die 30°-Korrektur in fhem erledigen könnte.
Was muss ich tun?
Kein extra Dummy: Als Userreadings in deinem Temperaturmesser Device
userReadings temperatureInnen:temperature2:*{ReadingsNum($name,'temperature2',0) + 30}
Wie Du es Alexa sagst weiß ich nicht.
Wo hast du her, dass alexa-fhem/Alexa nur on off zulässt?
Das stimmt nicht.
EDIT: ich habe beispielsweise einen Media-dummy mit setList on off mute volume channel
Wenn das Reading gleich temperature oder measured-temp heißt, dann erkennt das alexa-fhem gleich automatisch :)
Dann noch genericDeviceType thermometer und gut...
EDIT: dualthermometer? Welcher Typ? Sind es zwei devices? Weil mit nur einem Device wird dir Alexa nur eine Temperatur ansagen (können). Nämlich entweder die autom. erkannte (siehe Readingsnamen) oder eben die per homebridgeMapping angegebene (Beispiele gibt es in div. Wiki)... Wenn du beide Temperaturen angesagt haben willst aber beide Temperaturen in einem Device sind, dann wäre evtl. readingsProxy eine Möglichkeit eine der Temperaturen als "temperature" oder "measured-temp" im readingsProxy "darzustellen" und dort dann eben alexaName und genericDeviceType setzen... So wie im eigentlichen Device dann für die andere Temperatur...
EDIT: setList ist nur interessant, wenn das Device keine setter hat (dummy) und man per alexa-fhem auch was steuern will. Beim nur Temperatur-Abfragen ist setList egal...
Gruß, Joachim
Danke für die Antworten.
Es handelt sich um ein Gerät (NAME Sauna), ähnlich wie die TX29DT-IT, temperature ist die Temperatur am Gerät (Dummy Saunakeller) und temperature2 die Temperatur an der Sonde.
Problem 1 habe ich mit
set Sauna attr homebridgeMapping CurrentTemperature = temperature2
und +*00:15 set Saunakeller {(ReadingsVal('Sauna','temperature',''))}.
Das funktioniert, damit sagt mir Alexa die Saunatemperatur (-30° :-[), die Temperatur im Keller ist nicht so wichtig, da reicht die Info über die Web-Oberfläche.
Die Antwort von Otto könnte mein Problem mit dem Temperaturoffset lösen, wenn ich wüsste wie es geht.
Ich habe für Sauna das UserReadings kreiert (mit $name = Sauna) und bei HomebridgeMapping CurrentTemperature = temperatureInnen eingetragen. Das klappt nicht.
Bei den Readings taucht temperatureInnen auch nicht auf. Was mache ich falsch?
set Sauna attr...
Ist doch "Quatsch"...
Du brauchst doch nur beim Device das Attribut entsprechend setzen.
Das was du mit at zyklisch machst: wäre verm. auch mit readingsProxy und damit mit nur einem Device möglich.
Aber wenn es tut...
$name kannst du lassen, das wird dann durch den Namen vom Device ersetzt.
Poste doch ein list vom Device.
Und noch mal: wenn du das userReadings gleich temperature nennst (wie beim dummy), dann geht das mit alexa-fhem auch ohne homebridgeMapping, wenn genericDeviceType auf thermometer gesetzt ist...
Gruß, Joachim
Zitat von: oldman am 29 Januar 2022, 19:15:22
Die Antwort von Otto könnte mein Problem mit dem Temperaturoffset lösen, wenn ich wüsste wie es geht.
Ich habe für Sauna das UserReadings kreiert (mit $name = Sauna) und bei HomebridgeMapping CurrentTemperature = temperatureInnen eingetragen. Das klappt nicht.
attr Sauna userReadings temperature:temperature2:*{ReadingsNum($name,'temperature2',0) + 30}
entsprechend Joachims Vorschlag
Ich setze doch das Attribut beim Device Sauna (Dualthermometer):
Internals:
DEF 07
FUUID 5fabd8c0-f33f-c71a-f755-de3637a54215d8c2
IODev JeeLinkTemp
JeeLinkTemp_MSGCNT 241215
JeeLinkTemp_RAWMSG OK 9 7 130 4 120 125
JeeLinkTemp_TIME 2022-01-30 14:20:37
LASTInputDev JeeLinkTemp
LaCrosse_lastRcv 2022-01-30 14:20:37
MSGCNT 241207
NAME Sauna
NR 713
STATE 15.5
TYPE LaCrosse
addr 07
battery_new 1
bufferedH
bufferedT
corr1 0
corr2 0
previousH 106
previousH2 125
previousT 15.5
previousT2 14.4
sensorType 0=T(H)
READINGS:
2022-01-30 14:20:37 battery ok
2022-01-30 14:20:15 state T: 15.5
2022-01-30 14:20:15 temperature 15.5
2022-01-30 14:20:37 temperature2 14.5
Attributes:
IODev JeeLinkTemp
alexaName Sauna
doAverage 1
event-min-interval 600
event-on-change-reading temperature
event-on-update-reading state
filterThreshold 10
genericDeviceType thermometer
group Temperatur
homebridgeMapping CurrentTemperature=temperatureInnen
icon scene_sauna@orange
resolution 5
room Keller
stateFormat temperature
userReadings temperatureInnen:temperature2:*{ReadingsNum($name,'temperature2',0) + 30}
Wie gesagt, mit homebridgeMapping CurrentTemperature=temperature2
kappt alles tadellos, nur 30° zu kalt, mit
homebridgeMapping CurrentTemperature=temperatureInnen
sehe ich im AlexaLog zwar die Zuordnung, aber keinen Wert weil vermutlich das userReadings falsch definiert ist
oder noch irgendein anderer Fehler drin steckt. Ich habe zu userReadings keine weiterführenden Infos gefunden
und habe Verständnisprobleme (74 und kein bisschen Weise)
weil mein Beispiel einen Trigger verwendet, Du diesen aber quasi ausgeschaltet hast (event-on...)
Insofern ändere das userReadings:
temperatureInnen {ReadingsNum($name,'temperature2',0) + 30}
Lass damit quasi den trigger weg. Du hast eh nur Events für temperature :)
Danke - funktioniert. I'm happy
Ich hänge mich hier mal dran...
Ich habe einen T/H-Sensor, welcher nativ die Ansage der Temperatur unterstützt.
Wie "bringe" ich Alexa dazu, auch die Feuchtigkeit anzusagen? Ich habe irgendwo gelesen, dass der Alexa Typ "Thermometer" das auch unterstützt. Allerdings komme ich nicht zum Erfolg.
Hier die Rohdef.:
Internals:
CFGFN ./FHEM/061_WZ.cfg
DEF 02
FUUID 5c443da7-f33f-b425-8160-4cde11a33270022a
IODev jeelinkcross
LASTInputDev jeelinkcross
LaCrosse_lastRcv 2022-02-02 10:49:52
MSGCNT 11190
NAME WZ_Sensor
NR 81
STATE T: 18.4 H: 60 D: 10.5
TYPE LaCrosse
addr 02
battery_new 0
corr1 0
corr2 0
jeelinkcross_MSGCNT 11192
jeelinkcross_RAWMSG OK 9 2 1 4 160 60
jeelinkcross_TIME 2022-02-02 10:49:52
previousH 60
previousT 18.4
sensorType 0=T(H)
READINGS:
2021-03-10 10:01:48 Activity alive
2021-11-30 17:35:25 Batteriedauer_alt 0
2022-02-02 08:05:00 Batteriewechsel 2428
2022-02-01 12:10:19 IODev jeelinkcross
2022-02-02 10:49:52 battery ok
2022-02-02 10:49:52 dewpoint 10.5
2022-02-02 10:49:52 humidity 60
2022-02-02 10:35:49 state T: 18.4 H: 60 D: 10.5
2022-02-02 10:49:52 temperature 18.4
2019-06-11 13:12:59 temperature2 37.3
Attributes:
IODev jeelinkcross
alexaName Thermometer Wohnzimmer
alexaRoom Wohnzimmer
alias Thermometer WZ
appOptions {"template":"thermometer"}
doAverage 1
doDewpoint 1
event-min-interval state:300
event-on-change-reading state,battery
event-on-update-reading 1
genericDeviceType thermometer
room 001Wohnzimmer
Dankeschön.
Bist du bzgl. event-on-change/update-reading sicher?
So kommen doch keine Events bzgl. temperature/humidity!?
Wie soll alexa-fhem das mitkriegen? ;-)
Ansonsten muss ich mal schauen...
Aber gibt es in den Wikis zu alexa-fhem bzw. Mapping keine Beispiele?
Gruß, Joachim
Ich habe mal eocr gelöscht (das log wird nat. geflutet...). Dann wird auch "humidity" einzeln geloggt.
Nach Alexa reload und Entfernen des Gerätes in Alexa und Neusuchen und Zuordnung zu Wohnzimmer klappt es trotzdem nicht.
Die Frage: "Alexa, wie ist die Feuchtigkeit im Wohnzimmer" kommt unverändert die Antwort "Das wird noch nicht unterstützt."
keiner hat gesagt Du sollst dein Log fluten, aber der hier: - event-on-update-reading 1 - ist Schwachsinn.
Also bei eocr die Readings eintragen die Du brauchst ::)
E war ja nicht als "Lösung" für die Ansage gedacht, sondern ist "nachgelagert".
Weil alexa-fhem den aktuellen Stand ja nur kennt/mitbekommt, wenn auch Events kommen...
Du hättest auch einfach temperature und humidity zu event-on-update-reading hinzufügen können ;)
EDIT: äh, ja. Evtl. auch eocr auf .* und bei eour dann die "gewünschten" oder wie Otto schreibt... Bzw. halt lesen und dann wie benötigt setzen...
Bzgl. humidity wird halt das homebridgeMapping mit der zugehörigen Charakteristik fehlen...
Daher ja der "Verweis" auf die diversen Wiki, wo bestimmt ein Beispiel zu finden sein dürfte...
Gruß, Joachim
ZitatBzgl. humidity wird halt das homebridgeMapping mit der zugehörigen Charakteristik fehlen...
Man kriegt das doch nicht mit homebridgeMapping hin das Alexa
korrekt die Luftfeuchtigkeit ansagt, oder doch ?
Hab ich Zweifel.
Hab mir vor ein/zwei Wochen das hier angeschaut:
https://developer.amazon.com/es-ES/docs/alexa/device-apis/smart-home-general-apis.html (https://developer.amazon.com/es-ES/docs/alexa/device-apis/smart-home-general-apis.html)
und verstehe es eigentlich so das Luftfeuchtigkeit immer noch nicht unterstützt wird.
Tja, dann gilt (wie immer) was Amazon nicht kann, kann man Alexa nicht beibringen... ;)
War unterwegs, daher halt (nur) der Verweis auf Wiki...
...dort hätte man es finden können... :)
EDIT: das bzgl. Events bleibt. Was alexa-fhem nicht mitkriegt, geht auch nicht an Amazon/Alexa...
EDIT: Alternative wäre eine Routine (wie ist die Luftfeuchte in XYZ) dann einen dummy o.ä. schalten und darauf dann mittels echodevice-Modul die "selbst erzeugte" Antwort ausgeben... Oder nat. Custom Skill...
Danke, Joachim
Eour habe ich gelöscht und eocr werde ich entsprechend anpassen...
Wenn ich die Amazonseite überfliege, so kann ich auch keine Feuchtigkeitssachen erkennen. Dann dürfte es wohl nicht so ohne weiteres gehen...
Oder muss man ein komplettes Homebridgemapping erstellen oder einen anderen Genericdevicetype wählen...?
Routinen wären auch ein Ansatz, aber die ziehen dann weitere dummies nach sich...
ZitatRoutinen wären auch ein Ansatz, aber die ziehen dann weitere dummies nach sich...
Ein weiterer Ansatz:
Ein notify auf das voice-Reading "wie ist die Luffeuchtigkeit ..." von echodevice triggern lassen und im Ausführungsteil mit speak den Wert ausgeben lassen.
Die Reaktion auf das Voice-reading dauert bis zu 30 s - das habe ich bei anderen Tests bemerkt. Lässt sich das "beschleunigen"?
Attribut intervalvoice im ACCOUNT-Device von echodevice setzen, steht bei mir auf 8.
Kommt der Sprachtext auch im echodevice an, selbst wenn Alexa den "Befehl" ablehnt, was sie ja tut...
Ich habe für Routinen einen "Sammel-dummy" als Licht und je nach Routine einen anderen Dim-Wert.
Somit einen dummy für über 250 Routinen ;)
Mit homebridgeMapping kann man keine Befehle "erfinden".
Noch mal: was Amazon (für die jeweilige Sprache) nicht unterstützt wird Alexa auch nicht "verstehen" da kann man als homebridgeMapping angeben was man will.
homebridgeMapping passt nur Befehle/Zustände an die jeweils andere Seite an: Mapping eben... ;)
Gruß, Joachim
Zitat von: TomLee am 02 Februar 2022, 15:38:39
Attribut intervalvoice im ACCOUNT-Device von echodevice setzen, steht bei mir auf 8.
Wieder etwas gelernt... :)
ZitatIch habe für Routinen einen "Sammel-dummy" als Licht und je nach Routine einen anderen Dim-Wert.
Somit einen dummy für über 250 Routinen
So geht es natürlich auch, in der Art habe ich das für meine Steuerung des SAT-Receivers realisiert - ist etwas Fleißarbeit---
ZitatMit homebridgeMapping kann man keine Befehle "erfinden".
Ist schon klar, aber manchmal übersieht man ja eine Möglichkeit.
ZitatKommt der Sprachtext auch im echodevice an, selbst wenn Alexa den "Befehl" ablehnt, was sie ja tut...
Schon, aber egal was man sich einfallen lässt die Luftfeuchte abzufragen, zu allem hat Alexa mittlerweile irgendeine eine Antwort parat die stört.
Ich mein das war nicht immer so, "früher" wars je nach "Sprachbefehl" so, das der blaue Ring noch kurz an war und dann einfach abgebrochen wurde, wenn sie nichts mit dem Sprachbefehl anfangen konnte.
Ich habe mal etwas experimentiert...
Als erstes das Attribut "intervalvoice" mit dem Wert 8 - wie vorgeschlagen angelegt.
Dann ein DOIF hard codiert:
Internals:
CFGFN
DEF ([WZ_Echo_Dot:"^voice:.alexa.wie.ist.die.feuchtigkeit.im.arbeitszimmer$"]) (set WZ_Echo_Dot speak Im Arbeitszimmer beträgt die Luftfeuchtigkeit [AZ_Sensor:humidity] %)
DOELSEIF
([WZ_Echo_Dot:"^voice:.alexa.wie.ist.die.feuchtigkeit.im.wohnzimmer$"]) (set WZ_Echo_Dot speak Im Wohnzimmer beträgt die Luftfeuchtigkeit [WZ_Sensor:humidity] %)
FUUID 6207cd15-f33f-b425-3566-5173ac44058f7453
MODEL FHEM
NAME Ask_states
NOTIFYDEV WZ_Echo_Dot,global
NR 103626
NTFY_ORDER 50-test2
STATE cmd_2
TYPE DOIF
VERSION 25590 2022-01-30 11:30:21
READINGS:
2022-02-12 17:16:29 Device WZ_Echo_Dot
2022-02-12 16:44:00 cmd 2
2022-02-12 16:44:00 cmd_event WZ_Echo_Dot
2022-02-12 16:44:00 cmd_nr 2
2022-02-12 17:16:29 e_WZ_Echo_Dot_events microphone: false,deviceAddress:, DE,timeZoneId: Europe/Berlin
2022-02-12 16:43:30 mode enabled
2022-02-12 16:44:00 state cmd_2
Regex:
accu:
collect:
cond:
WZ_Echo_Dot:
0:
&STATE ^WZ_Echo_Dot$
1:
&STATE ^WZ_Echo_Dot$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('WZ_Echo_Dot',$hash,'^voice:.alexa.wie.ist.die.feuchtigkeit.im.arbeitszimmer$',1)
1 ::EventDoIf('WZ_Echo_Dot',$hash,'^voice:.alexa.wie.ist.die.feuchtigkeit.im.wohnzimmer$',1)
do:
0:
0 set WZ_Echo_Dot speak Im Arbeitszimmer beträgt die Luftfeuchtigkeit [AZ_Sensor:humidity] %
1:
0 set WZ_Echo_Dot speak Im Wohnzimmer beträgt die Luftfeuchtigkeit [WZ_Sensor:humidity] %
2:
helper:
NOTIFYDEV WZ_Echo_Dot,global
event microphone: false,deviceAddress
globalinit 1
last_timer 0
sleeptimer -1
timerdev WZ_Echo_Dot
timerevent voice: alexa wie ist die feuchtigkeit im wohnzimmer
triggerDev WZ_Echo_Dot
timerevents:
voice: alexa wie ist die feuchtigkeit im wohnzimmer
voice_timestamp: 1644680633915
BrowserUserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
BrowserLanguage: de,en-US;q=0.7,en;q=0.3
timereventsState:
voice: alexa wie ist die feuchtigkeit im wohnzimmer
voice_timestamp: 1644680633915
BrowserUserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
BrowserLanguage: de,en-US;q=0.7,en;q=0.3
triggerEvents:
microphone: false
deviceAddress:
timeZoneId: Europe/Berlin
triggerEventsState:
microphone: false
deviceAddress:
timeZoneId: Europe/Berlin
internals:
readings:
trigger:
all WZ_Echo_Dot
uiState:
uiTable:
Attributes:
do always
room Test
Das funzt schon mal. Alexa antwortet zwar erst mit "das wird noch nicht unterstützt", aber danach kommt die Ansage.
Wie kann man das generalisieren?
1. Das man nicht den genauen Wortlaut verwenden muss sondern nur die Räume und die Werte (z.B. Temp., Feuchte, Fenster, Rolas) aus der Anfrage extrahiert werden? In etwa Trigger auf Raum und zusätzliche Bedingung Art der Anfrage (s.o.).
2. Nur je einen Abfragezweig für die verschiedenen Wertearten und nicht für jede einzelne Abfrage einen eigenen?
Eine Abwandlung in der Art funzt leider nicht:
([WZ_Echo_Dot:"voice:küche$"] and [?WZ_Echo_Dot:voice] =~"feuchtigkeit") (set WZ_Echo_Dot speak In der Küche beträgt die Luftfeuchtigkeit [KU_Sensor:humidity] %)
Kann man möglicherweise grundsätzlich das gleiche Reading nicht für Trigger und Abfrage in einem DOIF-Zweig nutzen? Würde dann eventuell ein userreading helfen...?
Du kannst den gesprochenen/empfangenen Satz auch an z.B. TEERKO, Babble, Talk2Fhem o.ä. "schicken".
Dort kannst du dann parametrisieren wie reagiert werden soll und wie/was für eine Antwort kommen soll...
Bzgl. DOIF kann ich nichts sagen...
Gruß, Joachim
Da muss ich mich erst einlesen, mit diesen Modulen habe ich mich bisher noch nicht beschäftigt.