Seuraa alla olevaa videota nähdäksesi, miten asennat sivustomme verkkosovelluksena aloitusnäytöllesi.
Huom: This feature may not be available in some browsers.
Tämä on tärkeä huomio.Jos myös keskustelu on luvallista, niin tuossa myös esimerkki siitä, ettei vastaus ole välttämättä oikein.
Oon joskus jotain FET-kytkentää kysynyt kuvan kanssa ChatGPT:ltä ja kyllä se siitä osasi kertoa mistä on kysy ja mitä signaaleita menee.Minä en ainakaan ymmärrä mitä ylemmän kilven teksti tarkoittaa. Vaan kaipa se riittää kun huoitomiehet ymmärtää.
Miten mahtaa sujua kytkentäkaavioiden lukeminen kuvasta?
Osaako tekoäly vastata sanallisesti kytkentää koskeviin kysymyksiin?
Tämä! Google on vajonnut pohjamutiin, mitään et enää sillä löydä. Joutavanpäiväisiä mainoksia sivutolkulla.Keinoäly on ensinnäki kova welho hakemaan verkosta tietoa, hakukoneet kun tuntuu olevan nykyään mainoskoneita ja hakevat ihan omiaan.
Tätä käytän jonkin verran. Vielä ilmaisella puolella pysynyt.Tämä! Google on vajonnut pohjamutiin, mitään et enää sillä löydä. Joutavanpäiväisiä mainoksia sivutolkulla.
# ----------------- Perusjutut -----------------
default_config:
frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
http:
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1
# ----------------- Parametrit -----------------
input_number:
ev_charging_efficiency:
name: EV charging efficiency
min: 0.5
max: 1.0
step: 0.01
unit_of_measurement: "%"
icon: mdi:percent
initial: 0.9
# ----------------- Template sensorit -----------------
template:
- sensor:
# Vaiheiden max virta
- name: "Max phase current"
unique_id: max_phase_current
unit_of_measurement: "A"
state: >
{% set p1 = (states('sensor.p1_meter_teho_vaiheessa_1') | float(0)) / 230 %}
{% set p2 = (states('sensor.p1_meter_teho_vaiheessa_2') | float(0)) / 230 %}
{% set p3 = (states('sensor.p1_meter_teho_vaiheessa_3') | float(0)) / 230 %}
{{ [p1, p2, p3] | max | round(1) }}
# Tarvittava latausenergia kWh (tavoite 80 %)
- name: "EV energy needed kWh"
unit_of_measurement: "kWh"
state: >
{% set soc_now = states('sensor.skoda_enyaq_varaustaso') | float(0) %}
{% set soc_target = 80 %}
{% set cap = 82 %}
{% set needed_pct = (soc_target - soc_now) | max(0) %}
{{ (cap * needed_pct / 100) | round(1) }}
# Tarvittavat tunnit (11 kW laturi)
- name: "EV charge hours needed h"
unit_of_measurement: "h"
state: >
{% set energy = states('sensor.ev_energy_needed_kwh') | float(0) %}
{% set power = 11 %}
{% set eff = states('input_number.ev_charging_efficiency') | float(0.9) %}
{% if power * eff > 0 %}
{{ (energy / (power * eff)) | round(2) }}
{% else %}
0
{% endif %}
# Suunnitellut tunnit (lisätään 1 h bufferi, max 9 h)
- name: "EV charge hours planned h"
unit_of_measurement: "h"
state: >
{% set hours = states('sensor.ev_charge_hours_needed_h') | float(0) %}
{% set planned = (hours + 1) | round(0, 'ceil') %}
{{ [planned, 9] | min }}
# Debug-sensori (miksi ei lataa)
- name: "EV lataus debug"
unique_id: ev_lataus_debug
state: >
{% set planner = is_state('binary_sensor.ev_lataus_planner_low_cost', 'on') %}
{% set phase1 = (states('sensor.p1_meter_teho_vaiheessa_1')|float(0) / 230) %}
{% set phase2 = (states('sensor.p1_meter_teho_vaiheessa_2')|float(0) / 230) %}
{% set phase3 = (states('sensor.p1_meter_teho_vaiheessa_3')|float(0) / 230) %}
{% set add = 11000 / 3 / 230 %}
{% set p1_future = phase1 + add %}
{% set p2_future = phase2 + add %}
{% set p3_future = phase3 + add %}
{% if not planner %}
Ei halvassa tunnissa (planner off)
{% elif p1_future >= 23 %}
Vaihe 1 kuorma liian suuri ({{ p1_future|round(1) }} A)
{% elif p2_future >= 23 %}
Vaihe 2 kuorma liian suuri ({{ p2_future|round(1) }} A)
{% elif p3_future >= 23 %}
Vaihe 3 kuorma liian suuri ({{ p3_future|round(1) }} A)
{% else %}
Kaikki kunnossa → lataus sallittu
{% endif %}
- binary_sensor:
# Vaihekohtainen tarkistus (käynnistys sallitaan jos ennustettu kuorma < 23 A)
- name: "EV safe to start (per phase)"
unique_id: ev_safe_to_start_per_phase
state: >
{% set limit = 23 %}
{% set add = 11000 / 3 / 230 %} {# ~16 A lisäkuorma per vaihe #}
{% set p1 = (states('sensor.p1_meter_teho_vaiheessa_1')|float(0) / 230) + add %}
{% set p2 = (states('sensor.p1_meter_teho_vaiheessa_2')|float(0) / 230) + add %}
{% set p3 = (states('sensor.p1_meter_teho_vaiheessa_3')|float(0) / 230) + add %}
{{ p1 < limit and p2 < limit and p3 < limit }}
device_class: power
# ----------------- Nordpool hinnat -----------------
- trigger:
- platform: time_pattern
minutes: "/30"
- platform: homeassistant
event: start
action:
- service: nordpool.get_prices_for_date
data:
config_entry: 01K59Q64WEACE5BNVMBV0KV53W
date: "{{ now().date() }}"
areas: FI
currency: EUR
response_variable: today_price
- service: nordpool.get_prices_for_date
data:
config_entry: 01K59Q64WEACE5BNVMBV0KV53W
date: "{{ (now().date() + timedelta(days=1)) }}"
areas: FI
currency: EUR
response_variable: tomorrow_price
sensor:
- name: "Nordpool raw combined prices"
unique_id: nordpool_raw_combined_prices
state: >
{% if not today_price %} unavailable {% else %} 0 {% endif %}
attributes:
prices_today: >
{% if today_price is mapping %}
{% set out = [] %}
{% for p in today_price['FI'] %}
{% set out = out + [ {'start': p.start, 'end': p.end, 'price': (p.price/1000)} ] %}
{% endfor %}
{{ out }}
{% else %}
[]
{% endif %}
prices_tomorrow: >
{% if tomorrow_price is mapping %}
{% set out2 = [] %}
{% for p in tomorrow_price['FI'] %}
{% set out2 = out2 + [ {'start': p.start, 'end': p.end, 'price': (p.price/1000)} ] %}
{% endfor %}
{{ out2 }}
{% else %}
[]
{% endif %}
# ----------------- Halvimmat lataustunnit (21–06) -----------------
- sensor:
- name: "EV lataus halvimmat tunnit"
unique_id: ev_halvimmat_tunnit
state: >
{% set today = state_attr('sensor.nordpool_raw_combined_prices', 'prices_today') %}
{% set tomorrow = state_attr('sensor.nordpool_raw_combined_prices', 'prices_tomorrow') %}
{% set data = (today + tomorrow) if today and tomorrow else today %}
{% set need_hours = states('sensor.ev_charge_hours_planned_h') | int(0) %}
{% if data and need_hours > 0 %}
{% set night_hours = data
| selectattr('start','search','T21|T22|T23|T00|T01|T02|T03|T04|T05')
| list %}
{% set cheap = (night_hours | sort(attribute='price'))[:need_hours] %}
{{ cheap | map(attribute='start') | list | tojson }}
{% else %}
[]
{% endif %}
- alias: "EV lataus – pörssi + kuormanhallinta"
id: ev_lataus_halvimmat_tunnit_kuorman
description: "Lataa halvimpina tunteina, mutta huomioi vaihekohtainen virta"
trigger:
- platform: time_pattern
minutes: "/1" # tarkistus minuutin välein
condition: []
action:
- variables:
# Vaihevirrat nyt (W → A, jaetaan 230V:lla)
phase1: "{{ states('sensor.p1_meter_teho_vaiheessa_1') | float / 230 }}"
phase2: "{{ states('sensor.p1_meter_teho_vaiheessa_2') | float / 230 }}"
phase3: "{{ states('sensor.p1_meter_teho_vaiheessa_3') | float / 230 }}"
# Laturin lisäkuorma (11 kW → ~16 A per vaihe)
charger_add: "{{ 11000 / 3 / 230 }}"
# Ennustetut vaihevirrat jos laturi starttaa
p1_future: "{{ phase1 + charger_add }}"
p2_future: "{{ phase2 + charger_add }}"
p3_future: "{{ phase3 + charger_add }}"
# Plannerin tila (on/off)
planner_active: "{{ is_state('binary_sensor.ev_lataus_planner_low_cost', 'on') }}"
- choose:
# Jos ollaan halvassa tunnissa JA jokainen vaihe jää alle 23 A
- conditions: >
{{ planner_active and
p1_future | float < 23 and
p2_future | float < 23 and
p3_future | float < 23 }}
sequence:
- service: switch.turn_on
target:
entity_id: switch.ev_lataus
- service: logbook.log
data:
name: "EV lataus"
message: >
Käynnistetty (p1: {{ p1_future | round(1) }} A,
p2: {{ p2_future | round(1) }} A,
p3: {{ p3_future | round(1) }} A)
# Jos ei olla halvassa tunnissa TAI ennuste ylittää 23 A
- conditions: >
{{ not planner_active or
p1_future | float >= 23 or
p2_future | float >= 23 or
p3_future | float >= 23 }}
sequence:
- service: switch.turn_off
target:
entity_id: switch.ev_lataus
- service: logbook.log
data:
name: "EV lataus"
message: >
Keskeytetty (planner: {{ planner_active }},
ennuste p1: {{ p1_future | round(1) }},
p2: {{ p2_future | round(1) }},
p3: {{ p3_future | round(1) }})
mode: single
- alias: "EV lataustarve lasketaan illalla"
id: ev_lataus_tarve_ilta
description: "Laskee tarvittavan energian ja tunnit ennen klo 21 ikkunaa"
trigger:
- platform: time
at: "20:55:00"
condition:
- condition: state
entity_id: binary_sensor.enyaq_plugged_in
state: "on"
action:
- variables:
energy: "{{ states('sensor.ev_energy_needed_kwh') }}"
hours_needed: "{{ states('sensor.ev_charge_hours_needed_h') }}"
hours_planned: "{{ states('sensor.ev_charge_hours_planned_h') }}"
- service: number.set_value
target:
entity_id: number.ev_lataus_planner_duration
data:
value: "{{ hours_planned }}"
- service: logbook.log
data:
name: "EV Lataus"
message: >
Illan laskenta: tarvitaan {{ energy }} kWh ≈ {{ hours_needed }} h,
bufferilla suunniteltu {{ hours_planned }} h.
mode: single
Tämä on toki totta, mutta itse koen sijoittuvani gaussin käyrän reunaan tässä suhteessa.Tarttuu kai se muuten kelle vaan mutta jos ei tartte sitä alituiseen niin se ehtii unohtua aina välissä?
Tekee tuokin perkele virheitä, mutta kun sille laittaa kuvakaappauksen tai selostuksen virheestä niin se pyrkii ratkaisemaan asian toisella tapaa..Ohjelmoinnissa tekoäly on verraton apuväline, etenkin itseni kaltaiselle koodiongelmaiselle. Huomasin jo 80-luvulla, että kielen syntaksi ei tartu mieleen, vaan pitää aina uudelleen tarkistaa ihan yksinkertaisetkin perusjutut.
ChatGPT:llä on tehty mobiilimullinsilmät tälle foorumille (suosittelen):
Viesti ketjussa 'UUDET Konekansa Plus Pack-ominaisuudet
'
https://konekansa.net/threads/-uudet-konekansa-plus-pack-ominaisuudet-
.64329/post-977087
Myöskin Pumpauttimen Arduino-koodaus:
Viesti ketjussa 'Rakennamme kesävesitornin ja Pumpauttimen'
https://konekansa.net/threads/rakennamme-kesävesitornin-ja-pumpauttimen.65720/post-1023536
Paljon apua tekoälystä on myös tiedonhaussa, kun haluaa tutustua aivan uusiin asioihin. Edellä mainittu pitkien ohjetiedostojen läpi kahlaaminen ja vain olennaisten asioiden poimiminen on erittäin kätevää.
Hallusinoinnin määrä on ollut koko ajan vähenemään päin. Enää chatGPT:kään ei satuile niin paljon kuin ennen. Tähän piirteeseen kannattaa kuitenkin varautua ja tiedostaa sen mahdollisuus. Ei kannata vaatia vastauksia kysymyksiin, joihin niitä ei välttämättä löydy. Kannattaa aina kysellä lähteiden perään ja tarkistaa, että ne ovat todella olemassa.
Tämä on toki totta, mutta itse koen sijoittuvani gaussin käyrän reunaan tässä suhteessa.
Luo tili tai kirjaudu sisään kommentoidaksesi
Sinun täytyy olla jäsen voidaksesi jättää kommentin.
Luo käyttäjätili
Liity Konekansalaiseksi. Se on helppoa ja ilmaista! Rekisteröityneenä et näe mainoksia, voit käyttää hakua, näet alueita, joita nyt ovat piilossa...jne.