HomeAssistant - Yleinen support topic

YAML:
template:
  - trigger:
      - trigger: state
        entity_id: sensor.verkko_kokonaiskulutus
    condition:
      - condition: template
        value_template: >
           {% set power = 3000 %}
           {% set max_diff = 100 %}
           {% set diff = (trigger.from_state.state | float - trigger.to_state.state | float) | abs  %}
           {{ a < power + max_diff and a > power - max_diff}}
    binary_sensor:
      - name: "LVV"
        state: >
           {{ trigger.from_state.state | float < trigger.to_state.state | float }}
Jotain ihmettä tuossa koodissa on mitä en keksi, miksi template editor heittää virhettä trigger is undefined, eikä toimi sen paremmin muuallakaan.
 

jussi

Vakionaama
Saakos tollasen esp8266 nodemcu kortin resetoitua jotenkin täydellisesti? Sain vanhemman pikkunäytöllisen niin jankkiin, ettei saa johdollokaan softattua enää. Yritin vaan vaihtaa nimeä ja vähän tehtävää, liki samalla koodilla kun siinä olikin. Se satunnaisesti ilmesty wlaniinkin, mutta entisillä tiedoillaan, loki herjas vaan salasanoista jotain ja ei jatkanut.
Johdolla kun yrittää espweb liittymällä, niin sininen ledi vaan vilkkuu koko ajan, eikä yhdistä.
 

jussi

Vakionaama
Saakos tollasen esp8266 nodemcu kortin resetoitua jotenkin täydellisesti? Sain vanhemman pikkunäytöllisen niin jankkiin, ettei saa johdollokaan softattua enää. Yritin vaan vaihtaa nimeä ja vähän tehtävää, liki samalla koodilla kun siinä olikin. Se satunnaisesti ilmesty wlaniinkin, mutta entisillä tiedoillaan, loki herjas vaan salasanoista jotain ja ei jatkanut.
Johdolla kun yrittää espweb liittymällä, niin sininen ledi vaan vilkkuu koko ajan, eikä yhdistä.
Tässä on nyt jotain outoa... Se vanha heräs taas alkuperäisenä oltuaan virratta. Ja HAn esphome builder on laittanu uudelle eri nimiselle laitteelle vanhan .yaml fileen ja vanhalle laitteelle on ilmestynyt uuden .yaml...
Pitäsköhän nyt kopsata noi yamlit talteen ja poistaa molemmat laitteet? Tehdä sitten kumpikin uudestaan...
 

iro

Vakionaama
Tässä on nyt jotain outoa... Se vanha heräs taas alkuperäisenä oltuaan virratta. Ja HAn esphome builder on laittanu uudelle eri nimiselle laitteelle vanhan .yaml fileen ja vanhalle laitteelle on ilmestynyt uuden .yaml...
Pitäsköhän nyt kopsata noi yamlit talteen ja poistaa molemmat laitteet? Tehdä sitten kumpikin uudestaan...
Olen törmännyt joskus ESPin kanssa samaan ongelmaan, flashayksen jälkeen piiri alkaa tekemään USB:n kautta muisti-dumppia eikä boottaus korjaa tilannetta. Lieneekö kyseessä sekoilu mekanismissa jonka tarkoituksena on estää flashin liiallinen kuluminen (tuhoutuminen) tiheään toistuvissa päällekirjoituksissa. ESPi palautuu kuvaamallasi tavalla normaalitilaan. En ole huomannut että tuo aiheuttaisi laitteelle ongelmia jatkossa. Toki on hyvä ottaa back-upit talteen aika-ajon.
 
Viimeksi muokattu:

tjani

Aktiivinen jäsen
Jotain ihmettä tuossa koodissa on mitä en keksi, miksi template editor heittää virhettä trigger is undefined, eikä toimi sen paremmin muuallakaan.
Sun pitää ensin luoda tuo triggeri muuttuja että voit sitä testata dev toolsin malli sivulla.
YAML:
{% set trigger = {
  "from_state": {
    "state": "700",
  },
  "to_state": {
    "state": "3750",
 },
} %}

Ja varmaan tuo 'a' korvata 'diff'. Ainakin sillai tuntui koodi toimivan kun mielenkiinnosta kokeilin.
 

jussi

