Im letzten Beitrag habe ich ein wenig über meine Beweggründe, und über die Grundeinrichtung des System erzählt. Nun gehts in die Details: Was muss man in RedNode konfigurieren und programmieren, um die Geräte anzubinden:
Solltet Ihr den ersten Beirtag noch nicht gelesen haben, solltet ihr das unbedingt tun: Homatic CCU3 mit Google Assistent Basiseinrichtung
Ich habe zuerst folgendes ausprobiert:
In der Beispielkonfiguration, war unter Geräte bereits ein "RPC-Event-Node" von Homatic, den ich an meine Bedürfnisse angepasst habe (Doppelklick zum öffnen der Node-Einstellungen). Als Interface habe ich HMIP-RF ausgewählt, da ich ja Homatic-IP verwende. Als nächstes habe ich den "Room" meines Testgerätes gewählt (Schlafzimmer).
Als "Device Name" habe ich "Thermostat SZ" ausgewählt. Also das Thermostat im Schlafzimmer. Da oben bei Topic ja "${CCU}/${Interface}/${channelName}/${datapoint}" fehlt uns noch "ChannelName" und "DataPoint". Bei "ChannelName" habe ich nur einen zur Auswahl gehabt. Bei DataPoint habe ich mit ein wenig suchen "ACTUAL_TEMPERATURE" gefunden. "Emit only changed values" ist wichtig, da es sonst zu einem "zuspammen" des Endpoints kommt. "Emit cached value on start" sorgt dafür das ein Anfangswert übermittelt wird. Hier eine kurze Tabelle über die Datapoints von Homatic-IP:
Thermostat (HmIP-eTRV-2):
Datapoint Name: | Beschreibung: | Datentyp | Zugriff |
ACTIVE_PROFILE | Das Heizprofil | Ganzzahl 1-6 | lesend, schreibend, Ereignisse |
ACTUAL_TEMPERATURE | Die aktuelle Temperatur | Kommazahl | lesend, Ereignisse |
ACTUAL_TEMPERATURE_STATUS | Status der Temperatur: normal(0),unbek.(1),ueber(2),unter(3) | option 0-3 | lesend, Ereignisse |
BOOST_MODE | Boost Modus | Wahrheitswert (0/1) | schreibend, Ereignisse |
BOOST_TIME | Dauer des Boosts | Ganzzahl 0-2048 | lesend, Ereignisse |
CONTROL_DIFFERENTIAL_TEMPERATURE | TemperaturOffset | Ganzzahl -10-10 | schreibend |
CONTROL_MODE | Betriebsmodus: Auto(0), Manu(1), Party(2), Boos (3) | option 0-3 | lesend, Ereignisse |
DURATION_UNIT | ??Dauer, Zeiteinheit sec(0), min(1), Stunde(2) | option 0-2 | schreibend |
DURATION_VALUE | ??Dauer | Ganzzahl 0-16343 | schreibend |
FROST_PROTECTION | Frostschutz | Wahrheitswert (0/1) | lesend, Ereignisse |
LEVEL | ??? | ?? | ??? |
LEVEL_STATUS | ??? | ?? | ??? |
QUICK_VETO_TIME | ??? | Ganzzahl 0-2048 | lesend, Ereignisse |
SET_POINT_MODE | ??? | Ganzzahl 0-3 | lesend, schreibend, Ereignisse |
SET_POINT_TEMPERATURE | Setzen der Temperatur | Kommazahl 4,5-30,5 | lesend, schreibend, Ereignisse |
SWITCH_POINT_OCCURED | ??Punkt der Programmumschaltung | Wahrheitswert (0/1) | lesend, Ereignisse |
VALVE_ADAPTION | ?? Adaptierungsfahrt, action? | Wahrheitswert (0/1) | lesend, schreibend, Ereignisse |
VALVE_STATE | Status Ventilöffnung | Ganzzahl 0-99 | lesend, Ereignisse |
WINDOW_STATE | Fensterstatus | Wahrheitswert (0/1) | lesend, Ereignisse |
PARTY_.... | Diverse Einstellungen für den Partymodus | - | - |
Die Temperatur wird ganz normal als $msg.payload ausgegeben. Nun habe ich den "Google Home Response"-Knoten in das Diagramm gezogen. Dieser erfordert als Eingabe aber:
{ payload: {
params: {
thermostatTemperatureAmbient: <temp>
}
}
};
Also habe ich einen "function"-Knoten hinzugefügt, und mit folgendem Code gefüttert:
temp = msg.payload
msg = {
payload: {
params: {
thermostatTemperatureAmbient: temp
}
}
};
return msg;
Die Werte welche "Google Home Response" haben möchte kann man in der Anleitung einsehen: https://googlehome.hardill.me.uk/docs
Im "Google Home Response" muss natürlich noch das Device eingestellt werden. Das ist nicht das von Homematic, sonder das welches Ihr bei hadill konfiguriert habt.
Zu guter Letzt habe ich noch einen Debug-Knoten zum testen hinzugefügt..
Hier noch ein Screenshot über die konfigurierten Nodes:
Weiter gehts im nächsten Beitrag: Homatic CCU3 mit Google Assistent: Befehle von Google empfangen
Letzter Beitrag in dieser Serie: Homatic CCU3 mit Google Assistent Basiseinrichtung