Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Koble OSO temperatursensorer til home assistant uten charge?


Anbefalte innlegg

Siden varmtvannsberederen i det nye huset viser seg å ha et defekt varmeelement og uansett er ganske gammel, så må jeg handle en ny. Det blir sannsynligvis en OSO saga S, 2kw 200l. OSO charge er skytjeneste og svindyr så det er uansett ikke aktuelt, men temperatursensoren til den ser jo snedig ut. Finnes det noe som kan kobles til disse sensorene og kommunisere med HA? Det sikkert er muligheter med ESB eller lignende, men det har jeg absolutt ingen erfaring med så en mer ferdig løsning hadde vert bedre. Bonus om det er zigbee eller kablet nett! Er åpen for andre forslag også, om noen har gode løsninger når jeg først skal bytte ut berederen.

Lenke til kommentar
Del på andre sider

  • 7 måneder senere...

Hei. Gjør et forsøk på å vekke opp igjen denne tråden. Synes du har en god ide!  Kom du noe videre med hvordan man kan gjøre integrasjon med Oso Charge sensor?

 

Jeg har også gammel tank som skal byttes ut. Har hatt sensor på "ut-røret" på denne, men vil jo bli mye mer nøyaktig å måle temperaturen i tanken. 

 

Andre som har innspill?

image.jpeg

Endret av stuing
Lenke til kommentar
Del på andre sider

Jeg ser ut til å få veldig gode målinger med DS18B20 vanntette sensorer plassert inntil stålet i tanken, innenfor isolasjonen. En i topp og en i bunn, så kan du velge å bruke et gjennomsnitt eller ikke. De koster kronestykker og havner rett inn i HA via ESPhome. enn kommer til i luken i bunn og propp i topp på oso berederen jeg har, som er et par år gammel og ser identisk ut som helt nye. Temperaturen ser iallefall til å treffe helt likt med termostaten i berederen.

Lenke til kommentar
Del på andre sider

Jeg kom ikke noe lenger med dette, har ikke hatt tid til å sette meg inn i esp'er og alt det der. Inntil videre laget jeg en sensor som detekterer når bryter er på men bereder ikke trekker strøm, da kan jeg se når den er varmet helt opp.

Spent på å lese mer om Magnus sin løsning!

Lenke til kommentar
Del på andre sider

Måtte ordne litt for og få dette til og virke, forsøkte og ringe oso for og muligens få ut noe informasjon om sensoren da det er fire kableler i ledningen. De var ikke særlig villige til og komme med noe info utover at jeg måtte kjøpe hele systemet.

 

Så måtte greie meg selv, fant heller ikke noe på nettet. Etter litt arbeid greide jeg og peile meg inn på hvordan de har designet sensoren, og stikkordet her er MCP 9808. Tre stykker er montert inne i staven for 300l bereder, de er satt opp med hver sin adresse på I2C bussen. 
 

øvre sensor :     adr 0X18 

midtre sensor:   adr 0X19

nedre sensor:   adr 0X1A

 

kabling: 

 

Rød = +5v

Sort = GND

Grønn =sDA

Hvit = sCL

IMG_2186.thumb.jpeg.344b0ca1c3dcdff9e791e3fd9437d81a.jpeg


kode esphome:

IMG_3189.thumb.jpeg.5a8a988d864e4726f4ad12054d520bf3.jpeg

  • Thanks 2
Lenke til kommentar
Del på andre sider

  • 3 uker senere...

Hei igjen. Ser forholdsvis greit ut å sette dette opp vha ESPHome, men har begynt å lure på hvor fordelaktig det er å få målt temperatur inne i tanken ift utenpå slik som @ArnsteinL beskriver.

 

Får man glede av at temperatur måles på tre forskjellige punkter i staven eller viser de tre sensorene stort sett det samme? 

Lenke til kommentar
Del på andre sider

stuing skrev (15 minutter siden):

Hei igjen. Ser forholdsvis greit ut å sette dette opp vha ESPHome, men har begynt å lure på hvor fordelaktig det er å få målt temperatur inne i tanken ift utenpå slik som @ArnsteinL beskriver.

 

Får man glede av at temperatur måles på tre forskjellige punkter i staven eller viser de tre sensorene stort sett det samme? 

 

Det er nok en grunn til at produsent har valgt en såpass omfattende metode for måling av temperatur. Men du kommer nok i mål med sensor på utsiden av tanken også. 

Det er stor variasjon i målt temperatur i de tre forskjellige sonene. Så det kan for eksempel benyttes til og beregne hvor mye energi som er i tanken til enhver tid. 

Bilde viser de tre forskjellige sensorene det siste døgnet.

 

