NEWS
Test Adapter Controme v0.3.x GitHub
-
Aktuelle Test Version 0.3.0 Veröffentlichungsdatum 24.04.2022 Github Link https://github.com/MadErstam/ioBroker.controme ioBroker adapter für Controme mini server
Verbindet ioBroker mit einem lokalen Controme Mini Server über die offizielle API.Controme ist eine smarte Steuerung für Fußbodenheizungen, Heizkörper und die gesamte Heizungsanlage. Herzstück der Anlage ist der Controme Mini Server, ein lokales Raspberry PI-basiertes System. Weitere Informationen zum Controme Smart-Heat-System findet ihr auf der Controme Website.
Der Adapter liest periodisch die Raumtemperaturen vom Miniserver und erlaubt aktuell, die Solltemperaturen auf dem Server aus ioBroker heraus zu setzen.
Um den Adapter nutzen zu können, musst du die Controme API vom Support (
kostenpflichtig) aktivieren lassen. Der Adapter ist nicht gedacht als Ersatz der Controme UI, sondern soll grundlegende Daten und Funktionen bereitstellen, um Controme mit anderen Smarthome-Geräten und -Services zu verknüpfen.Der Adapter stellt die folgenden Daten für jeden Raum, der in der Controme UI definiert wurde, bereit:
Object Type Description room device Jeder Raum ist mit seiner Controme Raum-ID repräsentiert und trägt den Raumnamen als Gerätenamen actualTemperature state Die Ist-Temperatur des Raums mit der Rolle level.temperature. Dieser State kann nur gelesen werden. Wenn kein Raumtemperatur-Sensor für einen bestimmten Raum definiert wurde, liefert der Controme Miniserver NULL als Temperatur zurück. setPointTemperature state Die Solltemperatur des jeweiligen Raums mit der Rolle value.temperature. Dieser State kann gelesen und geschrieben werden. temperatureOffset state Die Temperaturkorrektur des jeweiligen Raums, bei der sich die Sensormesswerte von der Ist-Temperatur unterscheiden. Die Temperaturkorrektur-Werte können manuell in der Controme UI gesetzt werden oder werden von unterschiedlichen Controme-Modulen errechnet. Dieser State kann nur gelesen werden. offsets channel Offsets werden zur Solltemperatur des jeweiligen Raums hinzugerechnet oder abgezogen. Dieser Channel gruppiert alle Offsets, die zum jeweiligen Raum gehören. offsets.[OFFSET-GROUP] channel Jede Offset-Quelle ist in einem eigenen Channel innerhalb des offsets-Channels des Raums, zu dem die Offsets gehören, dargestellt. offsets.[OFFSET-GROUP].[OFFSET] state Die einzelnen Offset-States repräsentieren die unterschiedlichen Anpassungen, die vom Controme-Miniserver vorgenommen werden. Diese States können nur gelesen werden. offsets.api channel Die Offset-Gruppe "api" ist besonders, weil die darin befindlichen States geschrieben werden können und damit genutzt werden können, von ioBroker den Raumtemperatur-Offset zu beeinflussen. In dieser Gruppe können neue Offset-States mit beliebigem Namen erzeugt werden, die ebenfalls an den Controme Miniserver übermittelt werden. Die api-Offsetwerte werden vom Server alle 10 Minuten zurückgesetzt. offsets.api.api state Dieser Offset-State wird standardmäßig vom Adapter erzeugt. Mit diesem State kann der Raumtemperatur-Offset angepasst werden. Dieser State kann gelesen und geschrieben werden. sensors channel Sensoren liefern die tatsächlichen Messwerte für den jeweiligen Raum. Dieser Channel gruppiert alle Sensoren, die dem jeweiligen Raum zugeordnet sind. sensors.[SENSOR-ID] device Jeder Sensor ist als eigenes Device im sensors-Channel des Raums repräsentiert, dem der Sensor zugeordnet ist. sensors.[SENSOR-ID].isRoomTemperatureSensor state Dieser boolsche State gibt an, ob der Sensor als Raumtemperatursensor genutzt wird. Für jeden Raum kann nur ein einzelner Raumtemperatursensor genutzt werden. Dieser State kann nur gelesen werden. sensors.[SENSOR-ID].actualTemperature state Dieser State gibt das Messergebnis des jeweiligen Sensors wieder. Der State kann gelesen und geschrieben werden, allerdings akzeptieren nur 1Wire-Sensoren oder virtuelle Sensoren eingegebene Werte. Wenn Sie einen Wert für einen realen Sensor setzen, wird dieser überschrieben, wenn die nächste Messung vorgenommen wird. outputs channel Ausgänge steuern typischerweise Ventile für die Heizungen/Heizschlangen des Raums. Dieser channel fasst alle Ausgänge des jeweiligen Raums zusammen. outputs.[OUTPUT-ID] state Jeder Ausgang wird repräsentiert durch einen State im Output Channel des Raums, zu dem er gehört. Die OutputID repräsentiert den Ausgang des zugehörigen Gateways. gatewayMAC device Each gateway is represented with its MAC address and the gateway name as device name. gatewayMAC.gatewayType state The type of the gateway. Currently, there are four controme gateways: floor gateway smart, floor gateway pro, universal gateway mini, universal gateway pro. gatewayMAC.isUniversal state Indicates if gateway is one of the universal gateways. Data from universal gateways need to be polled in a different way. gatewayMAC.outputs channel Outputs typically control valves that control the room's heating for floor gateways or devices in the heating room (pumps, valves). This channel groups all outputs of the respective gateway. gatewayMAC.outputs.[OUTPUT-ID] state Each output is represented by a state within the output channel of the gateway it is assigned to. The output ID number represents the number of the output on the gateway as setup in the configuration. Die API-Dokumentation findet ihr auf der Controme Website.
Um den Adapter zu starten, müssen die folgenden Einstellungen in den Admin-Einstellungen der Adapterinstanz vorgenommen werden:
Data field Type Description url text Die URL des Controme Miniservers. Kann entweder die IP-Addresse oder der Name sein. house ID number Die ID der Controme-Installation. Sollte entsprechend der API entweder 1 oder 2 sein. interval number Das Abfrageintervall in Sekunden, in dem die Daten vom Server abgerufen werden. Der Wert sollte zwischen 15 und 3600 Sekunden liegen. Zu niedrige Werte sind sinnlos, da Controme die Sensorwerte typischerweise nur alle 3-5 Minuten aktualisiert. forceReInit checkbox Wenn diese Checkbox gewählt ist, lösche der Adapter die Objektstruktur in der ioBroker Datenbank und erstellt die Objekte vom Controme Miniserver neu. Diese Einstellung ist nur beim Erststart erforderlich oder wenn sich die Raumstruktur auf dem Controme Miniserver ändert. username text Der Benutzername, mit dem auf die Controme API zugegriffen werden soll. Dies ist typischerweise der Benutzername des Controme Hauptusers. password password Das Passwort des Nutzers, mit dem auf die Controme API zugegriffen werden soll. Dieses wird verschlüsselt gespeichert. gateways table All gateways that the adapter shall poll the data for have to be configures with three values: gateways.gatewayMAC string The MAC address of the individual gateway. gateways.type string The type of the respective gateway. Can be either Floor Gateway Smart/Pro, Universal Gateway Mini or Universal Gateway Pro. gateways.name string The name of the respective gateway. gatewayOutputs table All outputs of all gateways that the adapter shall poll the data for have to be configures with three values: gatewayOutputs.gatewayMAC string The MAC address of the individual gateway. This has to match one of the gatewayMAC values configured in the gateways table. Please note that currently, the adapter does not validate if the gateway MAC addresses match to those configured in the gateways table. So please pay attention that gateway MAC addresses match in both tables. gatewayOutputs.outputID number The output ID of the respective gateway that shall be polled. For mini gateways, this number has to be 1 to 8, for other gateways is can be 1 to 15. gatewayOutputs.outputName string The name of the respective output of the gateway. To Dos
- (in progress) Publish the adapter
- Add data validation to config fields
- (done) Extend data fields received from Controme mini server (e.g. humidity)
- (done) Add sensor data for each sensor and room
- Implement target temperature (temporary changes to desired temperature for room) next to setpoint temperature
- (done) Add option to set value for virtual sensors
- (done) Extend API polling (outputs, gateways)
Know Bugs
...Changelog
0.3.0
(MadErstam) Erweiterte Abfrage von APIs (Outputs, Gateways)
0.2.0
(MadErstam) Sensoren und Offsets hinzugefügt
0.1.2
(MadErstam) Vorbereitungen für Adapter-Release
0.1.0
(MadErstam) initial releaseFeedback gerne hier oder direkt in Github als Issues.
Ich habe den Adapter auch in Latest eingetragen und einen Pull Request gestellt. Demnächst sollte er dann hoffentlich auch direkt zu installieren sein.
- (in progress) Publish the adapter
-
@erstam Installiert und liefert die Daten wie beschrieben.
Übrigens habe ich die API mir nicht aktivieren lassen.Zum Objekt actualTemperature:
Bei Verwendung eines virtuellen Sensors wird dort der Durchschnittswert angezeigt. -
@fredf: Danke für die Rückmeldung! Gut zu wissen, dass die API auch ohne Aktivierung zu funktionieren scheint, das spart (anderen) dann Geld.
Als actualTemperature wird ja die Raumtemperatur zurückgemeldet. Bei virtuellen Sensoren kann ich ja einstellen, ob ich mehrere Sensoren zum Mittelwert oder anders berechnet zusammensetzen möchte. Ich vermute, du hast die Verknüpfung über den Mittelwert gemacht?
-
@erstam sagte in Test Adapter Controme v0.1.x GitHub:
Als actualTemperature wird ja die Raumtemperatur zurückgemeldet. Bei virtuellen Sensoren kann ich ja einstellen, ob ich mehrere Sensoren zum Mittelwert oder anders berechnet zusammensetzen möchte. Ich vermute, du hast die Verknüpfung über den Mittelwert gemacht?
Musste ich nochmal nachschauen, aber ja, so habe ich es eingestellt.
-
Ich habe eine neue Version 0.2.0 in Github veröffentlicht. Diese ergänzt Sensor- und Offset-Objekte und die entsprechenden Prozeduren, diese in ioBroker zu modifizieren. Der erste Post in diesem Thread ist entsprechend angepasst.
Über Feedback würde ich mich freuen!
-
@erstam
Hallo Erstam,Erst einmal vielen Dank für deine Bemühungen, den Controme Adapter zu erstellen.
Ich habe den Adapter in der Version 0.2.3 am laufen, aber Probleme die Temperatur vom Controme MiniServer auszulesen. Das Problem habe ich hier geschildert.
Ich habe den Verdacht, dass die House ID beim Polling der Temperatur nicht bedacht, sondern immer statisch die House ID 1 versucht wird.
Ich habe mir den Quelltext auf Github angesehen. In der datei main.js wird bei der Erstellung der Objektstruktur in deinem Quelltext die House ID bedacht:
Ab Zeile 97
// Read room structure and create all required objects try { const url = "http://" + this.config.url + "/get/json/v1/" + this.config.houseID + "/rooms/"; const response = await got(url);
Beim polling der Temperatur hindoch sehe ich nur den Link für die statische House ID 1
Ab Zeile 163
// Start polling temperature data from the server in the defined update interval this.updateInterval = setInterval(() => { this.log.debug("Polling temperature data from mini server"); const url = "http://" + this.config.url + "/get/json/v1/1/temps/";
Ich bekomme bei meinem MiniServer nur über die House ID 2 Daten, wenn ich den folgenden Link im Browser eingebe http://192.168.178.39/get/json/v1/2/temps/
Versuche ich den Link http://192.168.178.39/get/json/v1/1/temps/ bekomme ich als ausgabe nur [ ], was zur Fehlermeldung im iobroker Log passt:
controme.0 2021-05-29 11:04:04.984 error (4835) Polling temperature data from Controme mini server finished with error "[]"
Kannst du das überprüfen?
-
@mistaluna : Hi Mistaluna!
Erst mal Entschuldigung für die späte Antwort und Danke für den Hinweis! Das scheint tatsächlich ein Bug zu sein. Ich kümmere mich drum.
Viele Grüße!
-
@mistaluna : Ich habe auf Github die 0.2.4 veröffentlicht, die den Bug behebt.
-
Super, vielen Dank für das Update! Wenn ich es von Guthub installiere, wird die neue Version 0.2.4 installiert, mir ist aber aufgefallen, dass sie im iobroker immer noch als Version 0.2.3 angezeigt wird.
Bei den iobroker Objekten zeigen nun alle Räume 1 bis 9 alle möglichen Werte an. Die Haus ID 2 wird jetzt also ausgeswertet.Die Räume die als Objekt 10 und 12 im iobroker geführt werden, zeigen jedoch keine Werte anzeigen.
Die Räume 1 und 2 haben sind normale Heizkörper, die ein Bluetooth Heizkörperventil haben. Die Räume 3 bis 9 sind mit dem ersten Fußbodenheizungsgateway verbunden und die Räume 10 und 12 mit einem zweiten Gateway. Kann es etwas damit zu tun haben?
Hier meine API-Datei:
temps.json -
@mistaluna
Hi Mistaluna!Schön, dass es jetzt grundsätzlich geht. Die fehlerhafte Anzeige der Versionsnummer habe ich gefunden und behoben, danke!
Was das Problem mit den zweistelligen Räumen angeht: In deinem JSON sind die Räume drin. Du kannst mal testen, ob der Adapter die Räume verarbeitet, indem du das Log-Level bei der Instanz auf "Silly" stellst. Dann solltest du bei jedem Update für alle Räume Nachrichten in der Gestalt "Updating room 12 Badezimmer / Dressing: Actual temperature 21.81 °C, setpoint temperature 20.00 °C, temperature offset -0.42 °C" erhalten. Wenn die Nachricht kommt, verarbeitet der Adapter die Werte. Wenn nicht, muss ich mich auf Fehlersuche machen.
Das von dir beschriebene Verhalten hatte ich bei mir leider auch gelegentlich: Bei den zweistelligen Räumen zeigt ioBroker schlichtweg keine Werte an, obwohl die Werte vorhanden waren (und ich sie auch per Skript wieder auslesen konnte). Teilweise wurden mir die Werte angezeigt, nachdem ich "Baum neu erstellen" gedrückt hatte (die Schaltfläche mit dem Kreispfeil), teilweise musste ich auch den ioBroker neustarten.
Teste das bitte erst mal mit dem Log-Level, und wenn die Verarbeitungsnachricht nicht kommt, sag bitte Bescheid.
Viele Grüße!
-
Hallo Erstam,
vielen Dank für die Tipps. Als ich heute in den iobroker geschaut habe, hatten die Räume/Objekte 10 und 12 aktuelle Werte. Ich habe den iobroker bzw. Rasperry seit meinem letzten Post in Ruhe gelassen. Es wurde nichts installiert oder sonst wie eingestellt oder verändert. Er wurde auch auch nicht neu gestartet. Das Problem hat sich scheinbar von selbst behoben. Ich werde das jetzt erst einmal ein paar Tage beobachten, ob das Problem zurück kommt und ggf. hier bescheid geben.
Vielen Dank nochmals für deine Arbeit mit dem Controme Adapter. In Kombination mit dem iobroker sind die Informationen des Controme wirklich sehr wertvoll. Mein Ziel ist, irgend wann alle Rolläden und die Hauslüftung abhängig von den Temperaturinformationen des controme automatisch zu steuern, so dass mein Haus in der warmen Jahreszeit so kühl wie möglich bleibt. Die Auswertung der Controme Sensoren ist ein erster Schritt.
-
@mistaluna : Hi Mistaluna!
Schön, dass es funktioniert. Scheint ja darauf hinzudeuten, dass die Werte nur im Frontend nicht angezeigt wurden.
Dein Projekt klingt cool! Lass mich mal wissen, wie du das löst. Ich hatte da auch bereits drüber nachgedacht, allerdings ist die Berechung der effektiven Sonneneinstrahlung abhängig von Sonnenstand, Jahreszeit und etwaiger Schattenspender nicht ganz trivial, so dass ich bisher auf menschliche Intelligenz setze.
Viele Grüße!
-
@Erstam Habe eben den Adapter bei mir im iobroker noch mal neu installiert. (über https://github.com/MadErstam/iobroker.controme)
Auch bei mir wird der Adapter dann mit der Version 0.2.3 noch angezeigt.
Wie kann ich denn prüfen, welche Version nun tatsächlich installiert wurde?
Vielen Dank für die Erstellung des Adapter. Dann kann ich nun die aktuellen Temperaturen von meinem KNX-BUS in die Controme-Steuerung übertragen
Gruß
Jonas
-
@jump2021 Ich hatte die Änderung der Versionsnummer noch nicht hochgeladen, ist jetzt erledigt. Wenn du es in den letzten Tagen installiert hast, hast du funktional die neueste Version. Ich habe aber jetzt noch mal ein neues Release erstellt, so dass alle Verwirrungen erledigt sind.
-
@erstam Hallo Erstam, wollte mal kurz fragen, ob Du den Adapter noch weiter supportest?
Hatte am 26.9. einen Issu auf Github eröffnet. Konntest Du Dir diesen schon anschauen?Vielen Dank für eine kurze Rückmeldung.
Gruß
Jonas
-
@jump2021 : Hallo Jump2021!
Lange Zeit ist nichts passiert, weil ich mit meinem neuem Job beschäftigt war, jetzt habe ich endlich Zeit und Muße gefunden, etwas weiter zu entwickeln. Es gibt eine neue v0.3, die deutlich mehr Werte zurück liefert.
Viele Grüße!
Marc
-
Lieber MadErstam,
vielen Dank für Deinen tollen Job.
Habe vorhin den Adapter aktualisiert. Keine Fehlermeldung, er meldet sich an etc. Allerdings kann ich keine Einstellungen in der instanz vornehmen. Speicher und Speichern und Schliessen sind leicht rot umrandet und ausgeblendet.
Ich habe vom 0.24 auf 0.34 upgedatet.
Ich kann pauch keine Gateways hinzufügen (die waren ja bisehr nicht drin).
Was mache ich am besten?Schöne GRüße
-
@digifreak said in Test Adapter Controme v0.3.x GitHub:
MadErstam
Hallo MadErstam,
habe das gleiche problem wie digifreak.
Habe hierzu auf github ein Issue eröffnet. Wäre super, wenn Du Dir das mal anschauen könntest.
Danke vorab.
-
Hallo, ich habe jetzt seit 2 Tagen versucht den Adapter in der Version 0.3.4 zum Laufen zu bringen.
Ich habe Probleme mit den Gateways
Ich habe meine beiden Gateways definiert als
90-b2-e4-0c-14-12 und
90-b2-e4-0c-14-18
Habe aber jetzt Problem mit dem zuordnen der Gateway Outputs.
Wie kann ich einen Raum einem Gateway zuordnen ? Ich kann die Mac Adresse des Gateways nicht auf der selben Linie eingaben.
In den Logs finde ich jetzt diese Ausgaben :
2022-12-02 13:08:39.270 - debug: controme.0 (26787) Redis Objects: Use Redis connection: 127.0.0.1:9001
2022-12-02 13:08:39.446 - debug: controme.0 (26787) Objects client ready ... initialize now
2022-12-02 13:08:39.448 - debug: controme.0 (26787) Objects create System PubSub Client
2022-12-02 13:08:39.450 - debug: controme.0 (26787) Objects create User PubSub Client
2022-12-02 13:08:39.881 - debug: controme.0 (26787) Objects client initialize lua scripts
2022-12-02 13:08:39.888 - debug: controme.0 (26787) Objects connected to redis: 127.0.0.1:9001
2022-12-02 13:08:40.064 - debug: controme.0 (26787) Redis States: Use Redis connection: 127.0.0.1:9000
2022-12-02 13:08:40.170 - debug: controme.0 (26787) States create System PubSub Client
2022-12-02 13:08:40.171 - debug: controme.0 (26787) States create User PubSub Client
2022-12-02 13:08:40.435 - debug: controme.0 (26787) States connected to redis: 127.0.0.1:9000
2022-12-02 13:08:41.383 - info: controme.0 (26787) starting. Version 0.3.4-alpha.2 (non-npm: MadErstam/ioBroker.controme#a40ea285ecb022df5f8283976e721b650b1ebe37) in /opt/iobroker/node_modules/iobroker.controme, node: v14.19.0, js-controller: 4.0.23
2022-12-02 13:08:41.430 - debug: controme.0 (26787) Controme URL: http://192.168.2.225/; houseID: 1; user: iobroker@durbach.com; update interval: 60; warnOnNull: true
2022-12-02 13:08:41.432 - debug: controme.0 (26787) Polling temps API from mini server
2022-12-02 13:08:41.443 - debug: controme.0 (26787) Polling outs API from mini server
2022-12-02 13:08:41.447 - debug: controme.0 (26787) Polling gateways API from mini server
2022-12-02 13:08:44.579 - error: controme.0 (26787) Polling temperature data from Controme mini server finished with error "RequestError: getaddrinfo ENOTFOUND http"
2022-12-02 13:08:44.588 - error: controme.0 (26787) Polling outputs data from Controme mini server finished with error "RequestError: getaddrinfo ENOTFOUND http"
2022-12-02 13:08:44.696 - error: controme.0 (26787) Polling gateway data on 90-b2-e4-0c-14-18 from Controme mini server finished with error "RequestError: getaddrinfo ENOTFOUND http"
2022-12-02 13:08:45.920 - info: host.raspberrypi-iobroker instance system.adapter.mobile-alerts.0 terminated with code 0 (NO_ERROR)
2022-12-02 13:08:47.805 - error: controme.0 (26787) Polling gateway data on 90-b2-e4-0c-14-12 from Controme mini server finished with error "RequestError: getaddrinfo ENOTFOUND http"Die API funktioniert, habe sie mit Postman getestet.
Kann irgendwer mir hier weiterhelfen ? -
So sieht es in der Instanz aus :