Ich möchte gerne meine Max! Thermostate in iobroker integrieren.
Einen Max!Cube habe ich mit aculfw geflasht und der läuft jetzt als CUN. In homegear habe ich 4 Thermostate mit dem CUN gepaired. Die Verbindung zwischen homegear und iobroker läuft über den iobroker Adapter hm.rpc. Dort kann ich die Thermostate auch sehen. Allerdings erhalte ich weder Werte, noch kann ich irgendetwas steuern.
Nach ein wenig Lektüre hier im Forum habe ich mir jetzt mosquitto und node-red installiert in der Hoffnung, daß ich damit weiterkomme.
Unter node-red habe ich noch node-red-contrib-homegear-mqtt installiert, aber das kann wohl mit den Max! Thermostaten nicht umgehen.
Ich brauche wohl noch einen Stoß in die richtige Richtung…
Erstes Ziel wäre, mit meinen Xiaomi Fensterkontakten (Zigbee) die Heizkörper wegzuschalten.
Schau dir auch mal node-blue an - das ist das homegear-node-red
node-red-contrib-homegear-mqtt wird glaube ich länger nicht mehr gepflegt. Da möge man mich aber korrigieren.
Homegear verhält sich nach Außen aber komplett wie eine echte CCU und bildet jedes ihm bekannte Gerät als Homematic-Gerät ab. Du solltest also alle Werte bekommen.
Deine Max-Thermostate senden nicht ständig - da soll ja soweit wie möglich Batterie gespart werden. Was passiert wenn du die Temperatur eines Thermostats änderst? Kommt dein ein Wert bei deiner jetzigen Config mit io.broker und dem hm.rpc-Adapter an?
Hmm, irgendwas passt da in meinem System noch nicht.
Ich habe iobroker mit hm.rpc am Laufen. Und unter homegear habe ich die Thermostaten angelernt. Irgendwie passt die Schnittstelle noch nicht. Der Adapter hm.rpc lässt sich manchmal auch nicht starten. Mir sind die Einstellungen für hm.rpc auch nicht so ganz klar und habe damit auch schon rumgespielt, aber viel schlauer bin ich da jetzt auch nicht geworden.
Vielleicht muß ich die Thermostaten auch nochmal aus dem iobroker entfernen und neu erkennen, damit das funzt.
Jedenfalls sehe ich die Thermostaten mit ihren 4 Channels, wobei nur die Channels 0 und 1 items enthalten - da passt mMn auch soweit. Aber ich kann z.B. die Temperatur eines Thermostaten weder lesen (es wird nichts angezeigt) noch schreiben. Auch nach Änderung der Temp an den Thermostaten, wird im iobroker kein Wert angezeigt.
Beim Versuch, die Comfort Temp. zu schreiben bekomme ich im log:
Leider bin ich absolute io.Broker noob und kann dir da nicht helfen. Leider verstehe ich auch den MQTT-Zusammehang nicht (Log) da du ja mit dem Adapter per RPC kommunizieren solltest.
Du könntest zumindest mal deinen Mosquitto installiert lassen und per mqtt-spy (o.ä.) mal schauen ob den Homegear per MQTT Wertänderungen mitbekommt. Dann kannst du ausschließen, dass es an homegear liegt und bei io.Broker weitersuchen.
Was steht in der mqtt.conf von Homegear?
//edit:
äähmm, die Temperatur wird auch nicht auf COMFORT_TEMPERATURE geschrieben sondern auf SET_TEMPERATURE…
COMFORT_TEMPERATURE ist glaube für die Temperatur für AUTO_MODE
Die aktuelle Temperatur findest du unter ACTUAL_TEMPERATURE
Den mqtt habe ich gestern noch zusätzlich installiert, weil du in deinen posts hier berichtet hast, daß du mit deinen Geräten komplett über mqtt kommunizierst…
mqtt.conf:
# mqtt.conf
#
# MQTT settings.
#
# Set this to "true" to enable MQTT.
# Default: false
##enabled = false
enabled = true
# Hostname or IP address of your MQTT message broker.
brokerHostname = localhost
# Port of your MQTT message broker.
brokerPort = 1883
# Name of this client.
clientName = Homegear
# The prefix to use. Every topic starts with this prefix.
# Default: homegear
prefix = homegear
# Unique ID of this Homegear instance. Change this, have you have multiple
# Homegear installations.
# This is not used for IBM Bluemix Watson IOT platform
homegearId = 1234-5678-9abc
# Tells the MQTT server to retain received MQTT messages. New clients will then
# receive the last value of a topic on connection.
# Variables of type "Action" are not retained.
retain = true
# When authentication by username and password is enabled, uncomment the following two lines and fill in your username
# and password.
#username = myUser
#password = myPassword
# The number of parallel processing threads.
processingThreadCount = 5
### Topic payload encodings ###
# Enable topic: homegear/HOMEGEAR_ID/plain/PEERID/CHANNEL/VARIABLE_NAME
# Contains the value as is. E. g.: 43.7.
plainTopic = true
# Enable topic: homegear/HOMEGEAR_ID/json/PEERID/CHANNEL/VARIABLE_NAME
# Puts the value in a JSON array to be JSON-compliant: [43.7].
jsonTopic = true
# Enable topic: homegear/HOMEGEAR_ID/jsonobj/PEERID/CHANNEL/VARIABLE_NAME
# Puts the value into a JSON object. The key is value: { "value": 43.7 }.
jsonobjTopic = true
### TLS options ###
# Set to "true" to enable SSL encryption for MQTT.
enableSSL = false
# The path to the certificate authority's certificate
#caFile = /path/to/ca-certficate
# verifyCertificate checks if the server certificate received by the
# MQTT broker is signed by one of the root CAs in /etc/ssl/certs. If you use
# a self signed certificate, please put your root certificate in that
# directory. Only disable the verification for testing purposes. Without
# verification any attacker can pose as your MQTT broker.
# Default: verifyCertificate = true
#verifyCertificate = true
# The path to the PEM encoded client certificate.
#certPath = /etc/homegear/mqtt.crt
# The path to the PEM encoded client keyfile.
#keyPath = /etc/homegear/mqtt.key
### IBM Bluemix Watson IOT platform settings ###
# Uses bmx*, retain, processingThreadCount and TLS settings, all others are skipped. Please note that it was tested without TLS encryption only.
# bmxTopix enables IBM Bluemix adapter and blocks all other topic types as IBM Bluemix Watson IOT Platform disconnects when unsupported packet types appear
#bmxTopic = false
# For IBM Bluemix Watson IOT Platform use messaging.internetofthings.ibmcloud.com, do not add the <orgId> at the beginning
#bmxHostname=messaging.internetofthings.ibmcloud.com
# Port for MQTT broker
#bmxPort = 1883
# Set this to your orgId created in Bluemix
#bmxOrgId = orgId
# Set this to your gateway typeId created in Bluemix. This has to be created as "gateway type", not "device type"
#bmxGwTypeId = gwTypeId
# This sets the device ID for devices created by MQTT adapter in Bluemix. Requested device type is created automatically by IOT platform.
#bmxDevTypeId = devTypeId
# Should be set to "iot-2/type"
#bmxPrefix = iot-2/type
# Set to use-token-auth if using token authentication
#bmxUsername = use-token-auth
# Set to token generated for this gateway
#bmxToken = myBluemixToken
Der hostname vom Raspberry ist übrigens “raspberrypi”.
Ok, ich werde dann mal SET_TEMPERATURE testen. Aber ACTUAL_TEMPERATURE ist halt auch leer (kein Wert).
//Edit: bringt auch nichts.
Ich denke, daß die hm Adapter von iobroker nur auf eine CCU zugreifen können. Ich hatte angenommen, daß die auch auf homegear (quasi als Ersatz für eine CCU) zugreifen können und ich keine CCU (piVCC) benötige…
Hmm… das dauert einen Moment. Wie gesagt, die Thermostate senden nicht direkt. Es gilt Energiesparen und die 1%-Regel. Warte mal ein paar Minuten.
Schau dir das Ganze auch mal per MQTT an und was sagt das Homegear-Log auf LogLevel 5? Wird da angezeigt, dass ein Max-Paket empfangen wird, wenn du die Temperatur am Thermostat änderst?
Das Loglevel kannst du im laufenden Betrieb umstellen in der homegear-Konsole mit dl 5. dl 3 oder homegear-restart schaltet wieder auf “Normalzustand”.
Ja, eigentlich schon. Aber egal was ich an Werten geschrieben habe, es kam nicht bei den Thermostaten an.
Also habe ich mal alle Thermostate gelöscht (man sollte auch nur mit einem anfangen, wenn man das das erste Mal macht…) und einen neu angelernt (vorher Werksreset). Und jetzt gehts - ohne MQTT, sondern mit dem Adapter hm.rpc.
Ich kann Werte schreiben und die kommen am Thermostat an.
Jetzt kämpfe ich nur noch mit dem Regelverhalten der Thermostaten.
Über iobroker kann ich (grafisch) SET_TEMPERATURE nur “On” bzw. “Off” schalten - also binär (im Kommentar steht da dann “Off - 4.5°”, “On - 30.5”). Über ein Skript kann ich nen Real (float) senden, also z.B. “25.5”. Wenn ich aber “30.5” sende, sollte nach meinem Verständnis dann “On” am Thermostat angezeigt werden. Stattdessen wird “30” angezeigt. Aber das werde ich wohl auch über probieren herausfinden, oder ich mache nen neuen thread auf.
Setzen von Werten sollte aber ohne Probleme auch über MQTT funktionieren. Muss aber in das entsprechende Topich geschrieben werden (Siehe Blogartikel).
Du kannst nicht auf die Werte schreiben, die du in plain liest.
Aber super, dass es funktioniert.
Damit hast du absolut recht!
On wird nicht am Thermostat angezeigt, nur Off. Durch das Senden von 31.5 wird einfach die zuvor eingestellte - oder durch den Zeitplan vorgesehene Temperatur - “wiederhergestellt”.
On wird nicht am Thermostat angezeigt, nur Off . Durch das Senden von 31.5 wird einfach die zuvor eingestellte - oder durch den Zeitplan vorgesehene Temperatur - “wiederhergestellt”.
Wenn ich über iobroker SET_TEMPERATURE auf ‘On’ schalte, wird das schon am Thermostat angezeigt. Ebenso, wenn ich manuell aufdrehe und die 30 überschreite.
Ich werde mal die Suche bemühen. Die Programmierung der MAX!Thermostate ist ja bestimmt irgendwo beschrieben.