Vakionaama
On tää oikeesti vaikeeta, kun ei vaan osaa.
Toi esp8266 nodemcu palikka näytöllä tarttis kaksi "sensor" kohtaa yamliin, vaan eihän se käy. Eka sensor tarvitaan muutaman tiedon hakemiseen HAsta näytölle. Sen vaihtaminen text_sensoriksi kelpaa kyllä, mutta tuottaa väärää ulostusta. Toinen sensor tarvittas pulssilaskurille captive portalin alle.
Kokeilin jo ekalle virtual_sensor ja paria muutakin, ei käy. Miten noi pitäs naittaa tai erotella?
Pulssilaskurikin toimii kyllä, kun eka esiintymä on text_sensor, mutta kun se näyttää mitä sattuu.
 
Sun pitää ensin luoda tuo triggeri muuttuja että voit sitä testata dev toolsin malli sivulla.
YAML:
{% set trigger = {
  "from_state": {
    "state": "700",
  },
  "to_state": {
    "state": "3750",
 },
} %}

Ja varmaan tuo 'a' korvata 'diff'. Ainakin sillai tuntui koodi toimivan kun mielenkiinnosta kokeilin.
Siinä tapauksessa tuo ei oikeastaan käsittääkseni poista ongelmaa, että kuormasta pitää poistaa ylimääräiset kulutuspiikkejä aiheuttavat laitteet. Kun eikös ton ole määrä antaa true kun tulee 3000W piikki vaikka taustakulutus on mitä tahansa? Vai ymmärsinkö väärin?
 

-Teme-

Vakionaama
On tää oikeesti vaikeeta, kun ei vaan osaa.
Toi esp8266 nodemcu palikka näytöllä tarttis kaksi "sensor" kohtaa yamliin, vaan eihän se käy. Eka sensor tarvitaan muutaman tiedon hakemiseen HAsta näytölle. Sen vaihtaminen text_sensoriksi kelpaa kyllä, mutta tuottaa väärää ulostusta. Toinen sensor tarvittas pulssilaskurille captive portalin alle.
Kokeilin jo ekalle virtual_sensor ja paria muutakin, ei käy. Miten noi pitäs naittaa tai erotella?
Pulssilaskurikin toimii kyllä, kun eka esiintymä on text_sensor, mutta kun se näyttää mitä sattuu.
Et lisää kahta sensor: aloitusta vaan teet ne sensorit siihen saman sensor: alle
Koodi:
sensor:
  - platform: xxx
    gpio: xy
  - platform: zzz
    gpio: yy
 

jussi

Vakionaama
Et lisää kahta sensor: aloitusta vaan teet ne sensorit siihen saman sensor: alle
Koodi:
sensor:
  - platform: xxx
    gpio: xy
  - platform: zzz
    gpio: yy
Sillai ensin kokeilinkin, mutta en saanut pelaamaan. Nyt kun ne ha:lta haettavat arvot on omina text_sensoreina ja pulssilaskuri sensorina captive portal alla, niin pulssilaskuri toimii, mutta ne haettavat näyttää väärin/mitä sattuu.
Pitää kokeilla vielä uudestaan.
 

Temez

Aktiivinen jäsen
Siinä tapauksessa tuo ei oikeastaan käsittääkseni poista ongelmaa, että kuormasta pitää poistaa ylimääräiset kulutuspiikkejä aiheuttavat laitteet. Kun eikös ton ole määrä antaa true kun tulee 3000W piikki vaikka taustakulutus on mitä tahansa? Vai ymmärsinkö väärin?
Juu, näinhän se on. Mutta jos se kokonaisteho-sensori päivittyy vaikkapa 5s välein, niin millä todennäköisyydellä tulee muista kuormista 3kW +- jokin varmuusraja (eli sensorin ehtona vaikka 2,9-3,1kW) samalla hetkellä. Luulen, että aika pieni. Etenkin, jos sen yhdistää siihen shelly-tietoon, että milloin LVV:lle on sähköt kytketty.

Siis voihan tosiaan olla, että sulta löytyy jokin juuri tuon kokoinen kuorma tai sattumalta vain menee päälle useampi juuri oikean kokoinen kuorma, joka summautuu 3kW:n paikkeille. Mutta mun mutu on, että aika epätodennäköistä. Etenkin, jos LVV lämmitetään usein öisin.
 

Temez

Aktiivinen jäsen
Siinä tapauksessa tuo ei oikeastaan käsittääkseni poista ongelmaa, että kuormasta pitää poistaa ylimääräiset kulutuspiikkejä aiheuttavat laitteet. Kun eikös ton ole määrä antaa true kun tulee 3000W piikki vaikka taustakulutus on mitä tahansa? Vai ymmärsinkö väärin?
Ja nyt vasta taisin tajuta, että mitä myös saatoit tarkoittaa. On vähän aivot jumissa.

