NEWS
Welcher Adapter für Klimaanlage(mitsubishi2MQTT)
-
@pi_noob15 wie es per mqtt angesteuert wird und welcher state dazu wie beschrieben wird habe ich weiter oben schon beschrieben..
-
@smartboart ok die States kommen ja automatisch über den MQTT Adapter..... und das ich per "Mode" das Gerät einschalte habe ich nach längerem Probieren auch gemerkt . Aber wie splitte ich die Rückmeldungsstring(state) wiederum in einzelne States auf ?
-
@pi_noob15 Wenn du einzelne States daraus ableiten willst, musst du den String mittels script aufbröseln , was ich ebenfalls oben schon erwähnt habe..
Ein Objekt für jede Rückmeldung und dieses Objekt dann entsprechend der Infos aus dem string beschreiben... -
@smartboart sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
@pi_noob15 Wenn du einzelne States daraus ableiten willst, musst du den String mittels script aufbröseln , was ich ebenfalls oben schon erwähnt habe..
Ein Objekt für jede Rückmeldung und dieses Objekt dann entsprechend der Infos aus dem string beschreiben...kannst du mir kurz erklären wie ich das im groben mache?
Ich muss nen neue States für den aktuellen Status der einzelnen Funktion z.B. "akt_Temp" in diesem State wird dann ein Skript ausgeführt welches sich die Temperatur aus dem String der State variable herausholt ? -
@pi_noob15
hier mein Script dazu.../* Visualisierung und Rückmeldung der Mitsubishi2mqtt strings Breitstellung einzelner Rückmelde States aus den mqtt Strings. Skripterstellung: Smartboart https://forum.iobroker.net/topic/37332/welcher-adapter-f%C3%BCr-klimaanlage-mitsubishi2mqtt/38 */ // Erstellung der States für KlimaGeräte // State Example {"roomTemperature":25,"temperature":31,"fan":"2","vane":"2","action":"heating","mode":"heat"} // Setting Example {"temperature":31,"fan":"2","vane":"2","mode":"heat"} var logging = true; var debug = true; const fC = true; // nach 1. Skriptstart auf false setzen const Statepfad = 'javascript.' + instance + '.Raumklima.Mitsubishi.'; // Trigger const idEGSettings = 'mqtt.0.Mitsubishi.Klima-EG.settings'/*Mitsubishi/Klima-EG/settings*/; const idEGState = 'mqtt.0.Mitsubishi.Klima-EG.state'/*Mitsubishi/Klima-EG/state*/; const idOGSettings = 'mqtt.0.Mitsubishi.Klima-OG.settings'/*Mitsubishi/Klima-OG/settings*/; const idOGState = 'mqtt.0.Mitsubishi.Klima-OG.state'/*Mitsubishi/Klima-OG/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-EG.Settings.Temperature'; const id2 = Statepfad + 'Klima-EG.Settings.Fan'; const id3 = Statepfad + 'Klima-EG.Settings.Vane'; const id4 = Statepfad + 'Klima-EG.Settings.Mode'; const id5 = Statepfad + 'Klima-EG.State.RoomTemperature'; const id6 = Statepfad + 'Klima-EG.State.Temperature'; const id7 = Statepfad + 'Klima-EG.State.Fan'; const id8 = Statepfad + 'Klima-EG.State.Vane'; const id9 = Statepfad + 'Klima-EG.State.Action'; const id10 = Statepfad + 'Klima-EG.State.Mode'; const id11 = Statepfad + 'Klima-OG.Settings.Temperature'; const id12 = Statepfad + 'Klima-OG.Settings.Fan'; const id13 = Statepfad + 'Klima-OG.Settings.Vane'; const id14 = Statepfad + 'Klima-OG.Settings.Mode'; const id15 = Statepfad + 'Klima-OG.State.RoomTemperature'; const id16 = Statepfad + 'Klima-OG.State.Temperature'; const id17 = Statepfad + 'Klima-OG.State.Fan'; const id18 = Statepfad + 'Klima-OG.State.Vane'; const id19 = Statepfad + 'Klima-OG.State.Action'; const id20 = Statepfad + 'Klima-OG.State.Mode'; createState(id1, null, fC, { type: 'number', name: 'KlimaEG Temperatur Vorwahl',role:'value'}); createState(id2, null, fC, { type: 'string', name: 'KlimaEG Luefter Vorwahl'}); createState(id3, null, fC, { type: 'string', name: 'KlimaEG Luftstromstellung Vorwahl'}); createState(id4, null, fC, { type: 'string', name: 'Klima EG Modus Vorwahl'}); createState(id5, null, fC, { type: 'number', name: 'KlimaEG Raumtemperatur',role:'value'}); createState(id6, null, fC, { type: 'number', name: 'KlimaEG Geraetestatus Temperatur',role:'value'}); createState(id7, null, fC, { type: 'string', name: 'KlimaEG Geraetestatus Luefter'}); createState(id8, null, fC, { type: 'string', name: 'KlimaEG Geraetestatus Luftstromstellung '}); createState(id9, null, fC, { type: 'string', name: 'KlimaEG Geraetestatus Aktion'}); createState(id10, null, fC, { type: 'string', name: 'KlimaEG Geraetestatus Modus'}); createState(id11, null, fC, { type: 'number', name: 'KlimaOG Temperatur Vorwahl',role:'value'}); createState(id12, null, fC, { type: 'string', name: 'KlimaOG Luefter Vorwahl'}); createState(id13, null, fC, { type: 'string', name: 'KlimaOG Luftstromstellung Vorwahl'}); createState(id14, null, fC, { type: 'string', name: 'KlimaOG Modus Vorwahl'}); createState(id15, null, fC, { type: 'number', name: 'KlimaOG Raumtemperatur',role:'value'}); createState(id16, null, fC, { type: 'number', name: 'KlimaOG Geraetestatus Temperatur',role:'value'}); createState(id17, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Luefter'}); createState(id18, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Luftstromstellung '}); createState(id19, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Aktion'}); createState(id20, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Modus'}); // Setting Example {"temperature":31,"fan":"2","vane":"2","mode":"heat"} on(idEGSettings, function(dp) { var EGSettings = getState(idEGSettings).val; if(debug)log(['Klima EG: Einstellungen geändert. ' , getState(idEGSettings).val,''].join('') ); let stringsetEG = JSON.parse(dp.state.val); var EGtemperaturesetting = toFloat(stringsetEG.temperature); setState(id1 , EGtemperaturesetting, true); setState(id2 , stringsetEG.fan, true); setState(id3 , stringsetEG.vane, true); setState(id4 , stringsetEG.mode, true); if(logging)log('Klimaanlage EG: Setting: '+ EGtemperaturesetting +' °C Temperatureinstellung, '+stringsetEG.fan+ ' Fan, '+ stringsetEG.vane + ' vane, '+stringsetEG.mode+ ' Mode.'); }); // State Example {"roomTemperature":25,"temperature":31,"fan":"2","vane":"2","action":"heating","mode":"heat"} on(idEGState, function(dp) { var EGState = getState(idEGState).val; if(debug)log(['Klima EG: Status geändert.' , getState(idEGState).val,''].join('') ); let stringstateEG = JSON.parse(dp.state.val); var EGtemperaturestate = toFloat(stringstateEG.temperature); setState(id5 , stringstateEG.roomTemperature, true); setState(id6 , EGtemperaturestate, true); setState(id7 , stringstateEG.fan, true); setState(id8 , stringstateEG.vane, true); setState(id9 , stringstateEG.action, true); setState(id10, stringstateEG.mode, true); if(debug)log('Klimaanlage EG: Status: ' + stringstateEG.roomTemperature + ' °C Raumtemperatur, '+ EGtemperaturestate +' °C Tempstate, '+ stringstateEG.fan +' Fansetting, '+stringstateEG.vane+ ' Vanesetting, '+stringstateEG.action +' Action, '+stringstateEG.mode + ' Mode. '); }); on(idOGSettings, function(dp) { var OGSettings = getState(idOGSettings).val; if(debug)log(['Klima OG: Einstellungen geändert.' , getState(idOGSettings).val,''].join('') ); let stringsetOG = JSON.parse(dp.state.val); var OGtemperaturesetting = toFloat(stringsetOG.temperature); setState(id11 , OGtemperaturesetting, true);; setState(id12 , stringsetOG.fan, true); setState(id13 , stringsetOG.vane, true); setState(id14 , stringsetOG.mode, true); if (logging) log('Klimaanlage OG: Setting: '+ OGtemperaturesetting +' °C Temperatureinstellung, '+stringsetOG.fan+ ' Fan, '+ stringsetOG.vane + ' vane, '+stringsetOG.mode+ ' Mode.'); }); on(idOGState, function(dp) { var OGState = getState(idOGState).val; if(debug)log(['Klima OG: Status geändert.:' , getState(idOGState).val,''].join('') ); let stringstateOG = JSON.parse(dp.state.val); var OGtemperaturestate = toFloat(stringstateOG.temperature); setState(id15 , stringstateOG.roomTemperature, true); setState(id16 , OGtemperaturestate, true); setState(id17 , stringstateOG.fan, true); setState(id18 , stringstateOG.vane, true); setState(id19 , stringstateOG.action, true); setState(id20 , stringstateOG.mode, true); if(debug)log('Klimaanlage OG: Status: ' + stringstateOG.roomTemperature + ' °C Raumtemperatur, '+ OGtemperaturestate +' °C Tempstate, '+ stringstateOG.fan +' Fansetting, '+stringstateOG.vane+ ' Vanesetting, '+stringstateOG.action +' Action, '+stringstateOG.mode + ' Mode. '); });
-
@smartboart ok vielen Dank
Nur wo "packe" ich das jetzt rein, hatte mit dem Thema bisher noch nichts gemacht, daher frag ich. -
@pi_noob15 installiere den javascriptadapter und lese dir die Dokumentation dazu durch.
Das Script must du im javascript Adapter anlegen...Wahrscheinlich musst du noch die Pfadangabe zu deinem mqqt Namen / Pfad in meinem Script anpassen.
Beim mir ist der Name wie folgt. für EG und OG.
const idEGSettings = 'mqtt.0.Mitsubishi.Klima-EG.settings'/Mitsubishi/Klima-EG/settings/;
const idEGState = 'mqtt.0.Mitsubishi.Klima-EG.state'/Mitsubishi/Klima-EG/state/;const idOGSettings = 'mqtt.0.Mitsubishi.Klima-OG.settings'/Mitsubishi/Klima-OG/settings/;
const idOGState = 'mqtt.0.Mitsubishi.Klima-OG.state'/Mitsubishi/Klima-OG/state/;Wenn du nur ein Splitgerät hast, kannst das script noch um mein 2. Gerät einkürzen.
-
@smartboart Danke für die Info, habe das mal soweit auf mich angepasst. Aber irgendwie werden keine states angelegt.
Blöderweise kommt auch keine Fehlermeldung./* 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 // State Example {"roomTemperature":25,"temperature":31,"fan":"2","vane":"2","action":"heating","mode":"heat"} // Setting Example {"temperature":31,"fan":"2","vane":"2","mode":"heat"} var logging = true; var debug = true; const fC = true; // 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 idOGSettings = 'mqtt.0.Mitsubishi.Klima-OG.settings'/*Mitsubishi/Klima-OG/settings*/; //const idOGState = 'mqtt.0.Mitsubishi.Klima-OG.state'/*Mitsubishi/Klima-OG/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.State.RoomTemperature'; const id6 = Statepfad + 'Klima_kinder.State.Temperature'; const id7 = Statepfad + 'Klima_kinder.State.Fan'; const id8 = Statepfad + 'Klima_kinder.State.Vane'; const id9 = Statepfad + 'Klima_kinder.State.Action'; const id10 = Statepfad + 'Klima_kinder.State.Mode'; //const id11 = Statepfad + 'Klima-OG.Settings.Temperature'; //const id12 = Statepfad + 'Klima-OG.Settings.Fan'; //const id13 = Statepfad + 'Klima-OG.Settings.Vane'; //const id14 = Statepfad + 'Klima-OG.Settings.Mode'; //const id15 = Statepfad + 'Klima-OG.State.RoomTemperature'; //const id16 = Statepfad + 'Klima-OG.State.Temperature'; //const id17 = Statepfad + 'Klima-OG.State.Fan'; //const id18 = Statepfad + 'Klima-OG.State.Vane'; //const id19 = Statepfad + 'Klima-OG.State.Action'; //const id20 = Statepfad + 'Klima-OG.State.Mode'; 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 Vorwahl'}); createState(id4, null, fC, { type: 'string', name: 'Klima_kinder Modus Vorwahl'}); createState(id5, null, fC, { type: 'number', name: 'Klima_kinder Raumtemperatur',role:'value'}); createState(id6, null, fC, { type: 'number', name: 'Klima_kinder Geraetestatus Temperatur',role:'value'}); createState(id7, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Luefter'}); createState(id8, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Luftstromstellung '}); createState(id9, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Aktion'}); createState(id10, null, fC, { type: 'string', name: 'Klima_kinder Geraetestatus Modus'}); //createState(id11, null, fC, { type: 'number', name: 'KlimaOG Temperatur Vorwahl',role:'value'}); //createState(id12, null, fC, { type: 'string', name: 'KlimaOG Luefter Vorwahl'}); //createState(id13, null, fC, { type: 'string', name: 'KlimaOG Luftstromstellung Vorwahl'}); //createState(id14, null, fC, { type: 'string', name: 'KlimaOG Modus Vorwahl'}); //createState(id15, null, fC, { type: 'number', name: 'KlimaOG Raumtemperatur',role:'value'}); //createState(id16, null, fC, { type: 'number', name: 'KlimaOG Geraetestatus Temperatur',role:'value'}); //createState(id17, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Luefter'}); //createState(id18, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Luftstromstellung '}); //createState(id19, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Aktion'}); //createState(id20, null, fC, { type: 'string', name: 'KlimaOG Geraetestatus Modus'}); // Setting Example {"temperature":31,"fan":"2","vane":"2","mode":"heat"} 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(id4 , stringsetKI.mode, true); if(logging)log('Klimaanlage Kinder: Setting: '+ KItemperaturesetting +' °C Temperatureinstellung, '+stringsetKI.fan+ ' Fan, '+ stringsetKI.vane + ' vane, '+stringsetKI.mode+ ' Mode.'); }); // State Example {"roomTemperature":25,"temperature":31,"fan":"2","vane":"2","action":"heating","mode":"heat"} 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(id5 , stringstateKI.roomTemperature, true); setState(id6 , KItemperaturestate, true); setState(id7 , stringstateKI.fan, true); setState(id8 , stringstateKI.vane, true); setState(id9 , stringstateKI.action, true); setState(id10, stringstateKI.mode, true); if(debug)log('Klimaanlage Kinder: Status: ' + stringstateKI.roomTemperature + ' °C Raumtemperatur, '+ KItemperaturestate +' °C Tempstate, '+ stringstateKI.fan +' Fansetting, '+stringstateKI.vane+ ' Vanesetting, '+stringstateKI.action +' Action, '+stringstateKI.mode + ' Mode. '); }); //on(idOGSettings, function(dp) { //var OGSettings = getState(idOGSettings).val; //if(debug)log(['Klima OG: Einstellungen geändert.' , getState(idOGSettings).val,''].join('') ); //let stringsetOG = JSON.parse(dp.state.val); //var OGtemperaturesetting = toFloat(stringsetOG.temperature); //setState(id11 , OGtemperaturesetting, true);; //setState(id12 , stringsetOG.fan, true); //setState(id13 , stringsetOG.vane, true); //setState(id14 , stringsetOG.mode, true); //if (logging) log('Klimaanlage OG: Setting: '+ OGtemperaturesetting +' °C Temperatureinstellung, '+stringsetOG.fan+ ' Fan, '+ stringsetOG.vane + ' vane, '+stringsetOG.mode+ ' Mode.'); //}); //on(idOGState, function(dp) { //var OGState = getState(idOGState).val; //if(debug)log(['Klima OG: Status geändert.:' , getState(idOGState).val,''].join('') ); //let stringstateOG = JSON.parse(dp.state.val); //var OGtemperaturestate = toFloat(stringstateOG.temperature); //setState(id15 , stringstateOG.roomTemperature, true); //setState(id16 , OGtemperaturestate, true); //setState(id17 , stringstateOG.fan, true); //setState(id18 , stringstateOG.vane, true); //setState(id19 , stringstateOG.action, true); //setState(id20 , stringstateOG.mode, true); //if(debug)log('Klimaanlage OG: Status: ' + stringstateOG.roomTemperature + ' °C Raumtemperatur, '+ OGtemperaturestate +' °C Tempstate, '+ stringstateOG.fan +' Fansetting, '+stringstateOG.vane+ ' Vanesetting, '+stringstateOG.action +' Action, '+stringstateOG.mode + ' Mode. '); //});
Klima läuft soweit:
-
@pi_noob15 ohne lange zu schauen...mal den browser aktualisiert und oder browser cache gelöscht?
-
@smartboart oh man... hattest recht... sind nun da....
Aber ohne werte
-
@pi_noob15 werden erst geschrieben wenn sich der status des KlimaGerät ändert....und mach forcecreation fC = false nachdem sie nun angelegt sind ...sonst sind die werte immer weg nach einem neustart..
-
@pi_noob15 Wenn du alles richtig abgeändert hast muss es gehen. Wenn was nicht geht überprüfe deine Änderungen...
-
@smartboart ok mittlerweile sind die states da....
aber blöde Frage für was sind die "settings"
-
@pi_noob15 sagte in Welcher Adapter für Klimaanlage(mitsubishi2MQTT):
@smartboart ok mittlerweile sind die states da....
aber blöde Frage für was sind die "settings"
Settings sind das was du einstellst Also Info von dem was du per mqtt als Befehle an die Anlage schickst und State ist das was die Anlage macht. Also die Rückmeldung...
Die Settings folgen also den MqTT Befehlen an die Anlage und die Settings folgen dann der Rückmeldung der Anlage.
Wenn beides dann nach kurzer Zeit gleich ist, hat die Anlage den Befehl angenommen und umgesetzt. -
@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.... -
@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, '); });