Regulace chlazení Goodwe

www
Odpovědět
Uživatelský avatar
Lion®
Administrátor fóra
Administrátor fóra
Příspěvky: 1604
Registrován: 28. září 2020, 14:07
Bydliště: podkrkonoší
Dal poděkování: 144 poděkování
Dostal poděkování: 193 poděkování
Kontaktovat uživatele:

Re: Regulace chlazení Goodwe

Příspěvek od Lion® »

Pete30 píše: 08. březen 2023, 12:45 A teď mluv :like: :D
:like: :like: :like:
________________
🍻 Přispěj a získej přístup do obsahu fóra pro dárce. :thx:
Oficiální sada s Raspberry Pi 4B/4GB, černá +Argon NEO Raspberry Pi 4 Case
Patriot Burst 2.5" SATA SSD 120GB + AXAGON EE25-XA6 ALINE box

Galerie realizací

Uživatelský avatar
Dušan
Dárce - Donátor
Dárce - Donátor
Příspěvky: 358
Registrován: 30. březen 2021, 08:25
Dal poděkování: 24 poděkování
Dostal poděkování: 29 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od Dušan »

kiklhorn píše: 08. březen 2023, 12:23 Přečti si tohle: https://cs.wikipedia.org/wiki/Printf a dej vědět jestli pomohlo.
Četl jsem to asi hodinu a snažil se to pochopit, no vůbec z toho nejsem moudrý. S EspHome nedělám, tak je to pro mě španělská vesnice.
Vždycky se něco naučím na nějakém názorném kódu, který je stejný jako ten můj, protože o tom mém kódu znám ten daný smysl .
Rpi 4 8GB RAM Home assistant běží na ssd, Esp, Sonoff ještě pořád jde, Tasmotka je hodně dobrá, ale Tuya nebrat :D GigaBlue + oscam , TV Philips 70" síť Unifi, GW 10K ET+ , Dynes 10kWh, 8.1kwp

kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od kiklhorn »

Душан píše: 07. březen 2023, 23:50
1) vyjdu z tohoto kódu:

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.print(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON");
      } else {
        it.print(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }
2) přepíšu jej s použitím printf, namíso print

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON");
      } else {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }
Zatím stejné, že? Ale při použití printf mohu vložit do řetězce "placeholdery" - fakt nevím jak je to česky

3) Předpokládejme že procento otáček je v celočíselné proměnné (typ int) s názvem "otacky".

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON, otáčky: %d procent", otacky);
      } else {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }
Takže jsem tam vrazil přímo do textu placeholder %d který znamená - tady bude výstup z nějaké celočíselné proměnné. Proměnné jsou pak (oddělené čárkami) uvedeny za " uzavřeným textem v pořadí v jakém se očekávají v textu.
Tady konkrétně byla jen jedna %d v textu nahrazeno obsahem celočíselné proměnné otáčky.

4) Pokud by otacky nebyla celočíselná proměnná, ale desetinné číslo (float) tak bych to napsal

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON, otáčky: %f procent", otacky);
      } else {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }
To fungovat bude, ale asi v jeho výpisu budeš mít dost nul. Něco jako 45.0000000

5) U výpisu procent asi stačí třeba jedno desetinné místo

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON, otáčky: %.1f procent", otacky);
      } else {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }
Nebo žádné desetinné místo

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON, otáčky: %.0f procent", otacky);
      } else {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }
6) Pravděpodobně namísto proměnné "otacky" ale máš nějaký objekt senzoru s id "senzorotacky", jehož atribut state obsahuje hodnotu.
[spoiler=Objekty, ale hrozně, hrozně zjednodušeně...]
Představ si že ti na stole leží třeba krabička s třemi tlačítky, displejem a tiskárnou.
Displej:
Na prvním řádku vidíš čas, je tam stále.
Na druhém řádku vidíš datum, je tam stále
Tlačítka:
První spouští venku déšť
Druhé tlačítko sníh
Třetí zařídí že vyjde slunce

Takže máš objekt krabička
s atributy čas a datum

což jsou vlastně proměnné ke čtení, a v kódu se na ně odkážeš jako

Kód: Vybrat vše

id(krabicka).cas
id(krabicka).datum
a s metodami dest(), snih(), slunce() na které se ve svém kódu odkážeš

Kód: Vybrat vše

id(krabicka).dest()
a začne pršet s nějakou výchozí intenzitou nebo

Kód: Vybrat vše

id(krabicka).snih(hodně)
a začne hodně sněžit

Navíc v případě že se akce povede tak z tiskárny vyleze papírek a na něm napsaná 0.
Nebo se nepovede a vyleze třeba 400 - nenalezena voda

Obsah displeje krabičky (atributy) máš k dispozici stále
Papírek jen v okamžiku mačkání tlačítka (volání metody). Buď jej použiješ a nebo tě nezajímá.

[/spoiler]

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON, otáčky: %.0f procent", id(senzorotacky).state;
      } else {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }


7) Máš někde i senzor s id "otrpm" ve kterém jsou otáčky v RPM? Tak doplníme do textu placeholder a do seznamu hodnot něco (funkci, proměnnou...) co nám tu hodnotu poskytne, v tomto případě opět senzor.

Kód: Vybrat vše

      if (id(regulace1).state) {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON, otáčky: %.0f procent, %.0f RPM", id(senzorotacky).state, id(otrpm).state;
      } else {
        it.printf(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }


Pochopení printf formátu je důležité, používá se ve spoustě programovacích jazyků. Nejen pro zobrazení na displej.

[spoiler=Poznámka pod čarou:]
Znak % je speciální třeba i v šablonách použitých v yaml (jinja)
Abys nevypisoval v textu slovo procent, ale znak %
tak záleží na konvenci v čem to píšeš.
Vyzkoušej jestli to tady bude správně ve tvaru s mezerou za
%
nebo zdvojené
%%
nebo oescapované
\%
nebo v jiných uvozovkách
'%'

Se znakem \ a dalšími je to podobně.[/spoiler]
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

Uživatelský avatar
Dušan
Dárce - Donátor
Dárce - Donátor
Příspěvky: 358
Registrován: 30. březen 2021, 08:25
Dal poděkování: 24 poděkování
Dostal poděkování: 29 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od Dušan »

Bod č.7 ten senzor s id "otrpm" nemám. Nevíš kde bych ho našel ?
Myslíš toto?

Kód: Vybrat vše

fan:
  - platform: speed
    output: regulace
    name: "Regulace"
Rpi 4 8GB RAM Home assistant běží na ssd, Esp, Sonoff ještě pořád jde, Tasmotka je hodně dobrá, ale Tuya nebrat :D GigaBlue + oscam , TV Philips 70" síť Unifi, GW 10K ET+ , Dynes 10kWh, 8.1kwp

kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od kiklhorn »

To fakt nebylo cílem mého přípěvku...

Ale nějaké nápady by byly i na tohle.
Má ventilátor třetí drát? - oddělení mosfetem nebo optočlenem a počítání pulsů (a pravděpodobně děleno dvěma) na ESP třeba pomocí https://esphome.io/components/sensor/pulse_counter.html

Nemá třetí drát, ale je mezi lopatkami mezera? Použít nějakou optozávoru s modulovaným světlem

Ani třetí drát, ani mezera?
a) Bílá tečka na rotoru a fototranzistor odrazem (něco takového se tu myslím řešilo pro odečítání vodoměru)
nebo
b) Snímání magnetického pole někde na ventilátoru

Asi by šlo i něco se stroboskopem
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

Uživatelský avatar
Dušan
Dárce - Donátor
Dárce - Donátor
Příspěvky: 358
Registrován: 30. březen 2021, 08:25
Dal poděkování: 24 poděkování
Dostal poděkování: 29 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od Dušan »

Ouuu, tak to ty procenta tam mít nemusím :)
Větráček má pouze 2 dráty , jedině , že bych koupil jiný se 3 dráty.
Rpi 4 8GB RAM Home assistant běží na ssd, Esp, Sonoff ještě pořád jde, Tasmotka je hodně dobrá, ale Tuya nebrat :D GigaBlue + oscam , TV Philips 70" síť Unifi, GW 10K ET+ , Dynes 10kWh, 8.1kwp

kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od kiklhorn »

Dobře. Hlavně mi prozraď jestli byl pochopen ten printf.
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

Uživatelský avatar
Dušan
Dárce - Donátor
Dárce - Donátor
Příspěvky: 358
Registrován: 30. březen 2021, 08:25
Dal poděkování: 24 poděkování
Dostal poděkování: 29 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od Dušan »

Nebudu ti lhát, pochopil jsem to do bodu č. 5
Ty otáčky se nedají nějak vytáhnout z HA z vývoje ? Tam je atribut percentage: a ten ukazuje procenta otáček.
Rpi 4 8GB RAM Home assistant běží na ssd, Esp, Sonoff ještě pořád jde, Tasmotka je hodně dobrá, ale Tuya nebrat :D GigaBlue + oscam , TV Philips 70" síť Unifi, GW 10K ET+ , Dynes 10kWh, 8.1kwp

kiklhorn
Moderátor
Moderátor
Příspěvky: 901
Registrován: 03. červenec 2021, 18:35
Dal poděkování: 107 poděkování
Dostal poděkování: 210 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od kiklhorn »

Do předchozího textu jsem doplnil spoiler s vysvětlením toho id(objekt).atribut zápisu. Je to tak pochopitelnější?

Nakopíruj mi sem celý yaml k ESP a screenshot z vývojářské nástroje, stavy k té věci co zobrazuje otáčky podobně jako:
Přílohy
Snímek obrazovky 2023-03-09 152726.png
Vše co si přinesu domů je buď Shelly, nebo to skončí buď pod ESPhome nebo pod Zigbee2mqtt.
Ajťák co pamatuje BBS a OS/2 Warp a je mu jedno o jaký systém nebo síťařinu běží.
HA OS jako jedna z Proxmox VM na Odroid H3+/64GB https://github.com/tteck/Proxmox