Eli tuo sensori "triggeröityy" aina, kun se sensor.verkko_kokonaiskulutus vaihtaa tilaa. Eli esimerkkinä, jos arvot olisivat vaikka:
17:00:01 teho 3123W
17:00:02 teho 3222W -> arvo ei muuttunut edellisestä ~3kW -> ei tehdä mitään
17:00:03 teho 3150W -> arvo ei muuttunut edellisestä ~3kW -> ei tehdä mitään
17:00:04 teho 6170W -> arvo muuttui edellisestä ~3kW eli trigger.from_state.state = 3150 ja trigger.to_state.state = 6170 ero on ~3kW -> muutetaan sensorin arvoa. Koska teho nousi -> LVV päällä.
...
17:10:12 teho 4100W -> arvo ei muuttunut edellisestä ~3kW -> ei tehdä mitään
17:10:13 teho 1050W -> arvo muuttui edellisestä ~3kW eli trigger.from_state.state = 4100 ja trigger.to_state.state = 1050ero on ~3kW -> muutetaan sensorin arvoa. Koska teho laski -> LVV pois päältä.
 
Ja nyt vasta taisin tajuta, että mitä myös saatoit tarkoittaa. On vähän aivot jumissa.

Eli tuo sensori "triggeröityy" aina, kun se sensor.verkko_kokonaiskulutus vaihtaa tilaa. Eli esimerkkinä, jos arvot olisivat vaikka:
17:00:01 teho 3123W
17:00:02 teho 3222W -> arvo ei muuttunut edellisestä ~3kW -> ei tehdä mitään
17:00:03 teho 3150W -> arvo ei muuttunut edellisestä ~3kW -> ei tehdä mitään
17:00:04 teho 6170W -> arvo muuttui edellisestä ~3kW eli trigger.from_state.state = 3150 ja trigger.to_state.state = 6170 ero on ~3kW -> muutetaan sensorin arvoa. Koska teho nousi -> LVV päällä.
...
17:10:12 teho 4100W -> arvo ei muuttunut edellisestä ~3kW -> ei tehdä mitään
17:10:13 teho 1050W -> arvo muuttui edellisestä ~3kW eli trigger.from_state.state = 4100 ja trigger.to_state.state = 1050ero on ~3kW -> muutetaan sensorin arvoa. Koska teho laski -> LVV pois päältä.
Näin juuri ymmärsin sen toimivan, jos toimisi. En jostain syystä saa tuota template editorissa toimimaan millään, eli vaatineeko jotain tuon triggerin alle?
Automaatiossa tuollainen trigger toimii kyllä ilman mitään, mutta tuossa templatessa ei.
 

jussi

Vakionaama
Et lisää kahta sensor: aloitusta vaan teet ne sensorit siihen saman sensor: alle
Koodi:
sensor:
  - platform: xxx
    gpio: xy
  - platform: zzz
    gpio: yy
On tää jännä laji harrastaa...
Eilisen testin yamlista jotenkin HA ihan ite siivonnu sen text sensor kohdan taas pelkäksi sensor kohdaksi. Ja olihan se siellä, kun oli asennettunakin, enkä siihen sen jälkeen koskenut.

Mutta joo, nyt sitten muutin taas myös sen pulssilaskurin sinne sensor: alle ja jätin captive portalin tyhjäksi. Jo vain toimii sielläkin, mutta aika oleellinen ero tuli esille. Kun se pulssilaskuri on captive portalin alla, niin valitulla inputkarvalla ei ole ylösvetoa, eli sitä piti pulssittaa 3V3 jännästä. Nyt kun se on siellä muiden luettavien sensorien kanssa samassa, niin sama inputkarva onkin ylhäällä. Eli pulssin saa näkymään maihin vetämällä. Mistähän tollasenkin vois arvata kokeilematta?
Samaten näköjään D1 mini käikäleelle tehty ohjelmallinen pulssinsuodatus ei olekaan sopiva tälle nodemcuv2 levylle, sekin täytyy korjata eri malliseksi näköjään. Sen huomasin jo silloin kun tota ekaa D1 korttia laitoin mittarin pulssien lukuun, kaikki ohjeistetut mallit eivät toimi kaikilla samoin.
 

