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

Hvordan endrer jeg mode (Off, Heat osv.) fra automation?


Anbefalte innlegg

Det forsvever meg (som mange sier her i Mandal) at jeg har gjort dette før, men jeg klarer ikke å finne det igjen noe sted. Det går greit å endre disse fra dashbordet i Hass, men jeg får det ikke til fra en automation. Jeg har en automation som er sånn:

 

 alias: Termostater til 5 grader
  trigger:
    platform: mqtt
    topic: ZWaveTermostatAv
  condition: []
  action:
  - data_template:
      node_id: '{{ trigger.payload }}'
      parameter: 10
      value: 50
    service: zwave.set_config_parameter
  - delay: 00:00:05
  - data_template:
      node_id: '{{ trigger.payload }}'
      parameter: 1
      value: 'heat'
    service: zwave.set_config_parameter
  id: '1524675052575'

Da setter den temperaturen riktig (parameter 10 til 50, som er fem grader), men ingenting skjer med den andre kommandoen, som er parameter 1 til heat. Jeg har også prøvd med Heat og med tallverdier, men kommer ingen vei. Har noen en anelse om hva jeg gjør feil?

Endret av Mastiff
Lenke til kommentar
Del på andre sider

Takk!  Det hjalp meg til og med til å finne igjen den koden jeg skrev i oktober i fjor, med din hjelp. Og jeg forsto hvorfor det var borte fra systemet. Jeg hadde ført opp at et SD-kort sviktet en knapp uke etter det, med tilbakeføring fra sikkerhetskopi. Og jeg hadde tydeligvis tatt sikkerhetskopien rett før jeg la inn denne koden. ? Det eneste som er kjipt, er at jeg må sende to payloads for å kjøre disse to tingene samtidig, for temperaturen tar Z-Wave-ID som payload, mens dette må ha navnet (i praksis climate.termostat_'+trigger.payload+'_heating) på termostaten istedenfor.

Lenke til kommentar
Del på andre sider

Det er bare det at det passer litt dårlig med hovedskriptet som styrer temperaturen (Python-skript i EventGhost). Jeg har 6 termostater, og det hender at noen trykker på midtknappen på noen av dem, så de blir satt til energy_heat istedenfor heat. Da kan jeg ikke lenger holde riktig temperatur i de rommene. Så koden min, som ville funket hvis det var samme tallet for Z-Wave-enhet og termostat (termostattallet er bestemt av sonen/rommet):

 

- alias: Termostater til 30 grader
  trigger:
    platform: mqtt
    topic: ZWaveTermostatPaa
  condition: []
  action:
  - data_template:
      node_id: '{{ trigger.payload }}'
      parameter: 10
      value: 300
    service: zwave.set_config_parameter
  - delay: 00:00:02
  - data_template:
      entity_id: "{{('climate.termostat_'+trigger.payload+'_heating')}}"
      operation_mode: 'Heat'
    service: climate.set_operation_mode
  id: '1524674475038'

Men når jeg sender temperaturen til termostat 8, som har node-id 3, vil den også prøve å sette termostat 3 til modus 'Heat', og siden det ikke fins noen termostat 3, funker jo ikke det. Jeg blir vel nødt til å legge inn en ekstra linje i hovedskriptet som setter modus, med termostatnummer som utgangspunkt.

 

Edit: Ja, jeg kunne nok lagt inn at den satte temperaturen både for energy_heat og heat, men da funker det jo ikke å kjøre opp tempen hvis termostaten skulle være slått av.

Endret av Mastiff
Lenke til kommentar
Del på andre sider

2 minutter siden, Mastiff skrev:

Det er bare det at det passer litt dårlig med hovedskriptet som styrer temperaturen (Python-skript i EventGhost). Jeg har 6 termostater, og det hender at noen trykker på midtknappen på noen av dem, så de blir satt til energy_heat istedenfor heat. Da kan jeg ikke lenger holde riktig temperatur i de rommene. Så koden min, som ville funket hvis det var samme tallet for Z-Wave-enhet og termostat (termostattallet er bestemt av sonen/rommet):

 


- alias: Termostater til 30 grader
  trigger:
    platform: mqtt
    topic: ZWaveTermostatPaa
  condition: []
  action:
  - data_template:
      node_id: '{{ trigger.payload }}'
      parameter: 10
      value: 300
    service: zwave.set_config_parameter
  - delay: 00:00:02
  - data_template:
      entity_id: "{{('climate.termostat_'+trigger.payload+'_heating')}}"
      operation_mode: 'Heat'
    service: climate.set_operation_mode
  id: '1524674475038'

Men når jeg sender temperaturen til termostat 8, som har node-id 3, vil den også prøve å sette termostat 3 til modus 'Heat', og siden det ikke fins noen termostat 3, funker jo ikke det. Jeg blir vel nødt til å legge inn en ekstra linje i hovedskriptet som setter modus, med termostatnummer som utgangspunkt.

Du får justert temperaturen på Energy Heat ved å sende set_temperature til climate.xxxx_energy_heat-entiteten. Evt. et skript som endrer til heat hver gang energy heat kommer. Energy heat og heat-status er lik på heating og energy_heat-entitetene, men temperatur er i henhold til modus, slik at energy_heat holder energy heat-temperatur uansett tilstand.

Lenke til kommentar
Del på andre sider

Jepp, jeg vet at de er like. Et skript utløst på modusendring er jo en lur tanke, men igjen funker det ikke når det skal slå på en termostat som er av for å kjøre opp temperaturen. :) Det blir nok til at jeg kjører to funksjoner fra hovedskriptet når det går til termostater, jeg har en egen subrutine for termostater.

 

Edit: Det var enklere enn jeg trodde. Jeg kunne bruke variabler som allerede var der, så det tok bare noen minutter.

Endret av Mastiff
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.