Automatyzacja z obliczeniami

cześć,
jestem bardzo początkujacy w pisaniu kodu python ale udalo mi sie zrobic cos takiego:

# ustawianie targetu kiedy ladowarka ma sie wylaczyc
# sprawdzenie ile czasu w minutach pozostalo do targetu

# definiowanie podstawowych zmiennych
from datetime import date, time, datetime, timedelta
t_target = time(hour=6, minute=20, second=0)
d_today=date.today()
now=datetime.now().replace(microsecond=0)

#tworzymy target laczac dzis+ustalona godzina
import datetime
target=datetime.datetime.combine(d_today, t_target)

# licze ile minut jest miedzy targetem a teraz
# jezeli wartosc w min jest ujemna tz ze target=target+1dzien
delta = target - now
delta_min=delta.total_seconds() / 60
if delta_min < 0:
    target=target + timedelta(1)
    delta = target - now
    delta_min=delta.total_seconds() / 60


delta_min=round(delta_min,0)

# ==================================
# ===========druga czesc============
# ==================================

# bateria target oraz delta
b_target=84
b_current=40
b_delta=b_target-b_current
# szybkosc ladowania baterii minut na 1%
charger_speed=2.7
t_need = round(b_delta * charger_speed,0)

napisalem to w programie PyScripter
zmienna b_current dalem na sztywno ale tutaj rzecz jasna powinno zaczytywac sie cyklicznie wartosc z telefonu poziom baterii

chcialem osiagnac cos takiego ze
co jakis czas ‘cos’ bedzie sprawdzalo ile jest czasu od teraz do momentu na kiedy chce miec naladowany telefon w tym przypadku 6:20
nastepnie ‘cos’ bedzie sprawdzac jaki jest poziom baterii i ile % baterii brakuje do wymaganych 84% zeby przeliczyc ile potrzebuje minut na osiagniecie tego poziomi przy predkosci 2.7min/1% baterii

i teraz nie wiem jak to zaimplementowac do HA jak w miejsce zmiennej b_current dac odczyt z baterii by na koncu dodac jeszcze cos o tym ze w tym momencie ladowarka ma sie wlaczyc.

Zrobilem sobie w config folder python_scripts
Czy w ogóle ide w dobrym kierunku?
Natknalem sie tutaj Calculation inside automation - #3 by kegra - Configuration - Home Assistant Community ze jest cos takiego jak JINJA i ze to wlasciwy jezyk dla HA

maly update
zainstalowalem na HA AppDeamon oraz VSCode - chyba wszystko dzila
stworzyłem coś takiego:

import hassapi as hass

class Gniazdko_105(hass.Hass):
    def initialize(self):
        self.listen_state(self.flash, "switch.105_socket_5", new = "on")

    def flash(self, entity, attribute, old, new, kwargs):
        self.run_in(self.light_off, 2)
        self.turn_off("switch.105_socket_5")

to tak na początek żeby wybadać czy działa
chce zeby po wlaczeniu gniazdka samo sie wylaczylo (po 2 sekundach) ale nie dziala

ponizej jeszcze opis pliku apps yaml
image
image

podpowie ktos cos robie zle?

Kolego, czas na NodeRed’a, pozwoli Ci rozwinąć skrzydła :stuck_out_tongue:

2 polubienia

Czyli że nie będę szedł w stronę nauki języka python? Liczyłem że przez przypadek trochę go podłapie

Funkcje w NodeRed też możesz pisać :slight_smile:

1 polubienie