Hallo zusammen,
ich habe o.g. Heizungstthermostat mit der Deconz software erfolgreich angelernt, bekomme diesen auch angezeigt und auch die Temperatur wird angezeigt. Dies habe ich auch erfolgreich unter FHEM hinzugefügt. Ich möchte dieses Heizungsthermostat gerne über Alexa steuern. Hat hier jemand eine Idee?
list:
Internals:
CFGFN
DEF sensor 3 IODev=deCONZ
FUUID 5fc52b80-f33f-0677-7f8e-c524153b6ef129fc
FVERSION 31_HUEDevice.pm:0.217030/2020-04-16
ID S3
INTERVAL
IODev deCONZ
NAME Heizungsthermostat
NR 200
STATE 6.5 °C
TYPE HUEDevice
lastupdated 2020-11-30 17:53:12
lastupdated_local 2020-11-30 18:53:12
manufacturername Eurotronic
modelid SPZB0001
name Temperaturregler
on 1
reachable 1
swversion 22190930
type ZHAThermostat
uniqueid 00:15:8d:00:04:3b:2e:af-01-0201
READINGS:
2020-11-30 18:53:12 heatsetpoint 6.5
2020-11-30 18:53:12 mode auto
2020-11-30 18:53:12 reachable 1
2020-11-30 18:53:12 temperature 22.5
2020-11-30 18:53:12 valve 100
helper:
devtype S
reachable 0
update_timeout 1
configList:
json:
ep 1
etag a1ec9dad8d0e86c48274cbc42d720761
lastseen 2020-11-30T17:53Z
manufacturername Eurotronic
modelid SPZB0001
name Temperaturregler
swversion 22190930
type ZHAThermostat
uniqueid 00:15:8d:00:05:3d:2c:af-01-0201
config:
battery
displayflipped
heatsetpoint 650
locked
mode auto
offset 0
state:
lastupdated 2020-11-30T17:53:12.161
temperature 2250
valve 255
setList:
Attributes:
IODev deCONZ
alexaName Heizung
genericDeviceType thermostat
model SPZB0001
room Alexa_Geräte,HUEDevice
stateFormat heatsetpoint °C
Bekomme von Alexa immer die Antwort Heizung unterstützt das nicht, also scheinen die Werte nicht gegeben zu sein. Habe hier zum HM gelesen das man das gemapt bekommt. Ist sowas hier vllt die Lösung? Bin da nicht so fit dirn.
Ok, ich bekomme so zumindest eine Antwort auf die Temperatur aber das ändern der Temperatur geht nicht
attr Heizungsthermostat homebridgeMapping TargetTemperature=heatsetpoint::heatsetpoint,,minValue=5,maxValue=30,minStep=0.5,cmd=control,nocache=true CurrentTemperature=temperature
jemand eine Idee?
Ich antworte mir mal selbst als
heatsetpoint
ist defintiv der Wert den ich auf dem thermostat einstelle sprich vorgebe als Bsp. 20,5
jetzt wollte ich testen ob er den Wert auch setzen kann aber ich weiß garnicht ob das so einen Sinn ergibt wie ich das mache.
Habe jetzt einfach mit
setreading Heizungsthermostat heatsetpoint 20
und
setreading Heizungsthermostat heatsetpoint 20.5
versucht aber das führt nur dazu das das Thermostat danach nicht mehr erreichbar ist sprich ich muss die Batterien rausnehmen damit es sich wieder in Phosocn repektove FHEM findet
Kann mir wenigstens jemand erklären wie ich in FHEM manuell einen set befehl bei einem Reading absetze? Ist mein Ansatz richtig?
Vermutlich fehlt da mind. ein Bausteinchen: Es gibt ein attrTemplate für den Spirit@HUEDevice (C_01_Eurotronic_SPZB0001_Spirit_ZigBee).
Da wird (in Senderichtung) irgendwas rumgerechnet, damit das wieder passt.
Und dann sollte der "normale set-Befehl" funktionieren, wie er auch in der Detailansicht zu sehen ist:
set Heizungsthermostat heatsetpoint 20.5
Danke für deine Antwort. Wie soll ich das mit dem attr verstehen bzw was muss ich da genau mit setzen?
Es ist nicht ein attr, das gesetzt wird, sondern ein (standardisierter) Satz von Attributen. Der Mechanismus an sich ist hier erklärt: https://wiki.fhem.de/wiki/AttrTemplate, und wenn dein FHEM einigermaßen akutell ist und du das nicht deaktiviert hast, ist das attrTemplate auch bei den settern am Gerät (Detail view) zu finden.
Da ich diese Hardware aber nicht habe, kann ich dir nicht wirklich viel mehr dazu sagen, aber die SuFu sollte eigentlich mind. einen Link ergeben, wie es zu dem attrTemplate für den ZigBee-HUEDevice-template kam ;) ...
Ah okay ;D habs gefunden was du meinst aber schalten tut sich da nichts. Werte sind aber jetzt einige angelegt worden z.b. wie du schon sagtest wie angesprochen wird usw.
Danke schonmal
Zitat von: mister am 01 Dezember 2020, 16:56:05
aber schalten tut sich da nichts.
attrTemplate ist auch kein Schaltbefehl im engeren Sinne. Wenn ich den Code richtig deute, führt er nur dazu, dass der setter heatsetpoint einen Wertebereich bekommt und dann die "Auswahl" bei Absetzen des Befehls in einen (für die Bridge/das Zieldevice) "lesbaren" Wert umgerechnet wird.
Das ganze "drumrum" (Wochenpläne z.B. mit weekprofile/WeekdayTimer) musst du dann schon "manuell" ergänzen. Aber eines nach dem anderen, Rom und so...
Ok, läuft jetzt mit dem Befehl
set Heizungsthermostat heatsetpoint 20.5
8)
danke danke
aber mit Alexa bekomme ich das ganze nicht hin. Sie kann mir zwar die Temperatur nennen aber wenn ich sage sie solll die Temp auf X stellen kommt "Heiz... unterstützt das nicht"
Woran kann das liegen?da fehlt doch bestimm nur ein attr oder?
Vermutlich zwei - aber ich bin da eigentlich der falsche, weil ich keine Sprachsteuerung nutze...:
Zum einen muss vermutlich "genericDeviceType" auf "thermostat" gesetzt werden. Dann kann es schon klappen, wenn nicht, brauchst du ein "mapping", und ab da bin ich dann komplett verloren, mal abgesehen von der Grundaussage: möglichst wenig in das Attribut packen...
Das mit genericDeviceType hatte ich auch gedacht aber das habe ich gesetzt, hat aber nicht geändert. Ich vermute da muss ein Attribut gesetzt werden das Alexa "weiß" was geschaltet werden soll?! Hat da jemand eine Idee für mich?
@beta-user danke trotzdem ich bin ja schon ein ganzesStück weiter :)
hab hier https://forum.fhem.de/index.php?topic=79414.0 (https://forum.fhem.de/index.php?topic=79414.0) was gefunden, das könnte schon in die Richtung gehen denke ich aber ich weiß nicht wie grad der letzte Absatz umzusetzen wäre
Ich sollte mal genauer gucken
es gibt auch hierführ ein attrtaplate
das sagt dann folgendes:
generic template to set attributes for identifying this device by speech speechcontrol software. This template will call several sub-templates - dependent on the speech speechcontrol solutions which are in use in your installation. Pls. do not use one of the subtemplates directly. Call e.g. with set xy attrTemplate speechcontrol_general_naming_master_template
option:{my @devices=devspec2array("TYPE=alexa");; $devices[0] ? return 1 : return 0}
set DEVICE attrTemplate speechcontrol_alexa_specials
option:{my @devices=devspec2array("TYPE=siri");; my @alexas=devspec2array("TYPE=alexa");; ($devices[0] && !$alexas[0]) ? AttrVal("DEVICE","genericDeviceType","none") eq "none" ? 0 : 1 : 0 }
option:{my @devices=devspec2array("TYPE=gassistant");; $devices[0] ? return 1 : return 0}
wennn man das setzt bekomme ich ein Abfragefenster in welches ich z.b. den Alexa Namen eingeben kann. Das hab ich alles gemacht und neugestartet aber leider ohne erfolg :(
Habe jetzt auch mal Alexa-fhem auf 0.5.57 aktualisiert das hat auch nichts gebracht.
Hallo,
ich habe es auch nicht geschafft, das Thermostat selbst in Alexa einzubinden. Aber über einen Umweg (dummy + notify) ist es mir gelungen:
Dummy als generic Device Type mit desired-temp eingerichtet, damit Alexa das Device als Thermostat erkennt
define d_Heizung_DG_AZ dummy
attr d_Heizung_DG_AZ alexaName Heizung Arbeitszimmer
attr d_Heizung_DG_AZ genericDeviceType thermostat
attr d_Heizung_DG_AZ readingList desired-temp
attr d_Heizung_DG_AZ room AlexaRoom
attr d_Heizung_DG_AZ setList desired-temp
attr d_Heizung_DG_AZ stateFormat desired-temp
attr d_Heizung_DG_AZ widgetOverride desired-temp:16,16.5,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22
Notify, um das eigentliche Thermostat zu steuern:
define nt_Thermostat_DG_AZ_Zig notify d_Heizung_DG_AZ:desired-temp.* {
my $soll = ReadingsVal("d_Heizung_DG_AZ","desired-temp",14);
fhem("set Thermostat_DG_AZ_Zig heatsetpoint $soll");
}
Ein wenig von hinten durch die Brust... aber es funktioniert und war in der Umsetzung schneller, als das hombridge Mapping in Kombination mit Alexa zu verstehen.
LG,
Roland
Ich habe die Lösung selbst gefunden:
Es muss noch ein homebridgeMapping gemacht werden:
TargetTemperature=heatsetpoint::heatsetpoint,minValue=16,maxValue=30,minStep=0.5
Ich hab nur noch keine Lösung wie ich die Heuzung "Aus" Schalte
Zitat von: mister am 01 Dezember 2020, 23:28:43
Ich habe die Lösung selbst gefunden:
Es muss noch ein homebridgeMapping gemacht werden:
TargetTemperature=heatsetpoint::heatsetpoint,minValue=16,maxValue=30,minStep=0.5
Ich hab nur noch keine Lösung wie ich die Heuzung "Aus" Schalte
:) qed...
Ich versuche mal, meine rudimentären Kenntnisse hier breitzutreten:
- Das mit der Sprachsteuerung klappt dann automatisch, wenn "gute" Readingnamen verwendet werden. Ist das - wie hier - nicht der Fall, braucht man eben die Angabe des "genericType" und der Readings. Betr. Heizungen ist da u.a. auch hier (und drumrum) was zu finden: https://forum.fhem.de/index.php/topic,97989.msg1099201.html#msg1099201
- Da ist auch zu lesen, dass es für den "Betriebsmodus" vermutlich ein eigenes Mapping braucht ("mode"). Wie man das konkret umsetzt: K.A.. Würde tippen, dass man evtl. mit einem eventMap weiterkommen könnte. Da solltest du dich aber ggf. nochmal intensiver einlesen, es gibt da mehrere Formen, und eventuell brauchst du was komplexes.
Zitat von: mister am 01 Dezember 2020, 18:09:09
Ich sollte mal genauer gucken
es gibt auch hierführ ein attrtaplate
...jein...
Wenn diese attrTemplate für dich direkt nützlich gewesen wären, hätte ich dir das schon verraten - schau mal, wer der Maintainer von denen ist...
Zum Verständnis: Der in der fraglichen Datei enthaltene Satz von attrTemplate ist eigentlich eher für den "intenen Gebrauch" gedacht und daher für die User gar nicht direkt sichtbar.
Man kann die verwenden, wenn man weiß, was man tut und die Sprachsteuerungsfähigkeit nachrüsten will, aber Zielgruppe sind eigentlich die Maintainer der "normalen" attrTemplate-Files (=für huedevice.template Shojo, siehe auch https://forum.fhem.de/index.php/topic,101829.html).
Du könntest daher allen künftigen Nutzern des Spirit@HUEDevice helfen, indem du Shojo (in dem betreffenden Thread) einen Vorschlag zur Ergänzung machst, der ein Sprachsteuerungs-attrTemplate aufruft ;) . Hier müßte dann wohl das komplette mapping mit übergeben werden, wie in speechcontrol_gdt_and_mapping beschrieben:
Zitat
set xy attrTemplate speechcontrol_gdt_and_mapping GENERICDEVTYPE=contact HOMEBRIDGEMAPPING= "ContactSensorState=state,values=closed:CONTACT_DETECTED;;open:CONTACT_NOT_DETECTED"
Macht m.E. bereits jetzt Sinn, aber super wäre es natürlich, wenn du das mit dem Mode auch noch hinbiegen könntest (oder den (getesteten!) Vorschlag in dem Thread einkippst und dann mit Verweis auf hier um Hilfe für das "mode"-Thema fragst ;) . So hätten alle was davon...)
Ok, danke für deine Ausführungen. Ich habe noch etwas anderes festgestellt. Wenn ich alexa bitte auf werte unterhalb 16 grad zu stellen, wird immer 16 grad eingestellt und sie antwortet mit "ist auf 16 grad gestellt"
Kann sich da jemand einen reim draus machen.
Hängt das vllt mit der configList zusammen:
/mode (.*)/:{"mode":"$1"}
/heatsetpoint (.*)/:perl:{'{"heatsetpoint":' . $VALUE1 * 100 . '}'}
/displayflipped (.*)/:{"displayflipped": $1 }
lock:{"locked": true }
unlock:{"locked": false }
;D ...eher mit der von dir für die Sprachsteuerung angegebenen Untergrenze:
minValue=16,
Ja richtig hab ich auch schon gesehen ich trottel ;D