Talomat ja home assistant

  • Viestiketjun aloittaja Viestiketjun aloittaja JanneHo
  • Aloituspäivämäärä Aloituspäivämäärä

JanneHo

Jäsen
Ostimme tässä taannoin uuden aunnon, ja talossa on talomat (ilmeisesti entinen valohome) talo"automaatio" järjestelmä.

Vähän kaukaa haettua, mutta olisiko jollain tietoa miten tähän pääsisi kytkeytymään?
Automaatio ohjausboksissa on USB-liitin, uskaltaakohan tähän kytkeytyä läppärillä? Ja jos uskaltaa, saako siitä jotain tietoa ulos?

Tämä järjestelmä sinänsä toimii, mutta automaatiota tässä kyllä ei ole kuin nimessä. Kaikki talon valot, liiketunnistimet, hämäräkytkimet jne on kyllä järjestelmään kytketty, ja olisi mukava kun näitä voisi ohjata home assistantin automaatioden kautta.
 
Sama täällä, kontrollipaneelina toimii isompi värillinen kosketusnäyttö. CAN-väylään pääsee käsiksi, mutta onko kukaan saanut tosiaan kytkettyä joko väylän tai tietokoneen puolelta esim HA:iin. Joku Python scripti voisi toimia Talomatin web—liittymään kautta ainakin kytkimien kanssa, mutta onko kukaan tehnyt mitään sellaista?
 
Täytyy alkaa virittelemään esphomea can väylään. Josko sieltä saisi liikennettyä dumpattua ja pääsisi tuosta eteenpäin. Meillä on vanhanmallinen näyttö joten web-mahdollisuuttakaan ei ole.
Tämä taitaa olla hylätty koko järjestelmä. Valmistaja ei ainakaan vastaa sähköposteihin...
 
Netistä löytyi tietoa, että Talomat siirtynyt toiselle firmalle: https://www.cioy.fi/ Saisikohan heiltä jotain materiaalia tai ajatuksia?

Jotain ääneenajattelua täältä: eleganteinta olisi varmasti saada tuo mainittu CAN-väylän kautta tapahtuva ohjaus toimimaan. Ennalta (ja näkemättä) vaikeaa sanoa, mutta mainittiin tuo web-ohjaus. Ehkä nettiselaimesta saisitte kaivettua ulos, että mitä tapahtuu netin yli ohjatessa (esim. nettiselainten avulla voi kaivaa ulos, että mitä nettisivu tekee) ja jos hyvä tuuri käy, niin sitten tämän RESTful switchin avulla HomeAssistant voisi kutsua juuri noita samoja osoitteita.
 
Netistä löytyi tietoa, että Talomat siirtynyt toiselle firmalle: https://www.cioy.fi/ Saisikohan heiltä jotain materiaalia tai ajatuksia?

Jotain ääneenajattelua täältä: eleganteinta olisi varmasti saada tuo mainittu CAN-väylän kautta tapahtuva ohjaus toimimaan. Ennalta (ja näkemättä) vaikeaa sanoa, mutta mainittiin tuo web-ohjaus. Ehkä nettiselaimesta saisitte kaivettua ulos, että mitä tapahtuu netin yli ohjatessa (esim. nettiselainten avulla voi kaivaa ulos, että mitä nettisivu tekee) ja jos hyvä tuuri käy, niin sitten tämän RESTful switchin avulla HomeAssistant voisi kutsua juuri noita samoja osoitteita.
Nimenomaan tuolta cioy ei saa vastausta.

Meillä tuo web-ohjaus ei ole vaihtoehto (vanhempi ohjaustaneeli - ei web-ohjausta).

Tuo can taitaa olla meillä ainoa vaihtoehto. Esp32 ja can sovitin maksaa alle kympin, joten tällä nyt lähdetään liikkeelle. Tässä saa sitten kaupan päälle liiketunnistin yms tiedot, joita ei varmaankaan saa web-ohjauksesta.
 
Vähän tilannepäivitystä.

Tämä jäänyt taka-alalle aiken muun tekemisen vuoksi. Nyt joulun kunniaksi kuitenkin laitoin aliexpresistä tulemaan Lilygo T-CAN485 moduulin.

Tässä siis ESP32 ja CAN väyläsovitin. Kun saapuu, pitää alkaa sorvaamaan esphomea tuohon. Raportoin lisää kun on raportoitavaa...
 
Nopea tilannepäivitys.

ESP CAN kamppeet tulivat kiinasta ennätysvauhtia. Kytkin keskukseen. Tästä ei vielä kuvia, koska asennus on kauhea hyppylankaviritys tällä hetkellä.

ESPHome asennettu lilygo kortille, ja sain yksinkertaisen väylän dumppaus softan tuohon tehtyä.
Nyt pitääkin sitten alkaa tulkitsemaan tuota dataa...

Palailen taas kun alkaa pääsemään protokollasta selville.

ESPHOME.png
 
Onko jollakin vielä kiinnostusta can-väylään liittymisestä?

Dataa liikkuu, ja jonkun verran sitä olen jo saanut tulkittuakin. Toistaiseksi olen vasta lukenut väylädataa, ja muuntanut sen HA antureiksi.
Valojen ohjaus ei näytä olevan ihmeellinen juttu, joten se nyt ainakin onnistunee suhteellisen helposti.

Olisi varmaan helpompi viedä tätä eteenpäin jos olisi toinenkin asennus josta saisi dataa.
Laitteisto kustantaa noin pari kymppiä, joten hinnasta ei luulisi olevan kiinni. Talomat ohjauskeskukseen pitää kytkeä 3 johtoa (5 jos ESP:lle ottaa virran keskuksesta).

1707776573591.png

1707776613425.png

1707776647580.png
 
Terve,

Täällä myös Talomaatti talossa ja kiinnostaisi kyllä saada se yhdistettyä jotenkin kaikkeen muuhun mitä talosta löytyy niin kiinnostaa kyllä miten tämä projekti on edennyt tai onko jollain muulla tullut jotain uutta.

Meillä on tämä uudemman mallinen näyttö ja web selaimella saa kytkettyä valoja ym. mutta mitään automaatiota ei pysty tekemään.
 
