Alexa scheint mein Kommando richtig zu verstehen, trotzdem werden am Thermostaten falsche Werte (1° statt 23°, in einem zweiten Fall 19° anstatt 12°) eingestellt.
Nun bin ich mir nicht sicher, ob das ein alexa-fhem oder ein Homematic Problem sein könnte.
[01/11/2020, 16:31:01] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.ThermostatController","name":"SetTargetTemperature","payloadVersion":"3","messageId":"5420b5c7-3db2-4b71-ac6e-0519938de25e","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"AE.."},"endpointId":"CUL_HM_261B9E02","cookie":{"fuuid":"5c4b4266-f33f-b166-a890-9388fc31dd68cd88","device":"wz_TC_Climate"}},"payload":{"targetSetpoint":{"value":23,"scale":"CELSIUS"}}}}
[01/11/2020, 16:31:01] [FHEM] wz_TC_Climate: executing set cmd for TargetTemperature with value 1
[01/11/2020, 16:31:01] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20wz_TC_Climate%20desired-temp%201&fwcsrf=csrf_265849286328404&XHR=1
[01/11/2020, 16:31:01] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.ThermostatController","name":"targetSetpoint","value":{"value":1,"scale":"CELSIUS"},"timeOfSample":"2020-11-01T15:31:01.726Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"401ace5e-40fa-4856-b229-684b9ea6fbdb","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"AE.."},"endpointId":"CUL_HM_261B9E02"},"payload":{}}}
[01/11/2020, 16:32:14] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.ThermostatController","name":"SetTargetTemperature","payloadVersion":"3","messageId":"3a015673-c0e2-4277-9d93-dd4c9e93a2bc","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"AE.."},"endpointId":"CUL_HM_261B9E02","cookie":{"fuuid":"5c4b4266-f33f-b166-a890-9388fc31dd68cd88","device":"wz_TC_Climate"}},"payload":{"targetSetpoint":{"value":12,"scale":"CELSIUS"}}}}
[01/11/2020, 16:32:14] [FHEM] wz_TC_Climate: executing set cmd for TargetTemperature with value 19
[01/11/2020, 16:32:14] [FHEM] executing: http://127.0.0.1:8083/fhem?cmd=set%20wz_TC_Climate%20desired-temp%2019&fwcsrf=csrf_265849286328404&XHR=1
[01/11/2020, 16:32:14] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.ThermostatController","name":"targetSetpoint","value":{"value":19,"scale":"CELSIUS"},"timeOfSample":"2020-11-01T15:32:14.941Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"82d7c9c1-b21c-4b44-b5b3-97da362b46f6","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"AE.."},"endpointId":"CUL_HM_261B9E02"},"payload":{}}}
Da bisher niemand geantwortet hat, erlaube ich mir eine Frage: hast Du vielleicht auf wz_TC_Climate ein homeBridgeMapping, mit z.B. einem "scale" Parameter, das vielleicht eine Umwandlung des Werts verusachen könnte?
EDIT: und vielleicht noch eine 2. Frage: wie wird das Device beim Start von alexa-fhem bzw. ein "discover" erkannt?
Moin, danke, dass sich jemand meines Problems annimmt :)
1. kein homeBridgeMapping (was ist das überhaupt?), und das Ganze hatte in der letzten Heizperiode schon problemlos funktioniert. Deshalb bin ich etwas ratlos, wo ich mit der Fehlersuche anfangen soll.
2. im Log finde ich das hier:
[03/11/2020, 20:31:07] [FHEM] wz_TC_Climate is thermometer
[03/11/2020, 20:31:07] [FHEM] wz_TC_Climate has
[03/11/2020, 20:31:07] [FHEM] TargetTemperature [desired-temp]
[03/11/2020, 20:31:07] [FHEM] CurrentTemperature [measured-temp]
[03/11/2020, 20:31:07] [FHEM] CurrentRelativeHumidity [humidity]
[03/11/2020, 20:31:07] [FHEM] wz_TC_Climate will not send proactive events
[03/11/2020, 20:31:07] [FHEM] wz_TC_Climate uses ID: CUL_HM.26......
2020-11-03 20:31:07 caching: wz_TC_Climate-desired-temp: 22.0
2020-11-03 20:31:07 caching: wz_TC_Climate-measured-temp: 22.0
2020-11-03 20:31:07 caching: wz_TC_Climate-humidity: 49
Zitat von: betateilchen am 03 November 2020, 20:34:29
1. kein homeBridgeMapping (was ist das überhaupt?)
ok, hab ich grade nachgelesen. Das kannte ich bis heute gar nicht, weil ja alles schon funktioniert hatte.
Was mich in der Log irritiert:
[03/11/2020, 20:31:07] [FHEM] wz_TC_Climate is thermometer
service_name thermometer gehört nw. nicht einem Thermostat sondern einem reinen Temperatursensor, aber er hat trotzdem eine TargetTemperature Characteristic:
[03/11/2020, 20:31:07] [FHEM] TargetTemperature [desired-temp]
und er nutzt die laut erstem Post auch.
Wenn er durch die "PossibleSets" ein desired-temp findet, sollte er ein service_name "thermostat" automatisch zuweisen. (siehe https://github.com/justme-1968/alexa-fhem/blob/master/lib/fhem.js 2470)
Es sei denn, Du hast explizit attr genericDeviceType auf "thermometer" gesetzt. Wenn dann, würde ich es löschen. Wenn nicht... bin ich auch etwa ratlos, da es bisher funktioniert hat. Ich würde evtl. versuchen, attr genericDeviceType auf "thermostat" zu setzen (und ein set alexadevice reload zu machen), in der Hoffnung, dass er damit mit den automatisch kalkulierten Mappings besser durchkommt
Aber warum es so plötzlich nicht mehr funktioniert ist mir ein Rätsel. Hat sich vielleicht durch irgendeine Änderung von CUL_HM das Reading desired-temp oder entspr. set Kommando geändert? Das kann ich selbst nicht sagen, da ich auf Grund Instabilität von CUL_HM schon lange kein update mehr gemacht habe ;)
Zitat von: amenomade am 04 November 2020, 01:23:50
Wenn er durch die "PossibleSets" ein desired-temp findet, sollte er ein service_name "thermostat" automatisch zuweisen. (siehe https://github.com/justme-1968/alexa-fhem/blob/master/lib/fhem.js 2470)
Es sei denn, Du hast explizit attr genericDeviceType auf "thermometer" gesetzt. Wenn dann, würde ich es löschen. Wenn nicht... bin ich auch etwa ratlos, da es bisher funktioniert hat. Ich würde evtl. versuchen, attr genericDeviceType auf "thermostat" zu setzen (und ein set alexadevice reload zu machen), in der Hoffnung, dass er damit mit den automatisch kalkulierten Mappings besser durchkommt
Ob der genericType auf "thermometer" oder auf "thermostat" steht, hat keinen Einfluss auf das Fehlverhalten. Das hatte ich im Vorfeld schon ausprobiert.
Hast Du schon versucht, alexa in debug mode beim Befehl laufen zu lassen?
https://wiki.fhem.de/wiki/FHEM_Connector_f%C3%BCr_Amazon_Alexa#Fehlersuche_.C3.BCber_die_FHEM-Oberfl.C3.A4che
Vielleicht sieht man mehr.
Danke, werde ich mir mal anschauen.
Kann ich frühestens am Montag testen, wenn ich wieder zuhause bin.
Wie versprochen, habe ich das Logfile (mit -D produziert).
Viel mehr weiterführende Informationen finde ich darin aber auch nicht.
Der Befehl scheint von alexa korrekt empfangen zu werden, trotzdem wird dann versucht, eine desired-temp von 1 zu setzen.
[09/11/2020, 20:48:37] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.ThermostatController","name":"SetTargetTemperature","payloadVersion":"3","messageId":"56339b01-9e79-4cdc-a99c-f1f17a66ce81","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"...DF9"},"endpointId":"CUL_HM_261B9E02","cookie":{"fuuid":"5c4b4266-f33f-b166-a890-9388fc31dd68cd88","device":"wz_TC_Climate"}},"payload":{"targetSetpoint":{"value":23,"scale":"CELSIUS"}}}}
[09/11/2020, 20:48:37] [FHEM] wz_TC_Climate: executing set cmd for TargetTemperature with value 1
Was hat eigentlich diese "failed" Meldung zu bedeuten?
[09/11/2020, 20:48:12] Starting SSH with -R 1234:127.0.0.1:35449 -oServerAliveInterval=90 -i /opt/fhem/.ssh/id_rsa -p 58824 fhem-va.fhem.de
[09/11/2020, 20:48:12] failed to refresh token: invalid_grant: 'The request has an invalid grant parameter : refresh_token'
[09/11/2020, 20:48:12] [FHEM] mappings for wz_TC_Climate: { TargetTemperature:
{ reading: 'desired-temp',
cmd: 'desired-temp',
delay: true,
minValue: 19,
maxValue: 1,
minStep: -18.5 },
klingt sehr komisch. Da läuft etwas schief. Hast Du ein "list" von wz_TC_Climate?
EDIT: klingt sehr komisch... und erklärt warum bei set 23 => 1 (maxValue) gesetzt wird, und bei set 12 => 19 (minValue)
Die Frage ist, woher dieses Mapping kommt.
Internals:
DEF 261B9E02
FUUID 5c4b4266-f33f-b166-a890-9388fc31dd68cd88
NAME wz_TC_Climate
NOTIFYDEV global
NR 158
NTFY_ORDER 50-wz_TC_Climate
STATE T: 22.7 desired: 20.0
TYPE CUL_HM
chanNo 02
device wz_TC
Helper:
DBLOG:
desired-temp:
fhemDbLog:
TIME 1604953424.09665
VALUE 20.0
humidity:
fhemDbLog:
TIME 1604953424.09665
VALUE 53
measured-temp:
fhemDbLog:
TIME 1604953424.09665
VALUE 22.7
state:
fhemDbLog:
TIME 1604953424.09665
VALUE T: 22.7 desired: 20.0
temperature:
fhemDbLog:
TIME 1604953424.09665
VALUE 22.7
READINGS:
2020-11-09 21:00:11 CommandAccepted yes
2019-02-07 14:21:36 R-dayTemp 22 C
2018-07-04 00:14:01 R-daylightSaveTime on
2018-07-04 00:14:01 R-heatCool heating
2018-07-04 00:14:01 R-modePrioManu all
2018-07-04 00:14:01 R-modePrioParty all
2018-07-04 00:14:01 R-nightTemp 20 C
2018-07-04 00:14:01 R-noMinMax4Manu off
2018-07-04 00:14:01 R-sendWeatherData on
2018-07-04 00:14:01 R-showHumidity temp
2018-07-04 00:14:01 R-showInfo time
2018-07-04 00:14:01 R-showSetTemp actTemp
2018-07-04 00:13:57 R-sign off
2018-07-04 00:14:01 R-tempOffset -1.5K
2018-07-04 00:14:01 R-weekPrgSel prog1
2018-07-04 00:14:01 R-winOpnBoost off
2020-04-19 23:10:52 R_P1_0_tempListSat 24:00 17.0
2020-04-19 23:10:52 R_P1_1_tempListSun 24:00 17.0
2020-04-19 23:10:52 R_P1_2_tempListMon 24:00 17.0
2020-04-19 23:10:52 R_P1_3_tempListTue 24:00 17.0
2020-04-19 23:10:52 R_P1_4_tempListWed 24:00 17.0
2020-04-19 23:10:52 R_P1_5_tempListThu 24:00 17.0
2020-04-19 23:10:52 R_P1_6_tempListFri 24:00 17.0
2020-04-19 23:10:52 R_P1_tempList_State verified
2020-04-19 23:10:56 R_P2_0_tempListSat 24:00 17.0
2020-04-19 23:10:56 R_P2_1_tempListSun 24:00 17.0
2020-04-19 23:10:56 R_P2_2_tempListMon 24:00 17.0
2020-04-19 23:10:56 R_P2_3_tempListTue 24:00 17.0
2020-04-19 23:10:56 R_P2_4_tempListWed 24:00 17.0
2020-04-19 23:10:56 R_P2_5_tempListThu 24:00 17.0
2020-04-19 23:10:56 R_P2_6_tempListFri 24:00 17.0
2020-04-19 23:10:56 R_P2_tempList_State verified
2020-04-19 23:11:02 R_P3_0_tempListSat 24:00 17.0
2020-04-19 23:11:02 R_P3_1_tempListSun 24:00 17.0
2020-04-19 23:11:02 R_P3_2_tempListMon 24:00 17.0
2020-04-19 23:11:02 R_P3_3_tempListTue 24:00 17.0
2020-04-19 23:11:02 R_P3_4_tempListWed 24:00 17.0
2020-04-19 23:11:02 R_P3_5_tempListThu 24:00 17.0
2020-04-19 23:11:02 R_P3_6_tempListFri 24:00 17.0
2020-04-19 23:11:02 R_P3_tempList_State verified
2020-11-09 21:01:02 boostTime -
2020-10-19 13:50:52 cfgState ok
2020-11-09 21:01:02 commReporting off
2020-11-09 21:01:02 controlMode manual
2020-11-09 21:23:44 desired-temp 20.0
2020-11-09 21:23:44 humidity 53
2020-11-09 21:23:44 measured-temp 22.7
2020-11-09 21:00:11 recentStateType ack
2020-11-09 21:23:44 state T: 22.7 desired: 20.0
2020-11-09 21:23:44 temperature 22.7
2020-04-19 22:14:57 trigLast fhem:81
2020-11-09 21:01:02 winOpenReporting off
helper:
peerFriend peerRtTc
peerOpt p:thermostat
regLst 1,7,8,9
cmds:
TmplKey :no:1604870088.91727
TmplTs 1604870088.91727
cmdKey 1:0:0::wz_TC:00AD:02:
cmdLst:
clear [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
controlManu (on|off|5.0..30.0;0.5)
controlMode (auto|manual|boost|day|night)
controlParty -temp- -startDate- -startTime- -endDate- -endTime-
desired-temp (on|off|5.0..30.0;0.5)
getConfig noArg
getRegRaw (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
inhibit [(on|{off})]
peerBulk -peer1,peer2,...- [({set}|unset)]
peerChan -btnNumber- -actChn- [({single})] [({set}|unset)] [(actor|remote|{both})]
regBulk -list-.-peerChn- -addr1:data1- -addr2:data2-...
regSet [(prep|{exec})] -regName- -value- [-peerChn-]
sign [(on|{off})]
tempListFri [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListMon [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListSat [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListSun [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListThu [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListTmpl [({verify}|restore)] [[-file-:]-templateName-]
tempListTue [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempListWed [(prep|{exec})] [({p1}|p2|p3)] -HH:MM- -temp- [...]
tempTmplSet -tempTmpl-
tplDel -tplDel-
tplSet_0 -tplChan-
lst:
condition slider,0,1,255
peer
peerOpt
tplChan
tplDel
tplPeer
rtrvLst:
cmdList [({short}|long)]
deviceInfo [({short}|long)]
param -param-
reg -addr- -list- [-peerChn-]
regList noArg
regTable noArg
regVal -addr- -list- [-peerChn-]
saveConfig [-filename-]
tplInfo noArg
expert:
def 1
det 0
raw 0
tpl 0
role:
chn 1
shRegR:
07 00
shadowReg:
tmpl:
Attributes:
alexaName Heizung Wohnzimmer
expert defReg
group 10 FuBo
model HM-TC-IT-WM-W-EU
peerIDs 00000000,
room 10 Wohnzimmer
userReadings temperature:measured-temp.* { ReadingsVal("wz_TC_Climate","measured-temp",0) }
widgetOverride desired-temp:slider,19,.5,24,1
Nun habe ich einem anderen TC (im Schlafzimmer) einen AlexaName verpasst, neue Geräte suchen lassen, FHEM neu gestartet - diesen TC kann ich korrekt einstellen.
Meine Vermutung anhand des Codes: widgetOverride. Hast Du auch das gleiche widgetOverride auf dem neuen Thermostat?
nein, dort gibt es kein widgetOverride.
Mal schauen, was passiert, wenn ich das Attribut lösche - wobei es das Attribut schon länger gibt als die Anbindung des Thermostaten an alexa.
Und es gab ja Zeiten, in denen das schon funktioniert hatte.
Zitat von: amenomade am 09 November 2020, 21:40:43
Meine Vermutung anhand des Codes: widgetOverride.
Volltreffer.
Ohne widgetOverride funktioniert das Stellen problemlos.
fhem.js
if( match[3] ) {
var values = match[3].split(',');
if( match[3].match(/slider/ ) ) {
this.mappings.TargetTemperature.minValue = parseFloat(values[0]);
this.mappings.TargetTemperature.maxValue = parseFloat(values[2]);
this.mappings.TargetTemperature.minStep = values[1];
} else {
this.mappings.TargetTemperature.minValue = parseFloat(values[0]);
this.mappings.TargetTemperature.maxValue = parseFloat(values[values.length-1]);
this.mappings.TargetTemperature.minStep = values[1] - values[0];
}
}
Jetzt verstehe ich nicht ganz, warum er anscheinend trotz "slider" den "else" Zweig nimmt... Und der Code hat sich seit Juni nicht geändert.
woher kommt denn fhem.js ?
Vom nodejs package https://www.npmjs.com/package/alexa-fhem
Dort ist Repository = https://github.com/justme-1968/alexa-fhem
fhem.js: https://github.com/justme-1968/alexa-fhem/blob/master/lib/fhem.js
EDIT: Lokal wird es nw. in /usr/local/lib/node_modules/alexa-fhem/lib installiert
ok, danke. So tief hatte ich nicht gesucht :)
Nächster Test:
Ich habe das Attribut widgetOverride wieder genau wie vorher in das device eingetragen.
Das Setzen der Temperatur über alexa funktionierte danach trotzdem noch.
Und zwar genau bis zum nächsten FHEM Neustart... danach wieder das gleiche Problem wie eingangs beschrieben.
Eigentlich ist es ein Bug in fhem.js
Ich habe das gleiche Pb wie Du mit widgetOverride slider, und kein Pb ohne
An der schon erwähnten Stelle (Zeile 2488), statt:
if( match[3].match(/slider/ ) ) {
sollte es
if( match[2].match(/slider/ ) ) {
sein, weil
- match[2] = slider,19,.5,24,1
- match[3] = 19,.5,24,1
Ich habe es mit inkl. widgetOverride bei mir getestet, und somit werden minValue & Co ordentlich gesetzt.
Ob das Nebeneffekte haben kann, bin ich nicht 100% sicher, aber Andre sollte es sich anschauen.
Das Setzen des Widgetoverrides wird erst wirksam wenn Du ein "set alexaDevice restart|reload" machst.
danke. ich habe es eben eingecheckt.
der fehler war schon immer (d.h. seit der ersten version mit thermostat support) drin. ist aber noch nie aufgefallen da scheinbar die meisten die drop-down variante verwenden.
Eben habe ich ein update von alexa-fhem gemacht, das Problem scheint gelöst zu sein. Danke für die Hilfestellungen!
Gibt es eigentlich ein debian Paket von npm, mit dem die Warnungen nicht mehr auftreten?
Die Warnungen waren mir neulich auch schon bei der Neuinstallation von RaspiOS (Debian 10.6) aufgefallen.
ii npm 5.8.0+ds6-4+deb10u2 all package manager for Node.js
npm WARN npm npm does not support Node.js v10.21.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
npm WARN npm You can find the latest version at https://nodejs.org/
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
/usr/local/bin/alexa-fhem -> /usr/local/lib/node_modules/alexa-fhem/bin/alexa
+ alexa-fhem@0.5.57
updated 1 package in 8.388s
EDIT:
ein npm install npm@latest -g
hat die Warnungen beseitigt.
# npm --version
6.14.8