tempvvb.thumb.jpg.67e77c4448e2fd0aa09c04c139a0a8eb.jpg

Når det gjelder esp programmeringen, er det jo bare og kopiere koden jeg har lagt ut lenger oppe i tråden, eventuelt endre hvilken pins i2c bussen er på og navn som passer deg så bør det virke 🙂 

Lenke til kommentar
Del på andre sider

  • 3 uker senere...

Holder på å implementere OSO sin sensor for 200l tank og ser det er noen forskjeller i forhold til det som er oppgitt her. Kommer tilbake til det i løpet av uken.

Men det jeg lurer på: Er det noen som vet hvor på denne sensorstaven de 3 sensorene er plassert. Jeg vil tro den ene er plassert lengst mulig ned i sensorstaven, men hvor er de 2 andre?

Lenke til kommentar
Del på andre sider

stigvi skrev (1 time siden):

Holder på å implementere OSO sin sensor for 200l tank og ser det er noen forskjeller i forhold til det som er oppgitt her. Kommer tilbake til det i løpet av uken.

Men det jeg lurer på: Er det noen som vet hvor på denne sensorstaven de 3 sensorene er plassert. Jeg vil tro den ene er plassert lengst mulig ned i sensorstaven, men hvor er de 2 andre?

Interessant og se hva forskjellen på 200l varianten er.

 

Den nederste sensoren er nesten helt i bunn av røret, den øverste er ca 20cm fra toppen og den midterste er ca midt mellom disse to på 300l varianten :)

Lenke til kommentar
Del på andre sider

Den ene endringen har ikke noe med sensoren å gjøre. Jeg bruker en esp8266 og den klarer ikke 400kHz avlesningsfrekvens. Så jeg endte opp med standardverdien på 50kHz.

For selve sensoren bruker de andre adresser:
Topp er 0x1D
Senter er 0x1E
Bunn er 0x1F
(Dette er altså for min 200l OSO sensor)

Jeg har laget mitt system slik at jeg setter temperaturen til 50 grader i de periodene jeg vil spare strøm, men samtidig ikke ha lavere temperatur enn at det går å dusje. Så setter jeg temperaturen til 67 eller 80 grader når strømmen er billig og avhengig av om det er hverdag eller helg.

Den nedre sensoren har lav prioritet så hvis den kommer under settpunkt, så varmes vannet med lav effekt. Den midterste sensoren har høyere prioritet og vannet varmes med litt høyere effekt. Og til sist, den øverste sensoren har så høy prioritet at effekten er 2kW dersom temperaturen har falt 1 grad under settpunkt.

 

substitutions:
  devicename: Varmtvannstank

esphome:
  compile_process_limit: 1
  name: varmtvannstank
  on_boot:
    - priority: -100
      then:
        - delay: 30s
        - homeassistant.event:
            event: esphome.boot
            data:
              message: "${devicename} Started"

esp8266:
  board: esp01_1m
  restore_from_flash: false

wifi:
  ssid: "HEIME5.ORG"
  password: !secret heime_wifi
  domain: .lan

#captive_portal:

# Enable logging
logger:


# Enable Home Assistant API
api:
  reboot_timeout: 24h

ota:

script:
  - id: set_output
    mode: single
    then:
      - output.set_level:
          id: pwm_output
          level: !lambda |-
            double diff_t = id(temperatur_varmtvannsbereder).state - id(varmtvannstank_topp_temperatur).state;
            double diff_c = id(temperatur_varmtvannsbereder).state - id(varmtvannstank_senter_temperatur).state;
            double diff_b = id(temperatur_varmtvannsbereder).state - id(varmtvannstank_bunn_temperatur).state;
            
            double v_t = diff_t + 0.00135 * id(temperatur_varmtvannsbereder).state - 0.03839286;
            double v_c = diff_c / 20 + 0.00135 * id(temperatur_varmtvannsbereder).state - 0.03839286;
            double v_b = diff_b / 200 + 0.00135 * id(temperatur_varmtvannsbereder).state - 0.03839286;
            double v = min((id(effekt)/100.0), max(max(v_t, 0.0), max(v_c, v_b)));
            id(power).publish_state(v * 2.0);
            return v;

globals:
  - id: last_value_from_ha
    type: int
    initial_value: '0'
  
  - id: effekt
    type: float
    restore_value: no
    initial_value: '100.0'