Hei,

Tilojen lukeminen toimii kuten pitää, ja talomatista saan valojen, liiketunnistimien, lämpöanturien yms tilat homeassistantiin. Tässä ei ole ongelmaa.

Periaatteessa pystyn kyllä lähettämään myös esim valojen päälle/pois käskyn väylään, mutta ongelma tässä on se, että esphome-laite (ESP32) menee täysin jumiin kun väylälle lähettää käskyjä. En kyllä ole minkään sortin ohjelmoija. Jos joku osaisi katsoa alla olevaa koodia ja osaisi sanoa mitä tässä teen väärin, niin olisin kovin kiitollinen.

Esphome asennettu Lilygo T-CAN485, ja tämän kytkeminen oli kyllä helppoa. Virrankin ottaa suoraan tuolta talomatin 12v linjasta.

Laitan koodin alle, jos joku tästä saisi jotain irti.
Tässä tuo canbus.send siis kaataa esphome-noden, eikä siihen auta kuin resetti.

Koodi:
esphome:
  name: talomat
  friendly_name: Talomat
esp32:
  board: esp32dev
  framework:
    type: arduino
# Enable logging
logger:
  level: debug
  logs:
    component: ERROR
    canbus: ERROR
# Enable Home Assistant API
api:
  encryption:
    key: "keykeykey"
ota:
  password: "passpasspass"
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Talomat Fallback Hotspot"
    password: "passpasspass"
web_server:
 port: 80
captive_portal:
switch:
  - platform: template
    name: "Työhuone katto LED"
    id: tyohuone_katto_led
    restore_mode: DISABLED
    turn_on_action:
      then:
        - canbus.send:
            use_extended_id: True
            data: [ 0x06, 0x30, 0x61, 0x01 ]
            can_id: 0x18efff24
            canbus_id: my_canbus
        - delay: 200ms
    turn_off_action:
      then:
        - canbus.send:
            use_extended_id: True
            data: [ 0x06, 0x30, 0x61, 0x00 ]
            can_id: 0x18efff24
            canbus_id: my_canbus
        - delay: 200ms
sensor:
  - platform: template
    name: "Ulkolämpötila"
    id: temp_ulko
    device_class: "temperature"
    state_class: "measurement"
    unit_of_measurement: "°C"
    accuracy_decimals: 0
  - platform: template
    name: "Sisälämpötila"
    id: temp_sisa
    device_class: "temperature"
    state_class: "measurement"
    unit_of_measurement: "°C"
    accuracy_decimals: 0
  - platform: template
    name: "Ulko valoisuus raw"
    id: valo_ulko_raw
    state_class: "measurement"
    accuracy_decimals: 1
    filters:
      - throttle_average: 30s
      - filter_out: nan




binary_sensor:
  - platform: template
    name: "Työhuone led"
    id: tyohuone_led
  - platform: template
    name: "Työhuone kansi"
    id: tyohuone_kansi
  - platform: template
    name: "MH Anton led"
    id: antonhuone_led
  - platform: template
    name: "MH Anton kansi"
    id: antonhuone_kansi
  - platform: template
    name: "MH Joonas led"
    id: joonashuone_led
  - platform: template
    name: "MH Joonas kansi"
    id: joonashuone_kansi
  - platform: template
    name: "Porras kansi"
    id: porras_kansi
  - platform: template
    name: "Yläaula led"
    id: ylaaula_led
  - platform: template
    name: "Yläkerta vessa led"
    id: ylavessa_led
  - platform: template
    name: "Vaatehuone led"
    id: vaatehuone_led
  - platform: template
    name: "Alakerta vessa led"
    id: alavessa_led
  - platform: template
    name: "Sauna kansi"
    id: sauna_kansi
  - platform: template
    name: "Sauna led"
    id: sauna_led
  - platform: template
    name: "Kylpyhuone led"
    id: kylpyhuone_led
  - platform: template
    name: "Kodinhoitohuone led"
    id: kodinhoitohuone_led
  - platform: template
    name: "Liiketunnistin yläkerta"
    id: liiketunnistin_ylakerta
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin eteinen"
    id: liiketunnistin_eteinen
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin kodinhoitohuone"
    id: liiketunnistin_kodinhoitohuone
    filters:
      - delayed_off: 10s 
  - platform: template
    name: "Liiketunnistin etuterassi"
    id: liiketunnistin_etuterassi
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin autokatos"
    id: liiketunnistin_autokatos
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin takaterassi"
    id: liiketunnistin_takaterassi
    filters:
      - delayed_off: 10s
  - platform: template
    name: "MH Pää kansi"
    id: makuuhuone_kansi
  - platform: template
    name: "MH Pää led"
    id: makuuhuone_led
  - platform: template
    name: "Keittiö kansi"
    id: keittio_kansi
  - platform: template
    name: "Keittiö led"
    id: keittio_led
  - platform: template
    name: "Keittiö allas led"
    id: keittioallas_led
  - platform: template
    name: "Keittiö uuni led"
    id: keittiouuni_led
  - platform: template
    name: "Keittiö porras led"
    id: keittioporras_led
  - platform: template
    name: "Kodinhoitohuone allas led"
    id: kodinhoitohuone_allas_led
  - platform: template
    name: "Etuterassi seinä"
    id: etuterassi_seina
  - platform: template
    name: "Etuterassi led"
    id: etuterassi_led
  - platform: template
    name: "Autokatos seinä"
    id: autokatos_seina
  - platform: template
    name: "Autokatos led"
    id: autokatos_led
  - platform: template
    name: "Etupiha pylväs"
    id: etupiha_pylvas
  - platform: template
    name: "Tekninen tila kansi"
    id: tekninen_kansi
  - platform: template
    name: "Sisävarasto kansi"
    id: sisavarasto_kansi
  - platform: template
    name: "Olohuone takaoikea led"
    id: ohtakaoikea_led
  - platform: template
    name: "Olohuone takavasen led"
    id: ohtakavasen_led
  - platform: template
    name: "Olohuone takka led"
    id: ohtakka_led
  - platform: template
    name: "Eteinen WC led"
    id: eteinenwc_led
  - platform: template
    name: "Eteinen vaatekaappi led"
    id: eteinenvaatekaappi_led
  - platform: template
    name: "Eteinen led"
    id: eteinen_led
  - platform: template
    name: "Olohuone etu led"
    id: ohetu_led
  - platform: template
    name: "Takaterassi led"
    id: takaterassi_led
  - platform: template
    name: "Takaterassi seinä"
    id: takaterassi_seina
  - platform: template
    name: "Takapiha pylväs"
    id: takapiha_pylvas
  - platform: template
    name: "Eteinen seinä"
    id: eteinen_seina
  - platform: template
    name: "Parveke led"
    id: parveke_led
  - platform: template
    name: "Parveke Seinä"
    id: parveke_seina