-Teme-

Vakionaama
Captive portal on merkityksellinen kun wifiä ei ole konffiksessa määritelty, se ei pitäsisi kyllä muuhun olla merkityksellinen.
Itsellä ei ole kuin pari 8266 laitetta joten sen omanlaisuudet D1 yms ei ole itselle tuttuja
 

jussi

Vakionaama
Captive portal on merkityksellinen kun wifiä ei ole konffiksessa määritelty, se ei pitäsisi kyllä muuhun olla merkityksellinen.
Itsellä ei ole kuin pari 8266 laitetta joten sen omanlaisuudet D1 yms ei ole itselle tuttuja
Wifit on käytössä juu. Siinä onkin yks opeteltava lisää, kun en saa mitenkään kolmen wifi-verkon valintaa toimiin ton !secrects systeemin kanssa. Ne pitää kirjailla ihan näkyviin, muuten menee fiduiks heti.
D1 mini on kans ihan perus esp8266 palikka vähän vähemmillä porteilla kai. Sellanen mulla nyt lukee sähkömittaria pulssista. Hyvin on pelannu, lukema varsin sama per vrk yhtiön lukeman kanssa.
Nyt meinasin vaihtaa siihen ton näytöllisen tilalle, vois laittaa esille eteisen valojen ohjailukeskukseen. Saahan siihen näkymään mitä haluaa. Nyt siinä on noi testijutut, plus se pulssilaskuri, joka vaatii vielä säätöä.
IMG_20250103_024541_BURST002.jpg
Osaamisen vajavuus haittaa näiden käyttöä, kun ei enää opi niin sujuvasti. Mahdollisuuksia on aikas paljon. Olispa näitä ollu jo ysärin alussa...
 

Temez

Aktiivinen jäsen
Näin juuri ymmärsin sen toimivan, jos toimisi. En jostain syystä saa tuota template editorissa toimimaan millään, eli vaatineeko jotain tuon triggerin alle?
Automaatiossa tuollainen trigger toimii kyllä ilman mitään, mutta tuossa templatessa ei.
Aivan joo, tosiaan. Template editorissa tuo ei toimi. Se koko rimpsu pitää lisätä configuration.yaml-tiedostoon (sama paikka minne SHF-paketti lisätty). Jos siellä on jo valmiiksi "template"-osio, niin sen alle. Niin, ettei tiedostossa ole useita "template:" alkuisia-rivejä. Sen jälkeen HA:lle reboot.
 

maanma

Vakionaama
Ylättävän hankala binary-sensor asettaminen on off
Binääri sensorin lisääminen Integraat... -> Apurit -> Template -> ... bin.. nimelle nb_price_on
Skripti lisäys YAML editorissa
YAML:
alias: NB_price_ON turn ON
sequence:
  - action: homeassistant.turn_on
    target:
      entity_id: binary_sensor.nb_price_on
    data: {}
description: ""
off tilaan samanlainen toinen, jonka ero on
YAML:
 - action: homeassistant.turn_off
 
Viimeksi muokattu:

jussi

Vakionaama
Näyttäs siltä, ettei kannata asentaa viimesintä core-updatea. Mikään ei pelannu sen jälkeen. Piti palauttaa edelliseen.
 

jussi

Vakionaama
Ja taas uus ongelma. Milläs saadaan kosteuden % merkki tulostettua näytölle, kun se ei kelpaa millään kikkailulla? Kokeilin ulostaa näytölle jääkaapin tilan, niin toi % kun on koodimerkki, niin sen tulostusyritys generoi aina virheen...
Screenshot 2025-01-05 at 04-12-37 ESPHome Builder – Home Assistant.png
 

maanma

Vakionaama
Entso-e integraatioon ( api käyttäjä tässä tapio_markkanen ) laajennos kulutusvaikutus aikajaksojen valinta binary_sensor template:

{{states('sensor.tapio_markkanen_average_electricity_price_today') | float(0) > states ('sensor.tapio_markkanen_current_electricity_market_price') | float(0) }}

Tämä siis aktiivinen kun tuntihinta < keskihinta. Ekaan arvoon jos käyttää vaikka kerrointa 0.9 niin aktivoituu kun hinta alittaa keskihinnan 10%.

Lisäys Apurit > template > binary ja template kenttään tuo koodi.
 

Kaimax

