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) {
}