NEWS
Welcher Adapter für Klimaanlage(mitsubishi2MQTT)
-
@pi_noob15 sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
@smartboart danke für die Info
aber die setzen tue ich ja die Parameter per MQTT.
Sobald ich per MQTT was schicke ändert sich das "setting" sobald die Anlage es dann übernommen hat der "State" quasi die Rückmeldung der Anlage dann. Wenn ich das so richtig verstanden habe.
Wie hast du eigentlicht die Vis Oberfläche zu steuerung der Klima umgesetzt, ich hab da im Moment noch keine Richtige Vorstellung....ja ...das script stellt dir nur die Rückmeldungen als einzelnen states aus den beiden mqtt strings zur Verfügung. Damit kann man dann eine vernünftige Vis erstellen ...
-
@smartboart ich habe dein Skript mal noch um den "wideVane" Status ergänzt, sowie um die Kompressorfrequenz. Beim zweiteren habe ich jedoch probleme da die Frequenz im StateString nicht wie die anderen Werte in "0" steht sonder so.
{"roomTemperature":29.5,"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"off","action":"off","compressorFrequency":0}
Der Variabentyp ist ja theoretisch egal, da ich den Werte ja nur anzeigen möchte, oder ?
Mein angepasstes Skript sieht im Moment so aus:/* Visualisierung und Rückmeldung der Mitsubishi2mqtt strings Breitstellung einzelner Rückmelde States aus den mqtt Strings. {1} Skripterstellung: Smartboart {1} https://forum.iobroker.net/topic/37332/welcher-adapter-f%C3%BCr-klimaanlage-mitsubishi2mqtt/38 */ // Erstellung der States für KlimaGeräte Bsp. Gerät MSZ-AP25VGK // State Example {"roomTemperature":27,"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only","action":"fan","compressorFrequency":0} // Setting Example {"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only"} var logging = true; var debug = true; const fC = false; // nach 1. Skriptstart auf false setzen const Statepfad = 'javascript.' + instance + '.Raumklima.Mitsubishi.'; // Trigger const idKISettings = 'mqtt.0.mitsubishi2mqtt.Klima_kinder.settings'/*mitsubishi2mqtt/Klima_kinder/settings*/; const idKIState = 'mqtt.0.mitsubishi2mqtt.Klima_kinder.state'/*mitsubishi2mqtt/Klima_kinder/state*/; const idConnection = 'mqtt.0.info.connection'/*List of connected clients*/; const idStoerung = 'javascript.0.Vis.KlimaStoerung'/*Klima Stoerung*/; //const id0 = Statepfad + 'Klima-EG.State.Connection'; const id1 = Statepfad + 'Klima_kinder.Settings.Temperature'; const id2 = Statepfad + 'Klima_kinder.Settings.Fan'; const id3 = Statepfad + 'Klima_kinder.Settings.Vane'; const id4 = Statepfad + 'Klima_kinder.Settings.Mode'; const id5 = Statepfad + 'Klima_kinder.Settings.wideVane'; const id6 = Statepfad + 'Klima_kinder.State.RoomTemperature'; const id7 = Statepfad + 'Klima_kinder.State.Temperature'; const id8 = Statepfad + 'Klima_kinder.State.Fan'; const id9 = Statepfad + 'Klima_kinder.State.Vane'; const id10 = Statepfad + 'Klima_kinder.State.wideVane'; const id11 = Statepfad + 'Klima_kinder.State.Action'; const id12 = Statepfad + 'Klima_kinder.State.Mode'; const id13 = Statepfad + 'Klima_kinder.State.Compressor'; createState(id1, null, fC, { type: 'number', name: 'Klima_kinder Temperatur Vorwahl',role:'value'}); createState(id2, null, fC, { type: 'string', name: 'Klima_kinder Luefter Vorwahl'}); createState(id3, null, fC, { type: 'string', name: 'Klima_kinder Luftstromstellung vertikal Vorwahl'}); createState(id4, null, fC, { type: 'string', name: 'Klima_kinder Modus Vorwahl'}); createState(id5, null, fC, { type: 'string', name: 'Klima_kinder Luftstromstellung horizontal Vorwahl'}); createState(id6, null, fC, { type: 'number', name: 'Klima_kinder Raumtemperatur',role:'value'}); createState(id7, null, fC, { type: 'number', name: 'Klima_kinder Geraetestatus Temperatur',role:'value'}); createState(id8, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Luefter'}); createState(id9, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus vertikal Luftstromstellung '}); createState(id10, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus horizontal Luftstromstellung '}); createState(id11, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Aktion'}); createState(id12, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Modus'}); createState(id13, null, fC, { type: 'string', name: 'Klima_kinder Kompressor Frequenz'}); // Setting Example {"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only"} on(idKISettings, function(dp) { var KISettings = getState(idKISettings).val; if(debug)log(['Klima_kinder: Einstellungen geändert. ' , getState(idKISettings).val,''].join('') ); let stringsetKI = JSON.parse(dp.state.val); var KItemperaturesetting = toFloat(stringsetKI.temperature); setState(id1 , KItemperaturesetting, true); setState(id2 , stringsetKI.fan, true); setState(id3 , stringsetKI.vane, true); setState(id5 , stringsetKI.wideVane, true); setState(id4 , stringsetKI.mode, true); if(logging)log('Klimaanlage Kinder: Setting: '+ KItemperaturesetting +' °C Temperatureinstellung, '+stringsetKI.fan+ ' Fan, '+ stringsetKI.vane + ' vane, '+ stringsetKI.wideVane + ' wideVane,'+stringsetKI.mode+ ' Mode.'); }); // State Example {"roomTemperature":27,"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only","action":"fan","compressorFrequency":0} on(idKIState, function(dp) { var KIState = getState(idKIState).val; if(debug)log(['Klima Kinder: Status geändert.' , getState(idKIState).val,''].join('') ); let stringstateKI = JSON.parse(dp.state.val); var KItemperaturestate = toFloat(stringstateKI.temperature); setState(id6 , stringstateKI.roomTemperature, true); setState(id7 , KItemperaturestate, true); setState(id8 , stringstateKI.fan, true); setState(id9 , stringstateKI.vane, true); setState(id10 , stringstateKI.wideVane, true); setState(id11 , stringstateKI.mode, true); setState(id12, stringstateKI.action, true); setState(id13, stringstateKI.compressor, true); if(debug)log('Klimaanlage Kinder: Status: ' + stringstateKI.roomTemperature + ' °C Raumtemperatur, '+ KItemperaturestate +' °C Tempstate, '+ stringstateKI.fan +' Fansetting, '+ stringstateKI.vane + ' Vanesetting, '+stringstateKI.wideVane+ ' wideVanesetting, '+stringstateKI.mode +' Mode, '+stringstateKI.action + ' Action,'+ stringstateKI.compressor +' Compressor, '); });
Und die Objektansicht:
-
@pi_noob15 sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
ch habe dein Skript mal noch um den "wideVane" Status ergänzt, sowie um die Kompressorfrequenz. Beim zweiteren habe ich jedoch probleme da die Frequenz im StateString nicht wie die anderen Werte in "0" steht sonder so. Der Variabentyp ist ja theoretisch egal, da ich den Werte ja nur anzeigen möchte, oder ?
ohne "" ist es kein string sonder typ number...
Ich würde den Kompressor Typ number nehmen.Aber mal zu der neuen Firmware mitsubishi2mqtt, die liefert bei mir teilweise Müll zurück, deshalb hatte ich ein issue auf github aufgemacht. Ist das bereits gelöst?
-
@pi_noob15
und den type number state musst du so füllensetState(id13, stringstateKI.compressorFrequency, true);
-
@smartboart ok habe Typ numer gesetzt
createState(id13, null, fC, { type: 'number', name: 'Klima_kinder Kompressor Frequenz'});
befüllt wird das ja dann so oder ?
setState(id13, stringstateKI.compressorFrequency, true); if(debug)log('Klimaanlage Kinder: Status: ' + stringstateKI.roomTemperature + ' °C Raumtemperatur, '+ KItemperaturestate +' °C Tempstate, '+ stringstateKI.fan +' Fansetting, '+ stringstateKI.vane + ' Vanesetting, '+stringstateKI.wideVane+ ' wideVanesetting, '+stringstateKI.mode +' Mode, '+stringstateKI.action + ' Action,'+ stringstateKI.compressor +' compressorFrequency, ');
also ich kann mich bisher nicht beklagen bezgl. der Firmware.
Skript läuft jetztHier das aktuelle Skript:
/* Visualisierung und Rückmeldung der Mitsubishi2mqtt strings Breitstellung einzelner Rückmelde States aus den mqtt Strings. Verwendetes Gerät MSZ-AP25VGK {1} Skripterstellung: Smartboart Aktualisierung: pi_noob15 Version: 1.0 {1} https://forum.iobroker.net/topic/37332/welcher-adapter-f%C3%BCr-klimaanlage-mitsubishi2mqtt/38 */ // State Example {"roomTemperature":27,"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only","action":"fan","compressorFrequency":0} // Setting Example {"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only"} var logging = true; var debug = true; const fC = false; // nach 1. Skriptstart auf false setzen const Statepfad = 'javascript.' + instance + '.Raumklima.Mitsubishi.'; // Trigger const idKISettings = 'mqtt.0.mitsubishi2mqtt.Klima_kinder.settings'/*mitsubishi2mqtt/Klima_kinder/settings*/; const idKIState = 'mqtt.0.mitsubishi2mqtt.Klima_kinder.state'/*mitsubishi2mqtt/Klima_kinder/state*/; const idConnection = 'mqtt.0.info.connection'/*List of connected clients*/; const idStoerung = 'javascript.0.Vis.KlimaStoerung'/*Klima Stoerung*/; //const id0 = Statepfad + 'Klima-EG.State.Connection'; const id1 = Statepfad + 'Klima_kinder.Settings.Temperature'; const id2 = Statepfad + 'Klima_kinder.Settings.Fan'; const id3 = Statepfad + 'Klima_kinder.Settings.Vane'; const id4 = Statepfad + 'Klima_kinder.Settings.Mode'; const id5 = Statepfad + 'Klima_kinder.Settings.wideVane'; const id6 = Statepfad + 'Klima_kinder.State.RoomTemperature'; const id7 = Statepfad + 'Klima_kinder.State.Temperature'; const id8 = Statepfad + 'Klima_kinder.State.Fan'; const id9 = Statepfad + 'Klima_kinder.State.Vane'; const id10 = Statepfad + 'Klima_kinder.State.wideVane'; const id11 = Statepfad + 'Klima_kinder.State.Action'; const id12 = Statepfad + 'Klima_kinder.State.Mode'; const id13 = Statepfad + 'Klima_kinder.State.Compressor'; createState(id1, null, fC, { type: 'number', name: 'Klima_kinder Temperatur Vorwahl',role:'value'}); createState(id2, null, fC, { type: 'string', name: 'Klima_kinder Luefter Vorwahl'}); createState(id3, null, fC, { type: 'string', name: 'Klima_kinder Luftstromstellung vertikal Vorwahl'}); createState(id4, null, fC, { type: 'string', name: 'Klima_kinder Modus Vorwahl'}); createState(id5, null, fC, { type: 'string', name: 'Klima_kinder Luftstromstellung horizontal Vorwahl'}); createState(id6, null, fC, { type: 'number', name: 'Klima_kinder Raumtemperatur',role:'value'}); createState(id7, null, fC, { type: 'number', name: 'Klima_kinder Geraetestatus Temperatur',role:'value'}); createState(id8, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Luefter'}); createState(id9, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus vertikal Luftstromstellung '}); createState(id10, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus horizontal Luftstromstellung '}); createState(id11, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Aktion'}); createState(id12, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Modus'}); createState(id13, null, fC, { type: 'number', name: 'Klima_kinder Kompressor Frequenz'}); // Setting Example {"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only"} on(idKISettings, function(dp) { var KISettings = getState(idKISettings).val; if(debug)log(['Klima_kinder: Einstellungen geändert. ' , getState(idKISettings).val,''].join('') ); let stringsetKI = JSON.parse(dp.state.val); var KItemperaturesetting = toFloat(stringsetKI.temperature); setState(id1 , KItemperaturesetting, true); setState(id2 , stringsetKI.fan, true); setState(id3 , stringsetKI.vane, true); setState(id5 , stringsetKI.wideVane, true); setState(id4 , stringsetKI.mode, true); if(logging)log('Klimaanlage Kinder: Setting: '+ KItemperaturesetting +' °C Temperatureinstellung, '+stringsetKI.fan+ ' Fan, '+ stringsetKI.vane + ' vane, '+ stringsetKI.wideVane + ' wideVane,'+stringsetKI.mode+ ' Mode.'); }); // State Example {"roomTemperature":27,"temperature":23,"fan":"1","vane":"SWING","wideVane":"|","mode":"fan_only","action":"fan","compressorFrequency":0} on(idKIState, function(dp) { var KIState = getState(idKIState).val; if(debug)log(['Klima Kinder: Status geändert.' , getState(idKIState).val,''].join('') ); let stringstateKI = JSON.parse(dp.state.val); var KItemperaturestate = toFloat(stringstateKI.temperature); setState(id6 , stringstateKI.roomTemperature, true); setState(id7 , KItemperaturestate, true); setState(id8 , stringstateKI.fan, true); setState(id9 , stringstateKI.vane, true); setState(id10 , stringstateKI.wideVane, true); setState(id11 , stringstateKI.mode, true); setState(id12, stringstateKI.action, true); setState(id13, stringstateKI.compressorFrequency, true); if(debug)log('Klimaanlage Kinder: Status: ' + stringstateKI.roomTemperature + ' °C Raumtemperatur, '+ KItemperaturestate +' °C Tempstate, '+ stringstateKI.fan +' Fansetting, '+ stringstateKI.vane + ' Vanesetting, '+stringstateKI.wideVane+ ' wideVanesetting, '+stringstateKI.mode +' Mode, '+stringstateKI.action + ' Action,'+ stringstateKI.compressor +' compressorFrequency, '); });
-
@pi_noob15 sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
also ich kann mich bisher nicht beklagen bezgl. der Firmware.
ok benutz du noch die bin die ich dir erstellt hatte, da hatte ich es ja anders gelöst...Aber heute ist hier wohl was passiert..
-
@pi_noob15 sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
befüllt wird das ja dann so oder ?
ja genau so..
-
@smartboart ich hatte ja versucht die per OTA Update zu laden, ging dann aber nicht, vielleicht da ich den Huzzah von Adafruit verwende. Werde bei der nächsten Klima dann den Wemos D1 Mini nehmen, da ich ja ein anderes Problem hatte, und einfach alle Fehlerquellen ausschließen wollte.
-
@smartboart sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
@pi_noob15 sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
befüllt wird das ja dann so oder ?
ja genau so..
läuft super Danke nochmal für die Hilfe
-
schau mal was ich heute gesehen habe...
tasmota release 9.1.0Optional support for Mitsubishi Electric HVAC by David Gwynne (#9237)
-
@smartboart ah cool das heißt ab sofort wird das ganze standardmäßig von Tasmota unterstützt
-
@pi_noob15 hab es noch nicht probiert.
Wenn du es vor mir hinbekommst sag bescheid.. -
so... die Klimaanlage ist nun endlich installiert
Ich habe jedoch noch das Problem mit der Kompressorfrequenz welche nicht angezeigt bekomme ?Und die nächste Frage wäre, da ich 4x Innengeräte habe, ob ich für jedes Gerät ein eigenes Script anlege oder nur ein Script habe und dieses erweitere.
Aktuell kommt noch ein weiteres Problem dazu… 3 von 4 Innengeräten schalten sich ab und an von alleine ein und ich habe bisher keine Ahnung warum?
In allen ist ein D1 mini direkt über CN105 mit dem Innengerät verbunden ohne externe pullup Widerstände. Die Steuerung über MQTT klappt soweit ganz gut…. -
So mittlerweile hab ich 4x separate Skripte erstellt(für jedes Innengerät ein eigenes), diese funktionieren auch.
Nur hab ich noch das Problem mit der Kompressorfrequenz sowie das die Geräte einfach nach ein paar Stunden sich von selbst einschalten
Könnte das auch an der Fernbedienung liegen, da ich ja per MQTT und auch per Fernbedienung die Geräte steuern kann(ein Timer ist nicht aktiviert)@smartboart kannst du mir dein aktuelles bin File zur Verfügung stellen damit ich die SW als Fehlerquelle ausschließen kann ?
Habe jetzt mal testweise bei 2x innengeräten die MQTT Server Adresse gelöscht um zu schauen ob’s am MQTT liegt.
-
-
ok, mittlerweile habe ich auf Github die Info bekommen, dass das selbständige Einschalten von einer zu schlechten WLAN Verbindung kommen kann. Was bei mir auch zutreffen könnte, da das Innengerät mit den meisten "selbstständigen Einschaltvorgängen" am weitesten weg ist.
Werde demnächst mal einen Repeater installieren und das ganze im Blick behalten. -
@pi_noob15 habe das mit nem wemo d1 mini pro gelöst.
-
Ja mittlerweile läuft es, habe mir einen WLAN Repeater geholt. Einen D1 mini Pro mit externer Antenne hab ich am Stromzähler
-
habe aktuell mit einem Gerät Probleme im Heizbetrieb. Nach dem Einschalten über MQTT schaltet das Gerät nach 10-20s wieder aus, ist dann kurz aus und geht wieder an, dann nach 10-20s das selbe......
-
hier hat nicht jemand zufällig einen externen Temp Sensor am Wemos angeschlossen ?
Ich habe nämlich an einem Innengerät dass Problem, das dort immer 23°C Raumtemperatur angezeigt werden und der Wert sich nicht ändert. Wäre im Prinzip kein Problem.... die Anlage hört halt nicht auf zu kühlen/heizen da die Zieltemperatur nicht erreicht wird.
Habe schon gehört das es möglich wäre, weiß nur nicht wie es umgesetzt wird.