Jäsen
Lukeeko joku muukin nordpoolin pörssisähkön kuukauden keski hintaa API:n kautta ja toimiikin vielä. Mulla vuoden vaihteen jälkeen ei ole enään päivittänyt vaan jäänyt näyttää samaa hintaa... alla koodi millä luen keskihintaa.

1736103338190.png

- platform: rest
resource: https://dataportal-api.nordpoolgrou...&market=DayAhead&deliveryArea=FI&currency=EUR
name: Kuukauden pörssikeskihinta
unit_of_measurement: c/kWh
scan_interval: 600
value_template: '{{(value_json["multiAreaMonthlyAggregates"][0]["averagePerArea"]["FI"]|float(0) * 1.255 / 10) | round(2)}}'
 

tjani

Aktiivinen jäsen
Ja taas uus ongelma. Milläs saadaan kosteuden % merkki tulostettua näytölle, kun se ei kelpaa millään kikkailulla? Kokeilin ulostaa näytölle jääkaapin tilan, niin toi % kun on koodimerkki, niin sen tulostusyritys generoi aina virheen...
Piti oikein katsoa oman näytön koodista että miten olen tehnyt. Näköjään tulostan prosenttimerkin erikseen. Jotain copy-paste peruja tuokin taitaa olla. Samoin näytti olevan "°C", toki mulla näytti olevan yksiköt aina pienemmällä fontilla kuin varsinainen arvo.
 

tjani

Aktiivinen jäsen
Pystyyköhän tuota muutosta tekemään jotenkin automaattisesti, vuoden päästä todennäköisesti hakkaan taas päätä seinään:parku:
Toimisko tuolla, en kokeillut. Korvaa koko rivi.
YAML:
resource_template: https://dataportal-api.nordpoolgroup.com/api/AggregatePrices?year={{now().year}}&market=DayAhead&deliveryArea=FI&currency=EUR
 

jussi

Vakionaama
Piti oikein katsoa oman näytön koodista että miten olen tehnyt. Näköjään tulostan prosenttimerkin erikseen. Jotain copy-paste peruja tuokin taitaa olla. Samoin näytti olevan "°C", toki mulla näytti olevan yksiköt aina pienemmällä fontilla kuin varsinainen arvo.
Kyllä se hyvin tulostaa kun kirjotan tuon mallin "pros" tekstinä siihen. Prosenttimerkkiä en saanu näytölle ilman herjaa itekseenkään, tulee vaan tyhjä merkki. Ja herja tulee jo kääntäjältä.
 

jussi

Vakionaama
Aloin miettiin, saisko tollasen esp-värkin lukemaan tai jopa imitoimaan tuota vilpin ohjaimena olevaa ultin käyttölaitetta... Siinähän on sarjaliikenne 100 baud 8O1 ja 6 tavua liikkuu. Tavujen sisältö pääosin selvillä, koska oon tehny sen ohjauksen sillä. Mutta mitään C-kieliä tai pythoneita en osaa hituakaan.
Jotain uart lukemisen esimerkkejä löysin, mutta kun kaikki vissiin osaajien tekemiä, niin jäi epäselväksi onnistuuko se vaan yamlilla vai pitääkö olla jotain lisäpalikoitakin olemassa...
 

hanuri

Jäsen
Toimisko tuolla, en kokeillut. Korvaa koko rivi.
YAML:
resource_template: https://dataportal-api.nordpoolgroup.com/api/AggregatePrices?year={{now().year}}&market=DayAhead&deliveryArea=FI&currency=EUR
Tätä ihmettelin minäkin aluksi, kun herkesi sensori toimimasta. Ei toiminut tämä tjani versio minulla. Chatgpt ohjasi heti oikeaan suuntaan ja
seuraavalla komennolla ainakin terminaalissa antaa saman vasteen kuin kiinteällä vuosiluvulla. (terminaalissa käytetään eri komentoja, kuin HA:n YAML/jinja)

Koodi:
curl -X GET "https://dataportal-api.nordpoolgroup.com/api/AggregatePrices?year=$(date +%Y)&market=DayAhead&deliveryArea=FI&currency=EUR"


edit.Kyllä se tuo tjani koodi toimi HA:ssa. Kämmäsin tuon rivin alun, minulla oli pelkästään resource, kun piti olla resource_template
 
Viimeksi muokattu:

tjani

