Daikin ja Home Assistant

hanks

Aktiivinen jäsen
Ajattelin luoda uuden keskustelun, aihetta on kyllä sivuttu silloin tällöin Perfara 30/40 -keskustelussa.

Siis Daikinin ilmalämpöpumppujen ohjaus ja seuranta Home Assistantilla.

Niissä malleissa, joiden wifi-sovittimiin saa yhteyden kotiverkosta, toimii Daikin AC -integraatio, minkä voi ottaa käyttöön suoraan Home Assistantissa "Add integration".
Uudemmissa malleissa (kuten Perfera H) wifi-sovitin keskustelee vain Daikinin pilvipalvelun kanssa, eikä näihin saa yhteyttä paikallisesti kotiverkosta. Siispä Daikin AC -integraatio ei toimi näissä. Harrastajat ovat ottaneet selville rajapinnan millä Onecta-sovellus keskustelee Daikinin pilvipalvelun kanssa ja tehneet kustomoituja integraatioita, joilla sama rajapinta toimii Home Assistantissa. Mainitsemisen arvoisia ovat ainakin
Nämä integraatiot pitää asentaa manuaalisesti Home Assistanttiin, sitten toimii.
 
Viimeksi muokattu:

hanks

Aktiivinen jäsen
  • Keskustelun aloittaja
  • #2
Mainitsin Perfera 30/40 -keskustelussa, että olin huomannut https://github.com/rospogrigio/daikin_residential -integraatiossa diagnostiikka-dataa, joka sisälsi mielentiintoisia sensoriparametreja. Kyselin mainitussa github-repossa, joska olisi mahdollista saada näitä tietoja entiteeteiksi, joita voisi logata. https://github.com/jwillemsen/daikin_residential_altherma -repon ylläpitäjä vastasi hetimiten, että hänen integraatiossa ne on saatavilla, joten otin sen kokeiluun, vaikka nimestä voisi luulla että se on tarkoitettu Daikinin VILP:eille, mutta toimii siis myös ILP:eillä.

Eli tämmöistä dataa siellä on tarjolla
  • deltaD
  • fanMotorRotationSpeed
  • heatExchangerTemperature
  • suctionTemperature
Lisäksi löytyy tarveohjaus.

Otin vähän käppyrää omasta Perfara 30 H:sta näillä, 14 asteen ylläpitolämpö päällä mökillä.

1705003019235.png


Noissa käyrissä on Huone on sisäyksikön mittaama huonelämpötila. Kylpyhuone ja keittiö on erillisiä zigbee-antureita. Imu- ja huonelämpötilat näyttävät seuraavan tarkasti toisiaan. Huonelämpötila ilmoitetaan yhden asteen tarkkuudella kun imu puolen asteen.

Mielenkiintoista uutta tietoa (ainakin minulle) on puhaltimen pyörimisnopeus ja lämmönvaihtimen lämpötila. Oletan että lämmönvaihtimen lämpötila on siis puhallusilman lämpötila. Nythän tätä saa logitettua ilman erillisiä ruuvi-tägeja tai vastaavia!

Ihmetyttää kyllä miksi lämmönvaihtimen lämpötila ja puhallinnopeus huojuvat tuolla tavalla.
Käyrässä näkyy kyllä selvästi myös yksi sulatus, kun lämmönvaihdin menee pakkaselle ja puhallin pysähtyy.
 
Viimeksi muokattu:

Ville-Veikko

Aktiivinen jäsen
HYvä avaus, seuraan mielenkiinnosta, vaikkei mulla ilppiä olekaan, Vilppi vaan :)

Mites pilvidatan päivitysnopeus ja tarkkuus, riittääkö? Mulla on Daikinin Vilpissä kiinni vastaava integraatio + ESPAltehrma suoraan kiinni koneen sarjaportissa. Olen pannut merkille että Daikinin pilven kautta saattaa kestää jopa kymmenenkin minuuttia ennen kuin esim. ulkolämpötila päivittyy. Eron näkee hyvin kun katsoo HA:n sensoreita, pilvi pyöristää asteet kokonaislukuun ja kone mittailee välillä astetolkulla eri arvoa.
1705006237379.png
 

Ilppari2

Jäsen
Kiitos hyvästä aloituksesta. Virittelin itsekin integraation tulille. Perfera 30N kun saatiin tänään asennettua. Sain käppyrät nätisti näkymään, paitsi pyyntilämpötilaa en saanut kaivettua, se kyllä näkyy climate -kortissa, mutta ei sensorina.

Näköjään viivettä löytyykin joistakin sensorin arvoista 1-5 min. Ulkolämpötila näyttää jostain syystä 30 min viimeisimmästä mitatusta arvosta..

Täytyy vielä viritellä koti-cop -laskuria, nyt kun kaikki sensorin arvot on löydetty, onkohan tähän jotain valmista koodia olemassa?
Virrankulutukseen pistin shelly pm mini -mittarin.
 

hanks

Aktiivinen jäsen
  • Keskustelun aloittaja
  • #5
Mites pilvidatan päivitysnopeus ja tarkkuus, riittääkö?
Tuossa on nyt 5 min ja se riittää havaitsemaan sulatukset, mikä on yksi mielenkiinnon kohde ilpeissä.

Tähän liittyen Daikin Europe loihe lausumaan pari kuukautta takaperin tuossa ensinmainitussa github-repossa, että tulevat lähiaikoina julkaisemaan kehittäjäportaalin, eli nämä harrastelijoiden käyttämät rajapinnat saanevat virallisen statuksen, mikä on hyvä asia. Myös uudista ominaisuuksista mainittiin.