Uživatelský avatar
Dušan
Dárce - Donátor
Dárce - Donátor
Příspěvky: 358
Registrován: 30. březen 2021, 08:25
Dal poděkování: 24 poděkování
Dostal poděkování: 29 poděkování

Re: Regulace chlazení Goodwe

Příspěvek od Dušan »

Ve vývoji ukazuje rychlost viz screenshot percentage: 54%

yaml kod esp

Kód: Vybrat vše

esphome:
  name: chlazeni
  friendly_name: Chlazení

esp8266:
  board: d1_mini

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "qNwT5OpNsok923YkGt8ODXkM/69oP52QuUccWWfZ0fM="

ota:
  password: "c26a6d071d87a8b9bf71f32a6b790cc2"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Chlazeni Fallback Hotspot"
    password: "ikpk0A6rv33s"

web_server:
  port: 80
#  auth:
#    username: jmeno
#    password: heslo

output:
  - platform: esp8266_pwm
    pin: D5
    frequency: 12000 Hz
    id: regulace

fan:
  - platform: speed
    output: regulace
    name: "Regulace"

switch:                                                                                                                                                                                                
  - platform: restart
    name: "Pin D1 Restart"

binary_sensor:
  - platform: homeassistant
    name: "Regulace chlazení"
    id: regulace1
    entity_id: fan.chlazeni_regulace
    internal: true

sensor:
  - platform: homeassistant
    name: "Teplota sřídače"
    id: teplota
    entity_id: sensor.inverter_temperature_air
    internal: true

  - platform: homeassistant
    name: "FVE výroba"
    id: fve_vyroba
    entity_id: sensor.pv_power
    internal: true

  - platform: homeassistant
    name: "Baterie"
    id: batery
    entity_id: sensor.battery_state_of_charge
    internal: true

  - platform: homeassistant
    name: "Baterie"
    id: dum
    entity_id: sensor.house_consumption
    internal: true



# Display
    

i2c:
  sda: D1
  scl: D2

display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    reset_pin: D0
    address: 0x3C
    update_interval: 2s
    lambda: |-
      it.printf(0, 10, id(pismo), TextAlign::BASELINE_LEFT, "FVE výroba: %.0f W", id(fve_vyroba).state);
      it.printf(0, 23, id(pismo), TextAlign::BASELINE_LEFT, "Spotřeba: %.0f W", id(dum).state);
      it.printf(0, 36, id(pismo), TextAlign::BASELINE_LEFT, "Baterie: %.0f%%", id(batery).state);  
      it.printf(0, 49, id(pismo), TextAlign::BASELINE_LEFT, "Teplota: %.1f°C", id(teplota).state);
      if (id(regulace1).state) {
        it.print(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: ON");
      } else {
        it.print(0, 62, id(pismo), TextAlign::BASELINE_LEFT, "Chlazení: OFF");
      }
      

# Písmo
      
font:
  - file: "arial.ttf"
    glyphs: "!%()+,-/_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzμčáůýří"
    id: pismo
    size: 12 
  - file: "arial.ttf"
    glyphs: "!%()+,-/_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzμčáůýř"
    id: pismo40
    size: 40
  - file: "arial.ttf"
    glyphs: "!%()+,-/_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzμčáůýř"
    id: pismo26
    size: 26
  - file: "arial.ttf"
    glyphs: "!%()+,-/_.:°0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzμčáůýř"
    id: pismo20
    size: 20
    
  - file: "materialdesignicons-webfont.ttf"
    id: fann
    size: 60
    glyphs: [
      '󰈐', # F0210 mdi-fan
    ]
    
  - file: "materialdesignicons-webfont.ttf"
    id: solar
    size: 5
    glyphs: [
      '󱩳', # F1A73 mdi-solar-power-variant
    ]
    
  - file: "materialdesignicons-webfont.ttf"
    id: teplota1
    size: 60
    glyphs: [
      '󰔏', # F050F mdi-thermomete
    ]
    
  - file: 'materialdesignicons-webfont.ttf' 
    id: wifi_doma
    size: 5
    glyphs: [
      # Wifi
      '󰤟', # mdi-wifi-strength-1
      '󰤢', # mdi-wifi-strength-2
      '󰤥', # mdi-wifi-strength-3
      '󰤨', # mdi-wifi-strength-4
      '󰤫', # mdi-wifi-strength-alert-outline
      ]






captive_portal:
Screenshot_20230309_173119_Home Assistant.jpg
BTW: Mám objednané větráčky, které budou mít 3 dráty . Pro jistotu :) ty procenta tam musíme dostat :)
Rpi 4 8GB RAM Home assistant běží na ssd, Esp, Sonoff ještě pořád jde, Tasmotka je hodně dobrá, ale Tuya nebrat :D GigaBlue + oscam , TV Philips 70" síť Unifi, GW 10K ET+ , Dynes 10kWh, 8.1kwp

Odpovědět

Zpět na „ESPHome“