Aktiivinen jäsen
Kyllä se hyvin tulostaa kun kirjotan tuon mallin "pros" tekstinä siihen. Prosenttimerkkiä en saanu näytölle ilman herjaa itekseenkään, tulee vaan tyhjä merkki. Ja herja tulee jo kääntäjältä.
Tämmönen oli ihan tuolla ESPhomen docissa
Koodi:
it.printf(0, 0, id(my_font), "Temperature: %.1f°C, Humidity: %.1f%%", id(temperature).state, id(humidity).state);
 

-Teme-

Vakionaama
Aloin miettiin, saisko tollasen esp-värkin lukemaan tai jopa imitoimaan tuota vilpin ohjaimena olevaa ultin käyttölaitetta... Siinähän on sarjaliikenne 100 baud 8O1 ja 6 tavua liikkuu. Tavujen sisältö pääosin selvillä, koska oon tehny sen ohjauksen sillä. Mutta mitään C-kieliä tai pythoneita en osaa hituakaan.
Jotain uart lukemisen esimerkkejä löysin, mutta kun kaikki vissiin osaajien tekemiä, niin jäi epäselväksi onnistuuko se vaan yamlilla vai pitääkö olla jotain lisäpalikoitakin olemassa...
Mikä laite olikaan ultin perustana? Muistaakseni siihen saa erillisen ohjauksen
Edit: taitaa olla Daikin
 

jussi

Vakionaama
Mikä laite olikaan ultin perustana? Muistaakseni siihen saa erillisen ohjauksen
Edit: taitaa olla Daikin
Toi käyttölaitepaneli on aikas vanhasta 5500e mallista, ei siihen tainu saada mitään. Ehkä tuo esp siihen taipuu, minä vaan en osaa alottaa edes kun en löydä sopivaa mallikoodia, josta lähtis muokkaamaan. Tekoäly kyllä teki eilen parikin ehdotusta, pitää niitä testailla ehtiessä.
 

wannabe

Aktiivinen jäsen
Onko HACS integraatiossa lisääosaa, jolla sais esim. ilpin kulutuksesta eroteltua näppärästi paljonko lämmitysjakso kuluttaa ja vastaavasti paljonko sulatusjakso kuluttaa?
 

jussi

Vakionaama
Toi käyttölaitepaneli on aikas vanhasta 5500e mallista, ei siihen tainu saada mitään. Ehkä tuo esp siihen taipuu, minä vaan en osaa alottaa edes kun en löydä sopivaa mallikoodia, josta lähtis muokkaamaan. Tekoäly kyllä teki eilen parikin ehdotusta, pitää niitä testailla ehtiessä.
Eipä ole tekoälystä apua tuohon. Hienoa koodia tekee ja korjaileekin sitä, mutta mikään vaan ei toimi. Ei kelpaa edes kääntäjälle.
Itse en tosin saanu aikaan sen parempaa, kun pohjasin tekoälyn aloitukseen. Pitänee vaihtaa koko lähtöasetelma.
 
K

korsteeni

Vieras
Eipä ole tekoälystä apua tuohon. Hienoa koodia tekee ja korjaileekin sitä, mutta mikään vaan ei toimi. Ei kelpaa edes kääntäjälle.
Itse en tosin saanu aikaan sen parempaa, kun pohjasin tekoälyn aloitukseen. Pitänee vaihtaa koko lähtöasetelma.
illalla ajoin 20 vuotta vanhaan nassiin bullseyen, keinoälystä ei mitään apua, huvikseni kyselin mutta hermot siltä meni, täysin bullshittiä tarjoili

siinä lajissa on hyvä kun kyselee sanna marinista tai muusta seiska lehteä tai keltaisiin julkaisuihin liittyvää niin erikoistiivistelmä pitää pyytää, juttua tulee, mutta jotain asiaa niin aika vaitonaista on
 

jussi

Vakionaama
Kun varovasti aloitin ja yritin keksiä sarjaliikennenuuskun tolle esp-palikalle, siitä olis voinu sit jatkaa vähän pidemmällekin, jos sais toimimaan... Äkkiä hakemalla en tosiaan löytäny yhtään sopivaa mallia, kun täysin noita hienoja kieliä osaamattomana en itse saa tehtyä mitään. Paitsi vähän editoida selkeitä paikkoja. Niinpä kyselin siltä tekoälyltä, vaan ei sekään osannu. Pitäis lukea sarjaliikennettä 100baud ja 6 tavua. Tavut tulee reverse-order, eli msb-edellä.
Pistän tähän nyt tekoälyn parhaat ehdotukset, jos joku osaava kertois, missä meni mettään. Eivät ole kauheen pitkiä kuitenkaan... Ehkä parhaimman virheilmo on tämmönen:
/config/esphome/vilp-data.yaml: In lambda function:/config/esphome/vilp-data.yaml:41:30: error: expected type-specifier before 'CustomComponent' 41 | auto custom_comp = new CustomComponent(&uart_bus); | ^~~~~~~~~~~~~~~
Toi nyt rivittyy väärin tähän. Yaml:
Koodi:
esphome:
  name: vilp-data
  friendly_name: Vilp data