Huonompi uutinen oli että aikovat toteuttaa rajoituksen 150 kutsuun per päivä. Jotkut ovat raportoineet, että ovat huomanneet rajoituksen olevan jo päällä heidän kohdallaan.

 
Viimeksi muokattu:

hanks

Aktiivinen jäsen
  • Keskustelun aloittaja
  • #7

-Teme-

Vakionaama
Jos tuo cloud rajapinta rampautetaan pahasti niin vaihtoehtona on käyttää serial porttia liittimestä S21. Siihen pitäö asentaa level shifterillä asennettu esp ja saa datat ESPhome kautta Home Assistantiin. Laitteen oma wifi moduuli voi jäädä koneeseen myös.
 

hanks

Aktiivinen jäsen
Olen tässä viritellyt Home Assistanttia seuraamaan Perferan toimintaa sulatusten ynnä muiden lämpötilojen osalta. Tuplasulatuksiin tuntuu tuulella olevan suurin vaikutus. Minulla ei ole mitään tuulimittaria tai muuta sääasemaa, mutta mietin että miten saisi lokitettua käyrille jonkun sääpalveluja tarjoavan tahon lukemia, esim. tuo met.no mikä näkyi tulevan HA:ssa oletusarvoisesti mukana.


Oisko kellään koodia miten saada tuulen voimakkuus ja vaikka ilmankosteus sensoriksi, joita pistää käyrälle?
 

Elpakko

Aktiivinen jäsen
Olen tässä viritellyt Home Assistanttia seuraamaan Perferan toimintaa sulatusten ynnä muiden lämpötilojen osalta. Tuplasulatuksiin tuntuu tuulella olevan suurin vaikutus. Minulla ei ole mitään tuulimittaria tai muuta sääasemaa, mutta mietin että miten saisi lokitettua käyrille jonkun sääpalveluja tarjoavan tahon lukemia, esim. tuo met.no mikä näkyi tulevan HA:ssa oletusarvoisesti mukana.


Oisko kellään koodia miten saada tuulen voimakkuus ja vaikka ilmankosteus sensoriksi, joita pistää käyrälle?
Itselläni on OpenWeatherMap integraatio ja siinä on ainakin jos jonkinlaista dataa sensorina HA:ssa. Esim.

1000016281.jpg
 

hanks

Aktiivinen jäsen
Sain sittenkin tehtyä conffin, joilla säätietoa saa luettua met.no -integraatiosta virtuaalisensoreihin. Kikka oli määritellä ne template-sensorit configuration.yaml -tiedostoon. Noita saa nyt käppyröille.

YAML:
sensor:
  - platform: template
    sensors:
      wind_speed:
        friendly_name: "Wind Speed"
        unit_of_measurement: 'm/s'
        value_template: "{{ state_attr('weather.forecast_home', 'wind_speed') }}"
      humidity:
        friendly_name: "Humidity"
        unit_of_measurement: '%'
        value_template: "{{ state_attr('weather.forecast_home', 'humidity') }}"
      temperature:
        friendly_name: "Temperature"
        unit_of_measurement: '°C'
        value_template: "{{ state_attr('weather.forecast_home', 'temperature') }}"
      dew_point:
        friendly_name: "Dew point"
        unit_of_measurement: '°C'
        value_template: "{{ state_attr('weather.forecast_home', 'dew_point') }}"
 

Bysmyyr

Jäsen
Tuossa on nyt 5 min ja se riittää havaitsemaan sulatukset, mikä on yksi mielenkiinnon kohde ilpeissä.

Tähän liittyen Daikin Europe loihe lausumaan pari kuukautta takaperin tuossa ensinmainitussa github-repossa, että tulevat lähiaikoina julkaisemaan kehittäjäportaalin, eli nämä harrastelijoiden käyttämät rajapinnat saanevat virallisen statuksen, mikä on hyvä asia. Myös uudista ominaisuuksista mainittiin.

Huonompi uutinen oli että aikovat toteuttaa rajoituksen 150 kutsuun per päivä. Jotkut ovat raportoineet, että ovat huomanneet rajoituksen olevan jo päällä heidän kohdallaan.

Jopas viimein, eikö ne oo tuota luvanneet jo monta vuotta. Pitänee itekin sitten vähän lisätä kakutusta koodiin ettei mene tuo 150 yli, ohan se kuitenkin kerta per 10min niin saa mulle riittää
 

Bysmyyr

Jäsen
Tässä vielä kaikki mitä se api antaa jos jotain kiinnostaa:(pahoittelen mut foorumi hajottaa formatoinnin, jsonia se on)