canbus:
  - platform: esp32_can
    id: my_canbus
    tx_pin: GPIO27
    rx_pin: GPIO26
    can_id: 0x18efff24  # can id for transmitting frames
    use_extended_id: True
    bit_rate: 125kbps # talomat rate
    on_frame:
    - can_id: 0  # listen to all messages
      can_id_mask: 0
      use_extended_id: True
      then:
      - lambda: |-
          bool tunnistettu = false;
          int muunnos_temp;
          bool debug_on = false;
          // Ulkolämpötila
          if(x[0]==0x06 and x[1]==0x09 and x[2]==0x31) {
            if(x[3]>127) {
              muunnos_temp = x[3] - 256;
            }
            else {
              muunnos_temp = x[3];
            }
            id(temp_ulko).publish_state(muunnos_temp);
            tunnistettu = true;
          }
          // Sisälämpötila
          if(x[0]==0x06 and x[1]==0x08 and x[2]==0x31) {
            if(x[3]>127) {
              muunnos_temp = x[3] - 256;
            }
            else {
              muunnos_temp = x[3];
            }
            id(temp_sisa).publish_state(muunnos_temp);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x32 and x[2]==0x27) {
            id(valo_ulko_raw).publish_state(x[3]);
            tunnistettu = true;
          }



          // Liiketunnistin yläkerta
          if(x[0]==0x06 and x[1]==0x97 and x[2]==0x20) {
            id(liiketunnistin_ylakerta).publish_state(x[3]);
            tunnistettu = true;
          }
          // Liiketunnistin kodinhoitohuone
          if(x[0]==0x06 and x[1]==0x94 and x[2]==0x20) {
            id(liiketunnistin_kodinhoitohuone).publish_state(x[3]);
            tunnistettu = true;
          }
          // Liiketunnistin eteinen
          if(x[0]==0x06 and x[1]==0x93 and x[2]==0x20) {
            id(liiketunnistin_eteinen).publish_state(x[3]);
            tunnistettu = true;
          }
          // Liiketunnistin etuterassi
          if(x[0]==0x06 and x[1]==0x91 and x[2]==0x20) {
            id(liiketunnistin_etuterassi).publish_state(x[3]);
            tunnistettu = true;
          }
          // Liiketunnistin autokatos
          if(x[0]==0x06 and x[1]==0x95 and x[2]==0x20) {
            id(liiketunnistin_autokatos).publish_state(x[3]);
            tunnistettu = true;
          }
          // Liiketunnistin takaterassi
          if(x[0]==0x06 and x[1]==0x92 and x[2]==0x20) {
            id(liiketunnistin_takaterassi).publish_state(x[3]);
            tunnistettu = true;
          }


          if(x[0]==0x06 and x[1]==0x30 and x[2]==0x61) tunnistettu = false; // Työhuone katto LED
          if(x[0]==0x06 and x[1]==0x31 and x[2]==0x61) {
            id(tyohuone_led).publish_state(x[3]);
            id(tyohuone_katto_led).publish_state(x[3]);
            tunnistettu = false;
          }
          if(x[0]==0x06 and x[1]==0x90 and x[2]==0x61) tunnistettu = true; // Työhuone katto Kansi
          if(x[0]==0x06 and x[1]==0x91 and x[2]==0x61) {
            id(tyohuone_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x00 and x[2]==0x64) tunnistettu = true; // Antonin huone katto Led
          if(x[0]==0x06 and x[1]==0x01 and x[2]==0x64) {
            id(antonhuone_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x30 and x[2]==0x64) tunnistettu = true; // Antonin huone katto Kansi
          if(x[0]==0x06 and x[1]==0x31 and x[2]==0x64) {
            id(antonhuone_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x80 and x[2]==0x64) tunnistettu = true; // Joonaksen huone katto Led
          if(x[0]==0x06 and x[1]==0x81 and x[2]==0x64) {
            id(joonashuone_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x50 and x[2]==0x64) tunnistettu = true; // Joonaksen huone katto Kansi
          if(x[0]==0x06 and x[1]==0x51 and x[2]==0x64) {
            id(joonashuone_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x80 and x[2]==0x62) tunnistettu = true; // Porras katto Kansi
          if(x[0]==0x06 and x[1]==0x81 and x[2]==0x62) {
            id(porras_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x50 and x[2]==0x62) tunnistettu = true; // Yläaula katto Led
          if(x[0]==0x06 and x[1]==0x51 and x[2]==0x62) {
            id(ylaaula_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xa0 and x[2]==0x62) tunnistettu = true; // Yläkerta WC katto Led
          if(x[0]==0x06 and x[1]==0xa1 and x[2]==0x62) {
            id(ylavessa_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xb0 and x[2]==0x63) tunnistettu = true; // Vaatehuone katto Led
          if(x[0]==0x06 and x[1]==0xb1 and x[2]==0x63) {
            id(vaatehuone_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x10 and x[2]==0x61) tunnistettu = true; // Alakerta Wc katto Led
          if(x[0]==0x06 and x[1]==0x11 and x[2]==0x61) {
            id(alavessa_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xd0 and x[2]==0x64) tunnistettu = true; // Sauna seinä Kansi
          if(x[0]==0x06 and x[1]==0xd1 and x[2]==0x64) {
            id(sauna_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xe0 and x[2]==0x64) tunnistettu = true; // Sauna katto Kuitu
          if(x[0]==0x06 and x[1]==0xe1 and x[2]==0x64) {
            id(sauna_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x60 and x[2]==0x60) tunnistettu = true; // Kylpyhuone katto LED
          if(x[0]==0x06 and x[1]==0x61 and x[2]==0x60) {
            id(kylpyhuone_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x40 and x[2]==0x60) tunnistettu = true; // Kodinhoitohuone katto Led
          if(x[0]==0x06 and x[1]==0x41 and x[2]==0x60) {
            id(kodinhoitohuone_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x10 and x[2]==0x64) tunnistettu = true; // Makuuhuone katto Kansi
          if(x[0]==0x06 and x[1]==0x11 and x[2]==0x64) {
            id(makuuhuone_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x50 and x[2]==0x63) tunnistettu = true; // Makuuhuone katto Led
          if(x[0]==0x06 and x[1]==0x51 and x[2]==0x63) {
            id(makuuhuone_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x30 and x[2]==0x20) tunnistettu = true; // Keittiö katto Kansi
          if(x[0]==0x06 and x[1]==0x31 and x[2]==0x20) {
            id(keittio_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x10 and x[2]==0x60) tunnistettu = true; // Keittiö katto Led
          if(x[0]==0x06 and x[1]==0x11 and x[2]==0x60) {
            id(keittio_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x80 and x[2]==0x61) tunnistettu = true; // Keittiö taso Lednauha
          if(x[0]==0x06 and x[1]==0x81 and x[2]==0x61) {
            id(keittioallas_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x70 and x[2]==0x61) tunnistettu = true; // Keittiö uuni Lednauha
          if(x[0]==0x06 and x[1]==0x71 and x[2]==0x61) {
            id(keittiouuni_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x90 and x[2]==0x60) tunnistettu = true; // Keittiö porrasaula katto Led
          if(x[0]==0x06 and x[1]==0x91 and x[2]==0x60) {
            id(keittioporras_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x60 and x[2]==0x62) tunnistettu = true; // Kodinhoitohuone allas Lednauha
          if(x[0]==0x06 and x[1]==0x61 and x[2]==0x62) {
            id(kodinhoitohuone_allas_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xb0 and x[2]==0x62) tunnistettu = true; // Etuterassi seinä Kansi
          if(x[0]==0x06 and x[1]==0xb1 and x[2]==0x62) {
            id(etuterassi_seina).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x10 and x[2]==0x63) tunnistettu = true; // Etuterassi katto Led
          if(x[0]==0x06 and x[1]==0x11 and x[2]==0x63) {
            id(etuterassi_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x20 and x[2]==0x63) tunnistettu = true; // Autokatos seinä Kansi
          if(x[0]==0x06 and x[1]==0x21 and x[2]==0x63) {
            id(autokatos_seina).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x30 and x[2]==0x63) tunnistettu = true; // Autokatos katto Led
          if(x[0]==0x06 and x[1]==0x31 and x[2]==0x63) {
            id(autokatos_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xd0 and x[2]==0x62) tunnistettu = true; // Etupiha Pylväs
          if(x[0]==0x06 and x[1]==0xd1 and x[2]==0x62) {
            id(etupiha_pylvas).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x70 and x[2]==0x65) tunnistettu = true; // Tekninen tila katto Kansi
          if(x[0]==0x06 and x[1]==0x71 and x[2]==0x65) {
            id(tekninen_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x10 and x[2]==0x65) tunnistettu = true; // Sisävarasto katto Kansi
          if(x[0]==0x06 and x[1]==0x11 and x[2]==0x65) {
            id(sisavarasto_kansi).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x30 and x[2]==0x62) tunnistettu = true; // Olohuone taka oikea katto Led
          if(x[0]==0x06 and x[1]==0x31 and x[2]==0x62) {
            id(ohtakaoikea_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x20 and x[2]==0x62) tunnistettu = true; // Olohuone taka vasen katto Led
          if(x[0]==0x06 and x[1]==0x21 and x[2]==0x62) {
            id(ohtakavasen_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x60 and x[2]==0x61) tunnistettu = true; // Olohuone takka katto Led
          if(x[0]==0x06 and x[1]==0x61 and x[2]==0x61) {
            id(ohtakka_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x30 and x[2]==0x60) tunnistettu = true; // Eteinen WC edusta katto Led
          if(x[0]==0x06 and x[1]==0x31 and x[2]==0x60) {
            id(eteinenwc_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x40 and x[2]==0x62) tunnistettu = true; // Eteinen vaatekaappi Lednauha
          if(x[0]==0x06 and x[1]==0x41 and x[2]==0x62) {
            id(eteinenvaatekaappi_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x50 and x[2]==0x60) tunnistettu = true; // Eteinen katto Led
          if(x[0]==0x06 and x[1]==0x51 and x[2]==0x60) {
            id(eteinen_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x20 and x[2]==0x60) tunnistettu = true; // Olohuone etu katto Led
          if(x[0]==0x06 and x[1]==0x21 and x[2]==0x60) {
            id(ohetu_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x00 and x[2]==0x63) tunnistettu = true; // Takaterassi katto Led
          if(x[0]==0x06 and x[1]==0x01 and x[2]==0x63) {
            id(takaterassi_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xf0 and x[2]==0x62) tunnistettu = true; // Takaterassi seinä Kansi
          if(x[0]==0x06 and x[1]==0xf1 and x[2]==0x62) {
            id(takaterassi_seina).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0xe0 and x[2]==0x62) tunnistettu = true; // Takapiha Pylväs
          if(x[0]==0x06 and x[1]==0xe1 and x[2]==0x62) {
            id(takapiha_pylvas).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x90 and x[2]==0x62) tunnistettu = true; // Eteinen seinä Kansi
          if(x[0]==0x06 and x[1]==0x91 and x[2]==0x62) {
            id(eteinen_seina).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x60 and x[2]==0x65) tunnistettu = true; // Parveke katto Led
          if(x[0]==0x06 and x[1]==0x61 and x[2]==0x65) {
            id(parveke_led).publish_state(x[3]);
            tunnistettu = true;
          }
          if(x[0]==0x06 and x[1]==0x50 and x[2]==0x65) tunnistettu = true; // Parveke seinä Kansi
          if(x[0]==0x06 and x[1]==0x51 and x[2]==0x65) {
            id(parveke_seina).publish_state(x[3]);
            tunnistettu = true;
          }




          // DEBUG
          if (x[0] != 15 and x[0] != 10 and tunnistettu == false) {
            ESP_LOGD("can_id", "CAN ID %x : %x             : 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i               Hex %02x %02x %02x %02x     Dec %3i %3i %3i %3i", can_id,  remote_transmission_request,
            (x[0] >> 7) &1, (x[0] >> 6) &1, (x[0] >> 5) &1, (x[0] >> 4) &1, (x[0] >> 3) &1, (x[0] >> 2) &1, (x[0] >> 1) &1, (x[0] >> 0) &1,
            (x[1] >> 7) &1, (x[1] >> 6) &1, (x[1] >> 5) &1, (x[1] >> 4) &1, (x[1] >> 3) &1, (x[1] >> 2) &1, (x[1] >> 1) &1, (x[1] >> 0) &1,
            (x[2] >> 7) &1, (x[2] >> 6) &1, (x[2] >> 5) &1, (x[2] >> 4) &1, (x[2] >> 3) &1, (x[2] >> 2) &1, (x[2] >> 1) &1, (x[2] >> 0) &1,
            (x[3] >> 7) &1, (x[3] >> 6) &1, (x[3] >> 5) &1, (x[3] >> 4) &1, (x[3] >> 3) &1, (x[3] >> 2) &1, (x[3] >> 1) &1, (x[3] >> 0) &1,
            x[0], x[1], x[2], x[3], x[0], x[1], x[2], x[3]);
          }
          if (x[0] != 15 and x[0] != 10 and tunnistettu == true and debug_on == true) {
            ESP_LOGD("can_id", "CAN ID %x : %x tunnistettu : 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i               Hex %02x %02x %02x %02x     Dec %3i %3i %3i %3i", can_id,  remote_transmission_request,
            (x[0] >> 7) &1, (x[0] >> 6) &1, (x[0] >> 5) &1, (x[0] >> 4) &1, (x[0] >> 3) &1, (x[0] >> 2) &1, (x[0] >> 1) &1, (x[0] >> 0) &1,
            (x[1] >> 7) &1, (x[1] >> 6) &1, (x[1] >> 5) &1, (x[1] >> 4) &1, (x[1] >> 3) &1, (x[1] >> 2) &1, (x[1] >> 1) &1, (x[1] >> 0) &1,
            (x[2] >> 7) &1, (x[2] >> 6) &1, (x[2] >> 5) &1, (x[2] >> 4) &1, (x[2] >> 3) &1, (x[2] >> 2) &1, (x[2] >> 1) &1, (x[2] >> 0) &1,
            (x[3] >> 7) &1, (x[3] >> 6) &1, (x[3] >> 5) &1, (x[3] >> 4) &1, (x[3] >> 3) &1, (x[3] >> 2) &1, (x[3] >> 1) &1, (x[3] >> 0) &1,
            x[0], x[1], x[2], x[3], x[0], x[1], x[2], x[3]);
          }
           if (x[0] == 10 and tunnistettu == false) {
            ESP_LOGD("can_id", "CAN ID %x : %x             : 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i 0b%i%i%i%i %i%i%i%i   Hex %02x %02x %02x %02x %02x  Dec %3i %3i %3i %3i %3i", can_id,  remote_transmission_request,
            (x[0] >> 7) &1, (x[0] >> 6) &1, (x[0] >> 5) &1, (x[0] >> 4) &1, (x[0] >> 3) &1, (x[0] >> 2) &1, (x[0] >> 1) &1, (x[0] >> 0) &1,
            (x[1] >> 7) &1, (x[1] >> 6) &1, (x[1] >> 5) &1, (x[1] >> 4) &1, (x[1] >> 3) &1, (x[1] >> 2) &1, (x[1] >> 1) &1, (x[1] >> 0) &1,
            (x[2] >> 7) &1, (x[2] >> 6) &1, (x[2] >> 5) &1, (x[2] >> 4) &1, (x[2] >> 3) &1, (x[2] >> 2) &1, (x[2] >> 1) &1, (x[2] >> 0) &1,
            (x[3] >> 7) &1, (x[3] >> 6) &1, (x[3] >> 5) &1, (x[3] >> 4) &1, (x[3] >> 3) &1, (x[3] >> 2) &1, (x[3] >> 1) &1, (x[3] >> 0) &1,
            (x[4] >> 7) &1, (x[4] >> 6) &1, (x[4] >> 5) &1, (x[4] >> 4) &1, (x[4] >> 3) &1, (x[4] >> 2) &1, (x[4] >> 1) &1, (x[4] >> 0) &1,
            x[0], x[1], x[2], x[3], x[4], x[0], x[1], x[2], x[3], x[4]);
          }
          if (x[0] == 15 and tunnistettu == false) {
          }
 
Hei, tämä vaikuttaa mielenkiintoiselta. Minulla ei ole talomat järjestelmää mutta niinkin yllättävässä paikassa kuin profilen vahemmissa ambulanseissa käytetään samoja komponentteja kuin Talomatissa. Olen tuota canbussia yrittänyt joskus lukea tuloksetta mutta tämä kyllä herätti toivoa että lienee mahdollista. Pitääpäs ottaa tämä uudelleen tutkintaan :)
 
No nyt sain testattua tätä. Ja kyllä, toimii myös ambulanssin iws:ssä. Toki nuo canbus id:t ja muut poikkeaa.
Nuo kytkimet sain itse toimimaan, itsellä on käytössä m5 stack dial + minican adapteri.
 
No nyt sain testattua tätä. Ja kyllä, toimii myös ambulanssin iws:ssä. Toki nuo canbus id:t ja muut poikkeaa.
Nuo kytkimet sain itse toimimaan, itsellä on käytössä m5 stack dial + minican adapteri.
Hei,

Saitko siis toimimaan statustiedot, vai toimiiko sinulla myös kytkimen "kääntäminen" on/off tilaan?
Tämä on nyt ollut sivussa hyvän aikaa. En ole saanut canbus sendiä toimimaan. Pitäisi varmaan koittaa jollain toisella boardilla, jos vika on siinä.
 
Hei,

Saitko siis toimimaan statustiedot, vai toimiiko sinulla myös kytkimen "kääntäminen" on/off tilaan?
Tämä on nyt ollut sivussa hyvän aikaa. En ole saanut canbus sendiä toimimaan. Pitäisi varmaan koittaa jollain toisella boardilla, jos vika on siinä.

Kyllä toimii myös canbus send ongelmitta.
Vertailin meidän konffeja niin en löytänyt muuta eroa kuin että itsellä esp-idf framework, tämä tuskin vaikuttaa.

Tuo LilyGO-TCAN485 vaatii ilmeisesti jotain temppuja että canbus kommunikaatio toimii. Tässä voisi olla jotain mikä auttaa:
https://github.com/Xinyuan-LilyGO/T-CAN485/issues/16#issuecomment-2595962388

Semmoinen huomio että ainakin canbus väylät joissa on jo moduuli kiinni on semmoisia että sielä on jo kummassakin päässä päätevastus jolloin lilygo:sta pitäisi päätevastus ottaa pois. Itsellä aiheutti vähän outoa jumittelua jos väylässä oli 3 päätevatusta.
 
Päivitys pitkästä aikaa.

Toisella foorumilla sain apua tähän, vähän sattuman kautta ja nyt valojen ohjaus toimii homeassistantista.

Tämä piti siis lisätä tuohon koodiin, niin alkoi toimimaan.
Koodi:
on_boot:
    priority: 1000.0
    then:
      - output.turn_off: can_transceiver_se

# Määritetään LilyGO T-CAN485:n SE (Silent Mode Enable) -pinni
output:
  - platform: gpio
    pin: GPIO23
    id: can_transceiver_se

Pitää nyt vähän alkaa jalostamaan tuota, IF-lausehirvitystä voisi ainakin siistiä nyt alkuun...
 
Suosittelen, että tyrkkäät koodin Claudelle/ChatGPT:lle. Se saa oikeasti siistittyä tuon hirvityksen järjelliselle tasolle.
Pakkohan tätä oli kokeilla vaikkei asia mitenkään itselle kuulu, saati että pääsisi sitä testaamaan. Ohessa 10min ChatGPT-versio.

YAML:
esphome:
  name: talomat
  friendly_name: Talomat

  # LilyGO T-CAN485:
  # GPIO16 = ME2107 boost enable (HIGH = päällä)
  # GPIO23 = SN65HVD231 RS / speed-sleep control (LOW = aktiivinen high-speed CAN)
  on_boot:
    - priority: 1000.0
      then:
        - lambda: |-
            pinMode(16, OUTPUT);
            digitalWrite(16, HIGH);
            pinMode(23, OUTPUT);
            digitalWrite(23, LOW);
esp32:
  board: esp32dev
  framework:
    type: arduino
# Enable logging
logger:
  level: debug
  logs:
    component: ERROR
    canbus: ERROR
# Enable Home Assistant API
api:
  encryption:
    key: "keykeykey"
ota:
  - platform: esphome
    password: "passpasspass"
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Talomat Fallback Hotspot"
    password: "passpasspass"
web_server:
  port: 80
captive_portal:
switch:
  - platform: template
    name: "Työhuone katto LED"
    id: tyohuone_katto_led
    restore_mode: DISABLED
    turn_on_action:
      then:
        - canbus.send:
            use_extended_id: true
            data: [ 0x06, 0x30, 0x61, 0x01 ]
            can_id: 0x18efff24
            canbus_id: my_canbus
        - delay: 200ms
    turn_off_action:
      then:
        - canbus.send:
            use_extended_id: true
            data: [ 0x06, 0x30, 0x61, 0x00 ]
            can_id: 0x18efff24
            canbus_id: my_canbus
        - delay: 200ms
sensor:
  - platform: template
    name: "Ulkolämpötila"
    id: temp_ulko
    device_class: "temperature"
    state_class: "measurement"
    unit_of_measurement: "°C"
    accuracy_decimals: 0
  - platform: template
    name: "Sisälämpötila"
    id: temp_sisa
    device_class: "temperature"
    state_class: "measurement"
    unit_of_measurement: "°C"
    accuracy_decimals: 0
  - platform: template
    name: "Ulko valoisuus raw"
    id: valo_ulko_raw
    state_class: "measurement"
    accuracy_decimals: 1
    filters:
      - throttle_average: 30s
      - filter_out: nan




binary_sensor:
  - platform: template
    name: "Työhuone led"
    id: tyohuone_led
  - platform: template
    name: "Työhuone kansi"
    id: tyohuone_kansi
  - platform: template
    name: "MH Anton led"
    id: antonhuone_led
  - platform: template
    name: "MH Anton kansi"
    id: antonhuone_kansi
  - platform: template
    name: "MH Joonas led"
    id: joonashuone_led
  - platform: template
    name: "MH Joonas kansi"
    id: joonashuone_kansi
  - platform: template
    name: "Porras kansi"
    id: porras_kansi
  - platform: template
    name: "Yläaula led"
    id: ylaaula_led
  - platform: template
    name: "Yläkerta vessa led"
    id: ylavessa_led
  - platform: template
    name: "Vaatehuone led"
    id: vaatehuone_led
  - platform: template
    name: "Alakerta vessa led"
    id: alavessa_led
  - platform: template
    name: "Sauna kansi"
    id: sauna_kansi
  - platform: template
    name: "Sauna led"
    id: sauna_led
  - platform: template
    name: "Kylpyhuone led"
    id: kylpyhuone_led
  - platform: template
    name: "Kodinhoitohuone led"
    id: kodinhoitohuone_led
  - platform: template
    name: "Liiketunnistin yläkerta"
    id: liiketunnistin_ylakerta
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin eteinen"
    id: liiketunnistin_eteinen
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin kodinhoitohuone"
    id: liiketunnistin_kodinhoitohuone
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin etuterassi"
    id: liiketunnistin_etuterassi
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin autokatos"
    id: liiketunnistin_autokatos
    filters:
      - delayed_off: 10s
  - platform: template
    name: "Liiketunnistin takaterassi"
    id: liiketunnistin_takaterassi
    filters:
      - delayed_off: 10s
  - platform: template
    name: "MH Pää kansi"
    id: makuuhuone_kansi
  - platform: template
    name: "MH Pää led"
    id: makuuhuone_led
  - platform: template
    name: "Keittiö kansi"
    id: keittio_kansi
  - platform: template
    name: "Keittiö led"
    id: keittio_led
  - platform: template
    name: "Keittiö allas led"
    id: keittioallas_led
  - platform: template
    name: "Keittiö uuni led"
    id: keittiouuni_led
  - platform: template
    name: "Keittiö porras led"
    id: keittioporras_led
  - platform: template
    name: "Kodinhoitohuone allas led"
    id: kodinhoitohuone_allas_led
  - platform: template
    name: "Etuterassi seinä"
    id: etuterassi_seina
  - platform: template
    name: "Etuterassi led"
    id: etuterassi_led
  - platform: template
    name: "Autokatos seinä"
    id: autokatos_seina
  - platform: template
    name: "Autokatos led"
    id: autokatos_led
  - platform: template
    name: "Etupiha pylväs"
    id: etupiha_pylvas
  - platform: template
    name: "Tekninen tila kansi"
    id: tekninen_kansi
  - platform: template
    name: "Sisävarasto kansi"
    id: sisavarasto_kansi
  - platform: template
    name: "Olohuone takaoikea led"
    id: ohtakaoikea_led
  - platform: template
    name: "Olohuone takavasen led"
    id: ohtakavasen_led
  - platform: template
    name: "Olohuone takka led"
    id: ohtakka_led
  - platform: template
    name: "Eteinen WC led"
    id: eteinenwc_led
  - platform: template
    name: "Eteinen vaatekaappi led"
    id: eteinenvaatekaappi_led
  - platform: template
    name: "Eteinen led"
    id: eteinen_led
  - platform: template
    name: "Olohuone etu led"
    id: ohetu_led
  - platform: template
    name: "Takaterassi led"
    id: takaterassi_led
  - platform: template
    name: "Takaterassi seinä"
    id: takaterassi_seina
  - platform: template
    name: "Takapiha pylväs"
    id: takapiha_pylvas
  - platform: template
    name: "Eteinen seinä"
    id: eteinen_seina
  - platform: template
    name: "Parveke led"
    id: parveke_led
  - platform: template
    name: "Parveke Seinä"
    id: parveke_seina

canbus:
  - platform: esp32_can
    id: my_canbus
    tx_pin: GPIO27
    rx_pin: GPIO26
    can_id: 0x18EFFF24
    use_extended_id: true
    bit_rate: 125kbps
    mode: NORMAL

    # Lisää puskuria vilkkaalle Talomat-väylälle.
    rx_queue_len: 32

    on_frame:
      - can_id: 0
        can_id_mask: 0
        use_extended_id: true

        # RTR-frameissa ei ole normaalia data-payloadia, joten ne jätetään parserin ulkopuolelle.
        remote_transmission_request: false

        then:
          - lambda: |-
              bool tunnistettu = false;

              // Muokkaa näitä tarvittaessa CAN-väylän tutkimista varten.
              constexpr bool DEBUG_UNKNOWN = true;
              constexpr bool DEBUG_KNOWN = false;

              // Talomatin tässä konfiguraatiossa käsitellyt viestit tarvitsevat vähintään 4 tavua.
              // Tämä suojaa x[0]...x[3]-viittaukset lyhyiltä CAN-frameilta.
              if (x.size() >= 4 && x[0] == 0x06) {
                const uint16_t msg =
                    (static_cast<uint16_t>(x[1]) << 8) |
                    static_cast<uint16_t>(x[2]);

                const bool state = (x[3] != 0);

                switch (msg) {
                case 0x0931:  // Ulkolämpötila
                  id(temp_ulko).publish_state(static_cast<int8_t>(x[3]));
                  tunnistettu = true;
                  break;

                case 0x0831:  // Sisälämpötila
                  id(temp_sisa).publish_state(static_cast<int8_t>(x[3]));
                  tunnistettu = true;
                  break;

                case 0x3227:  // Ulkovaloisuus
                  id(valo_ulko_raw).publish_state(x[3]);
                  tunnistettu = true;
                  break;

                case 0x9720:  // Liiketunnistin yläkerta
                  id(liiketunnistin_ylakerta).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9420:  // Liiketunnistin kodinhoitohuone
                  id(liiketunnistin_kodinhoitohuone).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9320:  // Liiketunnistin eteinen
                  id(liiketunnistin_eteinen).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9120:  // Liiketunnistin etuterassi
                  id(liiketunnistin_etuterassi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9520:  // Liiketunnistin autokatos
                  id(liiketunnistin_autokatos).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9220:  // Liiketunnistin takaterassi
                  id(liiketunnistin_takaterassi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x3161:  // Työhuone katto LED
                  id(tyohuone_led).publish_state(state);
                  id(tyohuone_katto_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9161:  // Työhuone katto Kansi
                  id(tyohuone_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x0164:  // Antonin huone katto Led
                  id(antonhuone_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x3164:  // Antonin huone katto Kansi
                  id(antonhuone_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x8164:  // Joonaksen huone katto Led
                  id(joonashuone_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x5164:  // Joonaksen huone katto Kansi
                  id(joonashuone_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x8162:  // Porras katto Kansi
                  id(porras_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x5162:  // Yläaula katto Led
                  id(ylaaula_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xA162:  // Yläkerta WC katto Led
                  id(ylavessa_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xB163:  // Vaatehuone katto Led
                  id(vaatehuone_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x1161:  // Alakerta Wc katto Led
                  id(alavessa_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xD164:  // Sauna seinä Kansi
                  id(sauna_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xE164:  // Sauna katto Kuitu
                  id(sauna_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x6160:  // Kylpyhuone katto LED
                  id(kylpyhuone_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x4160:  // Kodinhoitohuone katto Led
                  id(kodinhoitohuone_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x1164:  // Makuuhuone katto Kansi
                  id(makuuhuone_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x5163:  // Makuuhuone katto Led
                  id(makuuhuone_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x3120:  // Keittiö katto Kansi
                  id(keittio_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x1160:  // Keittiö katto Led
                  id(keittio_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x8161:  // Keittiö taso Lednauha
                  id(keittioallas_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x7161:  // Keittiö uuni Lednauha
                  id(keittiouuni_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9160:  // Keittiö porrasaula katto Led
                  id(keittioporras_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x6162:  // Kodinhoitohuone allas Lednauha
                  id(kodinhoitohuone_allas_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xB162:  // Etuterassi seinä Kansi
                  id(etuterassi_seina).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x1163:  // Etuterassi katto Led
                  id(etuterassi_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x2163:  // Autokatos seinä Kansi
                  id(autokatos_seina).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x3163:  // Autokatos katto Led
                  id(autokatos_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xD162:  // Etupiha Pylväs
                  id(etupiha_pylvas).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x7165:  // Tekninen tila katto Kansi
                  id(tekninen_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x1165:  // Sisävarasto katto Kansi
                  id(sisavarasto_kansi).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x3162:  // Olohuone taka oikea katto Led
                  id(ohtakaoikea_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x2162:  // Olohuone taka vasen katto Led
                  id(ohtakavasen_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x6161:  // Olohuone takka katto Led
                  id(ohtakka_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x3160:  // Eteinen WC edusta katto Led
                  id(eteinenwc_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x4162:  // Eteinen vaatekaappi Lednauha
                  id(eteinenvaatekaappi_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x5160:  // Eteinen katto Led
                  id(eteinen_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x2160:  // Olohuone etu katto Led
                  id(ohetu_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x0163:  // Takaterassi katto Led
                  id(takaterassi_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xF162:  // Takaterassi seinä Kansi
                  id(takaterassi_seina).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0xE162:  // Takapiha Pylväs
                  id(takapiha_pylvas).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x9162:  // Eteinen seinä Kansi
                  id(eteinen_seina).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x6165:  // Parveke katto Led
                  id(parveke_led).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x5165:  // Parveke seinä Kansi
                  id(parveke_seina).publish_state(state);
                  tunnistettu = true;
                  break;

                case 0x3061:  // Työhuone katto LED
                case 0x9061:  // Työhuone katto Kansi
                case 0x0064:  // Antonin huone katto Led
                case 0x3064:  // Antonin huone katto Kansi
                case 0x8064:  // Joonaksen huone katto Led
                case 0x5064:  // Joonaksen huone katto Kansi
                case 0x8062:  // Porras katto Kansi
                case 0x5062:  // Yläaula katto Led
                case 0xA062:  // Yläkerta WC katto Led
                case 0xB063:  // Vaatehuone katto Led
                case 0x1061:  // Alakerta Wc katto Led
                case 0xD064:  // Sauna seinä Kansi
                case 0xE064:  // Sauna katto Kuitu
                case 0x6060:  // Kylpyhuone katto LED
                case 0x4060:  // Kodinhoitohuone katto Led
                case 0x1064:  // Makuuhuone katto Kansi
                case 0x5063:  // Makuuhuone katto Led
                case 0x3020:  // Keittiö katto Kansi
                case 0x1060:  // Keittiö katto Led
                case 0x8061:  // Keittiö taso Lednauha
                case 0x7061:  // Keittiö uuni Lednauha
                case 0x9060:  // Keittiö porrasaula katto Led
                case 0x6062:  // Kodinhoitohuone allas Lednauha
                case 0xB062:  // Etuterassi seinä Kansi
                case 0x1063:  // Etuterassi katto Led
                case 0x2063:  // Autokatos seinä Kansi
                case 0x3063:  // Autokatos katto Led
                case 0xD062:  // Etupiha Pylväs
                case 0x7065:  // Tekninen tila katto Kansi
                case 0x1065:  // Sisävarasto katto Kansi
                case 0x3062:  // Olohuone taka oikea katto Led
                case 0x2062:  // Olohuone taka vasen katto Led
                case 0x6061:  // Olohuone takka katto Led
                case 0x3060:  // Eteinen WC edusta katto Led
                case 0x4062:  // Eteinen vaatekaappi Lednauha
                case 0x5060:  // Eteinen katto Led
                case 0x2060:  // Olohuone etu katto Led
                case 0x0063:  // Takaterassi katto Led
                case 0xF062:  // Takaterassi seinä Kansi
                case 0xE062:  // Takapiha Pylväs
                case 0x9062:  // Eteinen seinä Kansi
                case 0x6065:  // Parveke katto Led
                case 0x5065:  // Parveke seinä Kansi
                  tunnistettu = true;
                  break;
                default:
                  break;
                }
              }

              // Kompakti ja pituusturvallinen debuggaus.
              // Alkuperäisen logiikan tapaan 0x0F-alkuiset viestit jätetään pois.
              if (!x.empty() && x[0] != 0x0F) {
                if ((DEBUG_UNKNOWN && !tunnistettu) || (DEBUG_KNOWN && tunnistettu)) {
                  // Classic CAN -payload on enintään 8 tavua:
                  // 8 * "XX" + 7 erotinta + NUL = 24 tavua.
                  char hex_buf[24];
                  format_hex_pretty_to(
                      hex_buf,
                      sizeof(hex_buf),
                      x.data(),
                      x.size(),
                      '.'
                  );

                  ESP_LOGD(
                      "talomat_can",
                      "CAN ID=0x%08X len=%u data=%s%s",
                      static_cast<unsigned int>(can_id),
                      static_cast<unsigned int>(x.size()),
                      hex_buf,
                      tunnistettu ? " [tunnettu]" : " [tuntematon]"
                  );
                }
              }
 
Jumppasin itse kanssa geminin kanssa tuota, ja sainkin ihan toimivan version jossa kaikki valot ovat ohjattavissa. Ja koodi kyllä kieltämättä selkeni kpvasti.
 
Takaisin
Ylös Bottom