esp8266:
  board: esp01_1m
# Enable logging
logger:
  level: DEBUG
# Enable Home Assistant API
api:
  encryption:
    key: "ouRmAxBaZ1oHNnBGkywWuSptdY7auzRV5Hw399tJPlQ="
ota:
  - platform: esphome
    password: "cf83c54e7343ce16a80ed154e5d0a2e5"
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Vilp-Data Fallback Hotspot"
    password: "qx7Oaw19mOdG"
uart:
  tx_pin: GPIO1  # Sarjaliikenteen TX-pin
  rx_pin: GPIO3  # Sarjaliikenteen RX-pin
  baud_rate: 100  # Mukautettu baud-nopeus
  stop_bits: 1
  parity: ODD  # Mukautettu parity-asetus
  id: uart_bus
external_components:
  - source: "custom_component"
custom_component:
  - lambda: |-
      auto custom_comp = new CustomComponent(&uart_bus);
      App.register_component(custom_comp);
      return {};
Ja sitten kaksi lisäkoodia, jotka kyllä on oikeessa paikassa ja löytyvät kääntäjälle. custom_component.h tässä:
Koodi:
#pragma once
#include "esphome.h"

class CustomComponent : public Component, public UARTDevice {
 public:
  CustomComponent(UARTComponent *parent);

  void setup() override;
  void loop() override;

 private:
  uint8_t reverse_byte(uint8_t byte);
};
Ja custom_component.cpp:
Koodi:
#include "custom_component.h"

CustomComponent::CustomComponent(UARTComponent *parent) : UARTDevice(parent) {}

void CustomComponent::setup() {
  ESP_LOGD("CustomComponent", "Setup complete");
}

void CustomComponent::loop() {
  if (available() >= 6) {  // Odottaa 6 tavua
    uint8_t data[6];
    for (int i = 0; i < 6; i++) {
      data[i] = read();  // Lue tavu
    }

    // Käännä MSB-ensimmäinen data
    for (int i = 0; i < 6; i++) {
      data[i] = reverse_byte(data[i]);
    }

    // Tarkista tarkiste
    uint8_t checksum = 0;
    for (int i = 0; i < 5; i++) {
      checksum -= data[i];
    }

    if (checksum == data[5]) {
      ESP_LOGD("CustomComponent", "Data valid: %02X %02X %02X %02X %02X %02X",
               data[0], data[1], data[2], data[3], data[4], data[5]);
    } else {
      ESP_LOGW("CustomComponent", "Checksum error!");
    }
  }
}

uint8_t CustomComponent::reverse_byte(uint8_t byte) {
  uint8_t result = 0;
  for (int i = 0; i < 8; i++) {
    if (byte & (1 << i)) {
      result |= (1 << (7 - i));
    }
  }
  return result;
}

Tulihan tuosta sit kuitenkin aika hankalasti luettava, anteeksi siitä. Laitetaas koodina vielä se virheilmokin:
Koodi:
/config/esphome/vilp-data.yaml: In lambda function:/config/esphome/vilp-data.yaml:41:30: error: expected type-specifier before 'CustomComponent'   41 |       auto custom_comp = new CustomComponent(&uart_bus);      |                              ^~~~~~~~~~~~~~~*** [.pioenvs/vilp-data/src/main.cpp.o] Error 1========================= [FAILED] Took 12.39 seconds ====================
 
Viimeksi muokattu:

Kaimax