number:
  - platform: template
    max_value: 100.0
    min_value: 0.0
    step: 0.1
    id: effekt_varmtvannsbereder
    name: effekt_varmtvannsbereder
    unit_of_measurement: '%'
    initial_value: 100
    optimistic: true
    set_action:
      then:
        - lambda: |-
            id(effekt) = x;
        - script.execute: set_output
  
  - platform: template
    max_value: 80.0
    min_value: 5.0
    step: 5
    id: temperatur_varmtvannsbereder
    name: temperatur_varmtvannsbereder
    unit_of_measurement: '°C'
    initial_value: 60
    optimistic: true

i2c:
  sda: GPIO14
  scl: GPIO4
  scan: true
  
status_led:
  pin:
    number: GPIO13
    inverted: yes

output:
  - platform: sigma_delta_output
    pin: 12
    update_interval: 2.5s
    id: pwm_output
    state_change_action:
      - lambda: |-
          id(internalpower).publish_state(state ? 2.0 : 0.0);
          id(internalcost).publish_state(state ? 2.0 * id(current_energy_price).state : 0.0);
  
sensor:
  - platform: homeassistant
    id: current_energy_price
    entity_id: sensor.nordpool

  - platform: wifi_signal
    name: "${devicename} WiFi Signal"
    update_interval: 300s

  - platform: mcp9808
    id: varmtvannstank_topp_temperatur
    name: "${devicename}_topp_temperatur"
    address: 0x1D
    on_value:
      then:
        - script.execute: set_output

  - platform: mcp9808
    id: varmtvannstank_senter_temperatur
    name: "${devicename}_senter_temperatur"
    address: 0x1E
    on_value:
      then:
        - script.execute: set_output

  - platform: mcp9808
    id: varmtvannstank_bunn_temperatur
    name: "${devicename}_bunn_temperatur"
    address: 0x1F
    on_value:
      then:
        - script.execute: set_output

  - platform: total_daily_energy
    name: "VVB Total Daily Energy"
    power_id: power
    restore: false
    method: left
    accuracy_decimals: 2
    filters:
      - throttle: 60s
  
  - platform: integration
    name: "VVB Total Daily Cost"
    id: vvb_total_daily_cost
    sensor: internalcost
    state_class: "total_increasing"
    time_unit: h
    unit_of_measurement: "NOK"
    restore: false
    integration_method: left
    accuracy_decimals: 2
    filters:
      - throttle: 60s
  
  - platform: template
    id: power
    name: "Effekt varmtvann"
    unit_of_measurement: "kW"
    icon: "mdi:power-plug"
    accuracy_decimals: 3
    
  - platform: template
    id: internalpower
    unit_of_measurement: "kW"
    update_interval: 1s
    accuracy_decimals: 3
    internal: true
  
  - platform: template
    id: internalcost
    unit_of_measurement: "NOK"
    update_interval: 1s
    accuracy_decimals: 6
    internal: true
    
interval:
  - interval: 4h
    then:
    - if:
        condition:
          - lambda: !lambda |-
              auto time_now = id(homeassistant_time).utcnow();
              
              if(time_now.timestamp - id(last_value_from_ha) > 600)
                return true;
              
              return false;
        then:
          - number.set:
              id: temperatur_varmtvannsbereder
              value: 60

time:
  - platform: homeassistant
    id: homeassistant_time
    timezone: "Europe/Oslo"
    on_time:
      - seconds: 0
        minutes: 0
        hours: 0
        then:
          - sensor.integration.reset:  vvb_total_daily_cost

text_sensor:
  - platform: homeassistant
    id: watchdog
    entity_id: sensor.time
    on_value:
      then:
        - lambda: !lambda |-
            auto time_now = id(homeassistant_time).utcnow();
            id(last_value_from_ha) = time_now.timestamp;

binary_sensor:
  - platform: status
    name: "${devicename} Esp Status"

 

Endret av stigvi
Lenke til kommentar
Del på andre sider

Bare som en kommentar til formelen double v_t = diff_t + 0.00135 * id(temperatur_varmtvannsbereder).state - 0.03839286;

For et par år siden målte jeg varmetapet i fra tanken ved forskjellige temperaturer. Og det er dette som er grunnlaget for formlene. Hvis jeg stiller inn settpunkt på 70 grader så får jeg altså nøyaktig den effekten som skal til for å holde temperaturen der hvis en ikke tapper varmtvann.

Lenke til kommentar
Del på andre sider

Ser også at det er en del støy i fra mcp9808 så et filter hjelper en del på det, hvis en vil begrense datamengden som logges i HA

 

  - platform: mcp9808
    id: varmtvannstank_topp_temperatur
    name: "${devicename}_topp_temperatur"
    address: 0x1D
    filters:
      - min:
          window_size: 3
          send_every: 1

 

image.png.6de4b03ed00ac89ae4f6610a9d127dc5.png

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.