{ "_id": "xxxx", "id": "xxx", "type": "dx4", "deviceModel": "dx4", "isCloudConnectionUp": { "settable": false, "value": true }, "managementPoints": [ { "embeddedId": "gateway", "managementPointType": "gateway", "managementPointCategory": "secondary", "daylightSavingTimeEnabled": { "settable": true, "value": true }, "errorCode": { "settable": false, "value": "" }, "firmwareVersion": { "settable": false, "value": "1_28_0" }, "isFirmwareUpdateSupported": { "settable": false, "value": true }, "isInErrorState": { "settable": false, "value": false }, "ledEnabled": { "settable": true, "value": true }, "ipAddress": { "settable": false, "value": "xxx" }, "macAddress": { "settable": false, "value": "xxx" }, "modelInfo": { "settable": false, "value": "BRP069C4x" }, "regionCode": { "settable": false, "value": "eu" }, "serialNumber": { "settable": false, "value": "xxx" }, "ssid": { "settable": false, "value": "DaikinAP94307" }, "timeZone": { "settable": true, "value": "Europe/Helsinki" }, "wifiConnectionSSID": { "settable": false, "value": "xxxx" }, "wifiConnectionStrength": { "settable": false, "value": -54, "maxValue": 0, "minValue": -90, "stepValue": 1 } }, { "embeddedId": "climateControl", "managementPointType": "climateControl", "managementPointSubType": "mainZone", "managementPointCategory": "primary", "consumptionData": { "ref": "#consumptionData", "settable": false, "value": { "electrical": { "unit": "kWh", "heating": { "d": [ 1, 1.3, 2, 2.1, 1.7, 1.4, 1, 1.2, 1.2, 0.9, 0.8, 1.5, 1.4, 1.4, 1.5, 2.5, 2.3, 0, 0, 0, 0, 0, 0, 0 ], "w": [ 26.6, 14.6, 11.6, 16.4, 14.3, 20.7, 17.6, 25.3, 28.8, 22.9, 16.1, 9.1, null, null ], "m": [ 155.7, 353.4, 444, 213.5, 116, 47.2, 0.6, 14.1, 107.6, 290.5, 344.5, 465.6, 441.9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }, "cooling": { "d": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "w": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, null, null ], "m": [ 0, 0, 0.1, 0, 0, 10.7, 0.3, 9.2, 0, 0.1, 0.8, 0.4, 0.7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] } } } }, "demandControl": { "ref": "#demandControl", "settable": true, "value": { "currentMode": { "value": "off", "settable": true, "values": [ "off", "auto", "fixed", "scheduled" ] }, "modes": { "fixed": { "stepValue": 5, "value": 70, "minValue": 40, "maxValue": 100, "settable": true }, "scheduled": { "settable": true, "meta": { "minIntervalBetweenActions": "00:01:00", "maxActionsPerActionPeriod": 4, "consecutiveActionsAllowed": true, "actionPeriods": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ], "actionTypes": { "currentMode": { "settable": true, "values": [ "off", "fixed" ] }, "modes": { "fixed": { "stepValue": 5, "minValue": 40, "maxValue": 100, "settable": true } } } }, "value": { "actions": {} } } } } }, "econoMode": { "settable": true, "values": [ "on", "off" ], "value": "off" }, "errorCode": { "settable": false, "value": "00-" }, "fanControl": { "ref": "#fanControl", "settable": true, "value": { "operationModes": { "heating": { "fanSpeed": { "currentMode": { "value": "quiet", "settable": true, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "value": 4, "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": true } } }, "fanDirection": { "horizontal": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing" ] } }, "vertical": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing", "windNice" ] } } } }, "cooling": { "fanSpeed": { "currentMode": { "value": "auto", "settable": true, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "value": 1, "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": true } } }, "fanDirection": { "horizontal": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing" ] } }, "vertical": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing", "windNice" ] } } } }, "auto": { "fanSpeed": { "currentMode": { "value": "auto", "settable": true, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "value": 1, "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": true } } }, "fanDirection": { "horizontal": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing" ] } }, "vertical": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing", "windNice" ] } } } }, "dry": { "fanSpeed": { "currentMode": { "value": "auto", "settable": true, "values": [ "auto" ] } }, "fanDirection": { "horizontal": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing" ] } }, "vertical": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing", "windNice" ] } } } }, "fanOnly": { "fanSpeed": { "currentMode": { "value": "fixed", "settable": true, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "value": 5, "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": true } } }, "fanDirection": { "horizontal": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing" ] } }, "vertical": { "currentMode": { "value": "stop", "settable": true, "values": [ "stop", "swing" ] } } } } } } }, "holidayMode": { "ref": "#holidayMode", "settable": true, "value": { "enabled": false } }, "iconId": { "settable": true, "maxValue": 255, "minValue": 0, "value": 15 }, "isCoolHeatMaster": { "settable": false, "value": true }, "isHolidayModeActive": { "settable": false, "value": false }, "isInCautionState": { "settable": false, "value": false }, "isInErrorState": { "settable": false, "value": false }, "isInWarningState": { "settable": false, "value": false }, "isLockFunctionEnabled": { "settable": false, "value": false }, "name": { "settable": true, "maxLength": 20, "value": "DaikinAP94307" }, "onOffMode": { "settable": true, "values": [ "on", "off" ], "value": "on" }, "operationMode": { "settable": true, "value": "heating", "values": [ "fanOnly", "heating", "cooling", "auto", "dry" ] }, "outdoorSilentMode": { "settable": false, "values": [ "on", "off" ], "value": "off" }, "powerfulMode": { "settable": true, "values": [ "on", "off" ], "value": "off" }, "isPowerfulModeActive": { "settable": false, "value": false }, "schedule": { "ref": "#schedule", "settable": true, "value": { "currentMode": { "value": "any", "settable": true, "values": [ "any" ] }, "nextAction": {}, "modes": { "any": { "currentSchedule": { "value": "0", "settable": true, "values": [ "0" ] }, "enabled": { "value": false, "settable": true }, "meta": { "minIntervalBetweenActions": "00:01:00", "maxSchedules": 1, "maxActionsPerActionPeriod": 6, "consecutiveActionsAllowed": true, "actionTypes": { "operationMode": { "settable": false, "values": [ "fanOnly", "heating", "cooling", "auto", "dry", "off" ] }, "roomTemperature": { "heating": { "settable": false, "stepValue": 0.5, "minValue": 10, "maxValue": 30 }, "cooling": { "settable": false, "stepValue": 0.5, "minValue": 18, "maxValue": 32 }, "auto": { "settable": false, "stepValue": 0.5, "minValue": 18, "maxValue": 30 } }, "fanSpeed": { "heating": { "currentMode": { "settable": false, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": false } } }, "cooling": { "currentMode": { "settable": false, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": false } } }, "auto": { "currentMode": { "settable": false, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": false } } }, "dry": { "currentMode": { "settable": false, "values": [ "auto" ] } }, "fanOnly": { "currentMode": { "settable": false, "values": [ "auto", "quiet", "fixed" ] }, "modes": { "fixed": { "stepValue": 1, "minValue": 1, "maxValue": 5, "settable": false } } } }, "econoMode": { "settable": false, "values": [ "on", "off" ] } } }, "schedules": { "0": { "name": { "maxLength": 32, "settable": true, "value": "" }, "meta": { "actionPeriods": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ], "isReadOnly": false }, "actions": {}, "settable": true } } } } } }, "sensoryData": { "ref": "#sensoryData", "settable": false, "value": { "roomTemperature": { "settable": false, "unit": "°C", "value": 20, "stepValue": 1, "minValue": -25, "maxValue": 50 }, "outdoorTemperature": { "settable": false, "unit": "°C", "value": -4, "stepValue": 0.5, "minValue": -25, "maxValue": 50 } } }, "streamerMode": { "settable": true, "values": [ "on", "off" ], "value": "off" }, "temperatureControl": { "ref": "#temperatureControl", "settable": true, "value": { "operationModes": { "heating": { "setpoints": { "roomTemperature": { "settable": true, "value": 16.5, "unit": "°C", "stepValue": 0.5, "minValue": 10, "maxValue": 30 } } }, "cooling": { "setpoints": { "roomTemperature": { "settable": true, "value": 25, "unit": "°C", "stepValue": 0.5, "minValue": 18, "maxValue": 32 } } }, "auto": { "setpoints": { "roomTemperature": { "settable": true, "value": 25, "unit": "°C", "stepValue": 0.5, "minValue": 18, "maxValue": 30 } } } } } } }, { "embeddedId": "indoorUnit", "managementPointType": "indoorUnit", "managementPointCategory": "secondary", "softwareVersion": { "settable": false, "value": "21003802" }, "eepromVersion": { "settable": false, "value": "147F" }, "dryKeepSetting": { "settable": false, "values": [ "on", "off" ], "value": "on" }, "sensoryData": { "ref": "#sensoryData", "settable": false, "value": { "deltaD": { "settable": false, "value": 0, "minValue": 0, "maxValue": 11, "stepValue": 1, "unit": "°C" }, "fanMotorRotationSpeed": { "settable": false, "value": 510, "minValue": 0, "maxValue": 2550, "stepValue": 10, "unit": "rpm" }, "heatExchangerTemperature": { "settable": false, "value": 22.5, "minValue": -32, "maxValue": 95.5, "stepValue": 0.5, "unit": "°C" }, "suctionTemperature": { "settable": false, "value": 20.5, "minValue": -32, "maxValue": 95.5, "stepValue": 0.5, "unit": "°C" } } } }, { "embeddedId": "outdoorUnit", "managementPointType": "outdoorUnit", "managementPointCategory": "secondary", "errorCode": { "settable": false, "value": "00-" }, "isInErrorState": { "settable": false, "value": false }, "isInWarningState": { "settable": false, "value": false }, "isInCautionState": { "settable": false, "value": false } } ], "embeddedId": "824668", "timestamp": "2024-01-19T08:44:17.622Z" }
 

hanks

Aktiivinen jäsen
Perfera 30/40 -keskustelussa kysyttiin miten saada HA:ssa graafiin eri tyyppisiä arvoja y-akselille.

Vähän OT, mutta saako Home Assistantissa tämmöistä graafia, missä on kahta eri yksikköä samalla graafilla? Eli kuten tässä tapauksessa lämpötiloja sekä kierrosnopeuden? Oletan, että Hanksin graafi ei ole HA:sta.

Vastasin:
On HA:sta, tuo on tehty ApexCharts custom kortilla. Asenna ensin HACS (Home Assistant Community Store, https://hacs.xyz/). Pitää olla myös github-tili, joka pitää liittää HACS:iin. Sitten voi asennella vaikka mitä lisäosia.

Täällä kattavat ohjeet mitä tuolla ApexChartsilla voi tehdä, on paljon monipuolisempi kuin HA:n vakiomalli.


Ajattelin laittaa tähän esimerkkinä konffin jota olen hieronut tässä viime päivinä.

YAML:
type: custom:apexcharts-card
header:
  show: true
  title: Perfera 30 4h
  show_states: true
  colorize_states: true
graph_span: 4h
apex_config:
  legend:
    show: true
  chart:
    height: 250
all_series_config:
  stroke_width: 1
yaxis:
  - id: fan
    opposite: true
    min: 0
    max: 1250
    decimals: 0
    apex_config:
      tickAmount: 5
  - id: temp
    min: -40
    max: 60
    decimals: 0
    apex_config:
      tickAmount: 5
series:
  - entity: sensor.perfera_30_climatecontrol_outdoor_temperature
    name: Ulkoilma
    yaxis_id: temp
    color: blue
  - entity: sensor.perfera_30_indoorunit_heat_exchanger_temperature
    name: Lämmönvaihdin
    yaxis_id: temp
    color: crimson
  - entity: sensor.perfera_30_indoorunit_suction_temperature
    name: Imuputki
    yaxis_id: temp
    color: orange
  - entity: sensor.perfera_30_indoorunit_delta_d
    name: deltaD
    yaxis_id: temp
    color: violet
  - entity: sensor.perfera_30_indoorunit_fan_motor_rotation_speed
    name: Puhallin
    yaxis_id: fan
    color: skyblue
    curve: stepline
    type: area
    opacity: 0.1

Näyttää tältä (puhelimessa):

IMG_1122.jpeg
 

Elpakko

Aktiivinen jäsen
Yritän HA:ssa tehdä automaatiota. Tarveohjaus päälle 95÷ kun pakkanen laskee alle -11c. Mikähän tässä koodissa on pielessä, kun ei triggeröitynyt ehtojen täyttyessä.

YAML:
alias: Tarveohjaus 95% 10 asteen pakkasella
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.toshiba_outdoor_temperature
    above: "-11"
condition: []
action:
  - device_id: 2f21f9f336228656948edca056f0a4de
    domain: select
    entity_id: 0fb18484f28d183aa0924fd5a5889830
    type: select_option
    option: "95"
mode: single
 

hanks

Aktiivinen jäsen
Yritin tehdä virtuaalisensoria, joka laskee hetkellisen antotehon puhaltimen kierrosnopeuden ja imu/puhallusilman lämpötilaerosta. Puhallusilman lämpötilaa käytetään myös ilman tiheyden laskennassa ideaalikaasun tilanyhtälöä soveltaen (sain sytykkeitä täältä: https://lampopumput.info/foorumi/threads/uusi-flagship-model-msz-rw.32323/page-22#post-626582). Puhallusilman tilavuus interpoloidaan kierrosluvusta valmistajan antamien tilavuusarvojen perusteella, olen itse yrittänyt mitata vastaavat kierrosnopeudet, alin (silent) on epävarma.

Python:
{% set in_temp = states('sensor.perfera_30_indoorunit_suction_temperature') | float %}
{% set out_temp = states('sensor.perfera_30_indoorunit_heat_exchanger_temperature') | float %}
{% set temp_diff = out_temp - in_temp %}
{% set air_density = 101325 / (287.05 * (out_temp + 273.15)) %}

{% set rpms = ['0', '440', '640', '850', '1250'] %}
{% set vols = ['0', '4.02', '4.90', '7.53', '12.52'] %}
{% set fan_rpm = states('sensor.perfera_30_indoorunit_fan_motor_rotation_speed') %}

{% for i in range(4) %}
  {% if fan_rpm|int <= rpms[i+1]|int %}
    {% set air_volume = vols[i]|float + ((vols[i+1]|float-vols[i]|float) / (rpms[i+1]|int-rpms[i]|int)) * (fan_rpm|int-rpms[i]|int) %}
    {{ air_volume|float/60 * air_density|float * temp_diff|float }}
    {% break %}
  {% endif %}
{% endfor %}

Miltä näyttää?

Tarkoitus on vielä laittaa yksi zigbee-anturi mittaamaan imuilmaa pumpun päältä sekä virtamittari sähkökaappiin. Sitten pitäis saada COP laskettua.
 
Viimeksi muokattu:

Elpakko

Aktiivinen jäsen
Yritin tehdä virtuaalisensoria, joka laskee hetkellisen antotehon puhaltimen kierrosnopeuden ja imu/puhallusilman lämpötilaerosta. Puhallusilman lämpötilaa käytetään myös ilman tiheyden laskennassa ideaalikaasun tilanyhtälöä soveltaen (sain sytykkeitä täältä: https://lampopumput.info/foorumi/threads/uusi-flagship-model-msz-rw.32323/page-22#post-626582). Puhallusilman tilavuus interpoloidaan kierrosluvusta valmistajan antamien tilavuusarvojen perusteella, olen itse yrittänyt mitata vastaavat kierrosnopeudet, alin (silent) on epävarma.

Python:
{% set in_temp = states('sensor.perfera_30_indoorunit_suction_temperature') | float %}
{% set out_temp = states('sensor.perfera_30_indoorunit_heat_exchanger_temperature') | float %}
{% set temp_diff = out_temp - in_temp %}
{% set air_density = 101325 / (287.05 * (out_temp + 273.15)) %}

{% set rpms = ['0', '440', '640', '850', '1250'] %}
{% set vols = ['0', '4.02', '4.90', '7.53', '12.52'] %}
{% set fan_rpm = states('sensor.perfera_30_indoorunit_fan_motor_rotation_speed') %}

{% for i in range(4) %}
  {% if fan_rpm|int <= rpms[i+1]|int %}
    {% set air_volume = vols[i]|float + ((vols[i+1]|float-vols[i]|float) / (rpms[i+1]|int-rpms[i]|int)) * (fan_rpm|int-rpms[i]|int) %}
    {{ air_volume|float/60 * air_density|float * temp_diff|float }}
    {% break %}
  {% endif %}
{% endfor %}

Miltä näyttää?

Tarkoitus on vielä laittaa yksi zigbee-anturi mittaamaan imuilmaa pumpun päältä sekä virtamittari sähkökaappiin. Sitten pitäis saada COP laskettua.
Hyvältä näyttää, saatan ottaa omaankin käyttöön mikäli toimii
 

-Teme-

Vakionaama
Yritän HA:ssa tehdä automaatiota. Tarveohjaus päälle 95÷ kun pakkanen laskee alle -11c. Mikähän tässä koodissa on pielessä, kun ei triggeröitynyt ehtojen täyttyessä.

YAML:
alias: Tarveohjaus 95% 10 asteen pakkasella
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.toshiba_outdoor_temperature
    above: "-11"
condition: []
action:
  - device_id: 2f21f9f336228656948edca056f0a4de
    domain: select
    entity_id: 0fb18484f28d183aa0924fd5a5889830
    type: select_option
    option: "95"
mode: single
Tuolla on above -11 eli yli - eikö sen pitäisi olla alle eli below?
 

Elpakko

Aktiivinen jäsen
Sinänsä ihmeellistä, ettei tuo aiemmin laittamani toiminut. Tämän nimittäin toimi:

YAML:
alias: Tarveohjaus 80% alle 5 asteen pakkasilla
description: ""
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.toshiba_outdoor_temperature
    above: "-5"
condition: []
action:
  - device_id: 2f21f9f336228656948edca056f0a4de
    domain: select
    entity_id: 0fb18484f28d183aa0924fd5a5889830
    type: select_option
    option: "80"
mode: single

En ymmärrä miksi toinen toimi, mut toinen ei
 

heebo1974

Aktiivinen jäsen
Meille asennettiin tänään Comfora N 35 ja ihmetyksekseni wifimoduuli oli mallia BRP069B4X ja tuo HA:n sisäinen integraatiokin lähti sillä toimimaan. No eipä tuolla sisäisellä sitten hirveästi virkaa ole, kun ei sisällä oikeastaan kuin ohjauksen.
Piti heti asennella https://github.com/rospogrigio/daikin_residential , kun sillä saa nyt ainakin logitettua kulutuksen.
Tuo forkki ei taas toimi tällä wifimoduulilla, niin jää nuo lisäentityt saamatta.
Yksi mikä tässä pumpussa on kyllä surkeaa, on se ettei se puhalla halutulla nopeudella, kun se on saavuttanut tavoitelämpötilan.
Meillä kun tuo on asennettu portaikkoon, niin pitäisi saada olla maksimipuhalluksella koko ajan, (ääni ei haittaa, kun on vanhaan pumppuun jo tottunu) koska lämmin ilma jää vain siihen pyörimään eikä leviä asuntoon kunnolla.
Nyt pitäisikin keksiä hyvä automaatio, jolla HA ohjailisi pumppua niin, että kun tavoitelämpö on saavutettu, niin laitetaan vain FAN mode päälle ja täys hönkä. Sitten kun taas lämmöt putoavat, niin lämmitys päälle.
 

hanks

Aktiivinen jäsen
Hyvältä näyttää, saatan ottaa omaankin käyttöön mikäli toimii
Kyllä sillä käppyrää saa aikaan. Toinen juttu on kuinka hyvin se vastaa todellisuutta. :cool:

Kuten olen maininnut, silent-nopeuden arvo on herättänyt ihmetystä, kun tuntuu että se ei oikein ole linjassa muiden arvojen kanssa. Kokelin nyt vielä saada pumpun silent-puhallukselle ja luin mitä nopeutta se antoi, tuli 560-570. Toisaalta joskus puhallin käy minimissään 440:ssä, mutta ilmeisesti se jarruttelee omia aikojaan automatiikkansa perusteella.

Ajattelin nyt laittaa taulukkolaskentaan ne paremmin tiedetyt arvot low, medium ja high ja katsoa minkälaisen käyrän se piirtää. Sehän on suora viiva! Ja jos laittaa silentille 570, niin sekin on täysin lineaarinen, minkä vois luulla käyvän järkeen.

1706121882491.png

Olin laittanut tuohon koodiin myös arvoksi että 0 nopeudella tulee 0 kuutiota minuutissa, jottei sulatusten aikana extrapoloitaisi negatiivista puhallusta. Mutta sitten tuo interpolointi 0-570 rpm ei pysy enää suoralla, ellei lisää myös 250 ja 0. Kaipa se todellisuudessa kaareutuisi kohti nollaa, mutta en jaksa hifistellä sen kanssa.

Lisäksi vaihdoin vielä puhallusilmalle käyttöön oman zigbee-anturini antaman lukeman. Vaikka se on aika hyvin linjassa daikinin rajapinnasta tulevan lämmönvaihtimen lämpötilan kanssa, huomasin että hitaammilla nopeuksilla ei ole (puhallusilma on vähän kylmempää verrattuna lämmönvaihtimen anturiin). Mutta jos ei ole ylimääräisiä antureita, voi mennä noilla daikinin antamilla arvoilla.

Koodi olis nyt tällainen:
Python:
{% set in_temp = states('sensor.perfera_30_indoorunit_suction_temperature') | float %}
{% set out_temp = states('sensor.perfera_30_puhallusilma_lampotila') | float %}
{% set temp_diff = out_temp - in_temp %}
{% set air_density = 101325 / (287.05 * (out_temp + 273.15)) %}

{% set fan_rpm = states('sensor.perfera_30_indoorunit_fan_motor_rotation_speed') | int %}
{% set rpms = [0, 250, 570, 640, 850, 1250] %}
{% set vols = [0, 0, 4.02, 4.90, 7.53, 12.52] %}

{% for i in range(rpms|length) %}
  {% if fan_rpm <= rpms[i+1] %}
    {% set air_volume = vols[i] + ((vols[i+1]-vols[i]) / (rpms[i+1]-rpms[i])) * (fan_rpm-rpms[i]) %}
    {{ air_volume/60 * air_density * temp_diff }}
    {% break %}
  {% endif %}
{% endfor %}

Tämmöistä käppyrää saadaan:

1706122234308.png


Tuli opisteltua tässä välissä että noita template-sensoreja saa nykyään helpomminkin tehtyä kuin configuration.yaml -tiedostoon. Settings -> Devices & services -> Helpers -> Create helper -> Template -> Sensor -> Template a sensor. Varmasti tiedossa monilla, mutta laitetaan nyt tähän kuitenkin.
 
Viimeksi muokattu:

hanks

Aktiivinen jäsen
Meille asennettiin tänään Comfora N 35 ja ihmetyksekseni wifimoduuli oli mallia BRP069B4X ja tuo HA:n sisäinen integraatiokin lähti sillä toimimaan. No eipä tuolla sisäisellä sitten hirveästi virkaa ole, kun ei sisällä oikeastaan kuin ohjauksen.
Piti heti asennella https://github.com/rospogrigio/daikin_residential , kun sillä saa nyt ainakin logitettua kulutuksen.
Tuo forkki ei taas toimi tällä wifimoduulilla, niin jää nuo lisäentityt saamatta.
Yksi mikä tässä pumpussa on kyllä surkeaa, on se ettei se puhalla halutulla nopeudella, kun se on saavuttanut tavoitelämpötilan.
Meillä kun tuo on asennettu portaikkoon, niin pitäisi saada olla maksimipuhalluksella koko ajan, (ääni ei haittaa, kun on vanhaan pumppuun jo tottunu) koska lämmin ilma jää vain siihen pyörimään eikä leviä asuntoon kunnolla.
Nyt pitäisikin keksiä hyvä automaatio, jolla HA ohjailisi pumppua niin, että kun tavoitelämpö on saavutettu, niin laitetaan vain FAN mode päälle ja täys hönkä. Sitten kun taas lämmöt putoavat, niin lämmitys päälle.
Hyvä että on paikallinen rajapinta, niin ei tarvitse olla pilvi-riippuvainen. Harmi, että siitä ei saa noita lisäentiteettejä. :(
 

hanks

Aktiivinen jäsen
Kyllä sillä käppyrää saa aikaan. Toinen juttu on kuinka hyvin se vastaa todellisuutta. :cool:

Kokeilin eilen testiä, että nostin pyyntiä 14:sta 30:en ja puhallus täysille. Sitten katsoin käppyröistä, että kuinka korkealle tuolla kaavalla mitattu lämpöteho nousee. Tuli 7 kW, mikä on kyllä enemmän kuin valmistajan mukaan pumpusta lähtee (6,7 kW). Tietysti tuossa mittauksessa on epätarkkuuksia (imuilma nyt puolen asteen tarkkuudella, kokeilen vielä sillä zigbee-anturilla), ja oliko vielä niin että Daikin on liioitellut puhallustehoja (VTT:n testissä saivat maksimiksi reilu 180 l/s, kun taas valmistajan kertoma 12,5 m3/min on 209 l/s). No, nämä on tällaisia koti-mittauksia, lähinnä huvin ja urheilun vuoksi.
 

Elpakko

Aktiivinen jäsen
Kokeilin eilen testiä, että nostin pyyntiä 14:sta 30:en ja puhallus täysille. Sitten katsoin käppyröistä, että kuinka korkealle tuolla kaavalla mitattu lämpöteho nousee. Tuli 7 kW, mikä on kyllä enemmän kuin valmistajan mukaan pumpusta lähtee (6,7 kW). Tietysti tuossa mittauksessa on epätarkkuuksia (imuilma nyt puolen asteen tarkkuudella, kokeilen vielä sillä zigbee-anturilla), ja oliko vielä niin että Daikin on liioitellut puhallustehoja (VTT:n testissä saivat maksimiksi reilu 180 l/s, kun taas valmistajan kertoma 12,5 m3/min on 209 l/s). No, nämä on tällaisia koti-mittauksia, lähinnä huvin ja urheilun vuoksi.
Joo, luulen että nuo ilmamäärät ovat jonkin verran pienempiä kuin mitä esitteessä sanotaan. Saiskohan tarkemmat ilmamäärät, jos laskis tuon 6,7kW tehon mukaan? Eli vehje täysille ja pudottaa ilmamäärä-arvoa sen verran, et tulee toi 6,7kW. Siitä sitten interpoloisi jollain ilveellä nuo alempien nopeuksien ilmamäärät.
 

hanks

Aktiivinen jäsen
Joo, luulen että nuo ilmamäärät ovat jonkin verran pienempiä kuin mitä esitteessä sanotaan. Saiskohan tarkemmat ilmamäärät, jos laskis tuon 6,7kW tehon mukaan? Eli vehje täysille ja pudottaa ilmamäärä-arvoa sen verran, et tulee toi 6,7kW. Siitä sitten interpoloisi jollain ilveellä nuo alempien nopeuksien ilmamäärät.
Jos ilmamäärä on 10% alempi, niin riittää että vähentää tehosta 10%. Sillä opilla 7 kW olis 6,3 kW.
 

Elpakko

Aktiivinen jäsen
Koodi olis nyt tällainen:
Python:
{% set in_temp = states('sensor.perfera_30_indoorunit_suction_temperature') | float %}
{% set out_temp = states('sensor.perfera_30_puhallusilma_lampotila') | float %}
{% set temp_diff = out_temp - in_temp %}
{% set air_density = 101325 / (287.05 * (out_temp + 273.15)) %}

{% set fan_rpm = states('sensor.perfera_30_indoorunit_fan_motor_rotation_speed') | int %}
{% set rpms = [0, 250, 570, 640, 850, 1250] %}
{% set vols = [0, 0, 4.02, 4.90, 7.53, 12.52] %}

{% for i in range(rpms|length) %}
  {% if fan_rpm <= rpms[i+1] %}
    {% set air_volume = vols[i] + ((vols[i+1]-vols[i]) / (rpms[i+1]-rpms[i])) * (fan_rpm-rpms[i]) %}
    {{ air_volume/60 * air_density * temp_diff }}
    {% break %}
  {% endif %}
{% endfor %}
Kiitokset vielä @hanks tästä. Sain omaankin Home Assistantiin nyt antotehot ja koticopit piirtymään graafeille.
 

hanks

Aktiivinen jäsen
Kiitokset vielä @hanks tästä. Sain omaankin Home Assistantiin nyt antotehot ja koticopit piirtymään graafeille.
Jahka saan tilaamani zigbee-sähkömittarin, tarkoitus olis tehdä samaa. Mulla on ilppi kiinteästi kytketty niin pitää laittaa sähkökaappiin ILPin vaihejohtimen ympäri. Toivottavasti sähkökaappi ei ole liian tiivis faradayn häkki.
 

heebo1974

Aktiivinen jäsen
Jahka saan tilaamani zigbee-sähkömittarin, tarkoitus olis tehdä samaa. Mulla on ilppi kiinteästi kytketty niin pitää laittaa sähkökaappiin ILPin vaihejohtimen ympäri. Toivottavasti sähkökaappi ei ole liian tiivis faradayn häkki.
Minkälaisen tilasit. Itselläni ehkä nyt sama edessä, kun asentaja ei suostunut asentamaan pistotulpalla. Nyt sitten ulkona lisäksi joku suojakatkaisin, että kuka vaan voi käydä vetäsemässä ILP:stä sähköt veke. :( Vanha ilppi oli pistotulpalla.
 

Luukku

Vakionaama

Elpakko

Aktiivinen jäsen
Kiitokset vielä @hanks tästä. Sain omaankin Home Assistantiin nyt antotehot ja koticopit piirtymään graafeille.
COP laskennassa tulee tuommoisia hienoja piikkejä, johtunee Daikinin pilvi-integraatiosta, eli antoteho laskelmat tulevat myöhässä. Shellyn datat tulevat reaaliajassa ja tuo coppilaskelma räjähtää silmille, kun ottoteho on 50W ja antoteho rullailee vielä minuutin yli 1700W tienoilla.

1706292168523.png

Pystyisköhän tuon jotenkin korjaamaan?

EDIT: kokeilen seuraavaa. Aina kun pumpun ottoteho on alle 100W, sensori antaa nolla-arvon. Alla koodi, kopsattu HA Support sivulta:


YAML:
{% set q = states('sensor.daikin_antoteho') | float %}
          {% set w = states('sensor.daikin_power') | float %}
          {% if q >= 0 and w > 100 %}
            {{ (q / w) | round(2) }}
          {% else %}
            0
          {% endif %}

EDIT2: Tästä tuli mieleen, että onko tuota pilvestä tietojen hakemisen viivettä mahdollisuus pienentää jotenkin?
 
Viimeksi muokattu:

dimen

Jäsen
Pystyisikö tuota laskentaa tekemään liukuvan keskiarvojen avulla? Eli laskisi vaikka 30-60sek keskiarvoilla lukemia, voisi piikkien vaikutus hävitä?
 

hanks

Aktiivinen jäsen
Liukuvaa keskiarvoa vois käyttää, joko seko otto- että antotehoon, tai sitten COP:iin. Tämän voinee tehdä derivative sensoreilla tai esim. ApexCharts osaa tehdä piirrettäessä.

YAML:
  - entity: sensor.heating_power
    yaxis_id: power
    name: Lämpöteho
    color: green
    group_by:
      func: avg
      duration: 1min

Muuten viivästyskin onnistuu apexchartissa (time_delta), mutta luulen että se koskee taas vain graafin piirtämistä, joten sen avulla ei voine COP:pia laskea.

EDIT2: Tästä tuli mieleen, että onko tuota pilvestä tietojen hakemisen viivettä mahdollisuus pienentää jotenkin?
Tuossa integraatiossa on joku arvo, millä intervallilla se pollaa Daikin pilveä, sitä voinee muokata koodissa, mutta Daikinihan on uhannut pistää rajoituksen rajapinnan käyttöön. Ei liene vielä käytössä.
 
Viimeksi muokattu:

Elpakko

Aktiivinen jäsen
Pystyisikö tuota laskentaa tekemään liukuvan keskiarvojen avulla? Eli laskisi vaikka 30-60sek keskiarvoilla lukemia, voisi piikkien vaikutus hävitä?
Olisko ideaa kuinka tämän voisi toteuttaa? Kokeillut vähän kaikenlaista, enkä vaan osaa. Helper sensorit vittuilee takaisin ja jos yritän tehdä sensorin suoraan Configuration.yaml -tiedostoon, ne ei tule lainkaan näkyviin minnekään.
 

Elpakko

Aktiivinen jäsen
Vihdoin sain tuon toimimaan käyttäen average -sensoria. Tänään ollut Daikinissa erikoinen ilmiö. Vähän sulatuksen jälkeen kennon lämpötila ja ja näin ollen antoteho laskee hetkellisesti, ottoteho pysyy kuitenkin tasaisena. Mistäköhän tuommoinen voisi johtua?
1000016438.jpg
 
Back
Ylös Bottom