Jäsen
Kun varovasti aloitin ja yritin keksiä sarjaliikennenuuskun tolle esp-palikalle, siitä olis voinu sit jatkaa vähän pidemmällekin, jos sais toimimaan... Äkkiä hakemalla en tosiaan löytäny yhtään sopivaa mallia, kun täysin noita hienoja kieliä osaamattomana en itse saa tehtyä mitään. Paitsi vähän editoida selkeitä paikkoja. Niinpä kyselin siltä tekoälyltä, vaan ei sekään osannu. Pitäis lukea sarjaliikennettä 100baud ja 6 tavua. Tavut tulee reverse-order, eli msb-edellä.
Pistän tähän nyt tekoälyn parhaat ehdotukset, jos joku osaava kertois, missä meni mettään. Eivät ole kauheen pitkiä kuitenkaan... Ehkä parhaimman virheilmo on tämmönen:
/config/esphome/vilp-data.yaml: In lambda function:/config/esphome/vilp-data.yaml:41:30: error: expected type-specifier before 'CustomComponent' 41 | auto custom_comp = new CustomComponent(&uart_bus); | ^~~~~~~~~~~~~~~
Toi nyt rivittyy väärin tähän. Yaml:
Koodi:
esphome:
  name: vilp-data
  friendly_name: Vilp data
esp8266:
  board: esp01_1m
# Enable logging
logger:
  level: DEBUG
# Enable Home Assistant API
api:
  encryption:
    key: "ouRmAxBaZ1oHNnBGkywWuSptdY7auzRV5Hw399tJPlQ="
ota:
  - platform: esphome
    password: "cf83c54e7343ce16a80ed154e5d0a2e5"
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Vilp-Data Fallback Hotspot"
    password: "qx7Oaw19mOdG"
uart:
  tx_pin: GPIO1  # Sarjaliikenteen TX-pin
  rx_pin: GPIO3  # Sarjaliikenteen RX-pin
  baud_rate: 100  # Mukautettu baud-nopeus
  stop_bits: 1
  parity: ODD  # Mukautettu parity-asetus
  id: uart_bus
external_components:
  - source: "custom_component"
custom_component:
  - lambda: |-
      auto custom_comp = new CustomComponent(&uart_bus);
      App.register_component(custom_comp);
      return {};
Ja sitten kaksi lisäkoodia, jotka kyllä on oikeessa paikassa ja löytyvät kääntäjälle. custom_component.h tässä:
Koodi:
#pragma once
#include "esphome.h"

class CustomComponent : public Component, public UARTDevice {
 public:
  CustomComponent(UARTComponent *parent);

  void setup() override;
  void loop() override;

 private:
  uint8_t reverse_byte(uint8_t byte);
};
Ja custom_component.cpp:
Koodi:
#include "custom_component.h"

CustomComponent::CustomComponent(UARTComponent *parent) : UARTDevice(parent) {}

void CustomComponent::setup() {
  ESP_LOGD("CustomComponent", "Setup complete");
}

void CustomComponent::loop() {
  if (available() >= 6) {  // Odottaa 6 tavua
    uint8_t data[6];
    for (int i = 0; i < 6; i++) {
      data[i] = read();  // Lue tavu
    }

    // Käännä MSB-ensimmäinen data
    for (int i = 0; i < 6; i++) {
      data[i] = reverse_byte(data[i]);
    }

    // Tarkista tarkiste
    uint8_t checksum = 0;
    for (int i = 0; i < 5; i++) {
      checksum -= data[i];
    }

    if (checksum == data[5]) {
      ESP_LOGD("CustomComponent", "Data valid: %02X %02X %02X %02X %02X %02X",
               data[0], data[1], data[2], data[3], data[4], data[5]);
    } else {
      ESP_LOGW("CustomComponent", "Checksum error!");
    }
  }
}

uint8_t CustomComponent::reverse_byte(uint8_t byte) {
  uint8_t result = 0;
  for (int i = 0; i < 8; i++) {
    if (byte & (1 << i)) {
      result |= (1 << (7 - i));
    }
  }
  return result;
}

Tulihan tuosta sit kuitenkin aika hankalasti luettava, anteeksi siitä. Laitetaas koodina vielä se virheilmokin:
Koodi:
/config/esphome/vilp-data.yaml: In lambda function:/config/esphome/vilp-data.yaml:41:30: error: expected type-specifier before 'CustomComponent'   41 |       auto custom_comp = new CustomComponent(&uart_bus);      |                              ^~~~~~~~~~~~~~~*** [.pioenvs/vilp-data/src/main.cpp.o] Error 1========================= [FAILED] Took 12.39 seconds ====================
Mitä piiriä käytät? Jos liikenne on UART niin RX & TX nastat ei ole oikea paikka, mä olen käyttänyt UARTiin nastoja D1 & D2 (GPIO3 & GPIO4) ja alustana D1 mini ep8266
 
Back
Ylös Bottom