Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Vinnerliste

Populært innhold

Viser innholdet med mest poeng fra 23. jan. 2024 i alle områder

  1. Har ikke jobbet med Modbus siden -90 tallet men ser Node-RED har en haug med Modbus integrasjoner. Da burde det være nokså kjapt å gjøre et forsøk for å se hvor enkelt/vanskelig det er. Eneste stedet jeg ikke har kommet i mål er Verisure/Yale Doorman integrasjon men den er så lite viktig for meg at jeg har ikke lagt stort arbeid i den... Hadde en stund HomeSeer oppe og gå kun for Verisure men Verisure sluttet å virke i HS også... Jeg gikk over til Node-RED for noe rundt 3 år siden og har mange ganger lurt på hvorfor jeg ikke hadde hørt om Node-RED tidligere. Selv her på forumet ser det ut til at Node-RED er litt "uglesett" på en måte. En kan ikke velge Node-RED som system i profilen til tross for flere hint til adm (hint igjen @Moskus), medlemmer av andre "menigheter" gir beskjed om at de ikke vil høre om Node-RED osv. men det er nå deres tap tenker jeg... Jeg er i alle fall mektig imponert over hvor enkelt og greit det er å få til det meste i Node-RED. Der er ingen systemer som passer best for alle, folk har forskjellig ståsted på mange plan. Når jeg skal i gang med et eller annet nytt der jeg har mange veier å gå så lager jeg meg en liten og relativt enkel oppgave og ser hva som skal til for å løse denne, hvor mye nett/forumhjelp jeg trenger for å komme i mål. For hjemmeautomasjon blir oppgaven f.eks. slik: Jeg har 2 wallplugs, en til espressomaskin og en til kaffekvern. Espressomaskinen skal kunne slås på/av fra wallplug OG et eller annet skjermbasert. 10 minutt etter espressomaskinen slås kvernen på da det indikerer at espressomaskinen er gjennomvarm. Etter 1 time slås alt av igjen om det ikke er slått av manuelt. Og kanskje det viktigste: Det skal kunne herjes med, slås av/på i hytt og pine uten at timerne går i ball... (og når en leker med disse tingene så settes jo selvsagt timerene til sekunder i stedet for minutt og timer...). Når oppgaven er i boks regner jeg med at jeg har kunnskap nok til å avgjøre om systemet er passende for meg...
    3 poeng
  2. Her er basis kode for PWM styring av en PC vifte: Mange PC vifter kan en styre hastigheten på, men ikke alle. Dersom vifta har 4 kabler (og ikke bare 3) kan den styres. Lederne er: 12V Jord PWM (plus bredde modulasjon) styresignal inn Puls informasjon om hvor fort vifta faktisk går (Tach) PC vifter har PWM signal på 25kHz (antakeligvis for at en ikke skal kunne høre den med ørene) og tidligere var det litt klønete å få til med en Arduino, men med en ESP32 går det som en lek. Vi bruker en av de 6-16 (avhengig av ESP32 type) innebyggede PWM kanalene i ESP32'en og styrer dette med noen få linjer kode. Her er koden satt inn for å styre vifta fra MQTT: Det er også mulig å LESE den REELLE hastigheten på vifta ved å telle pulser fra den siste ledningen fra PC vifta men det må bli en annen gang. OBS: Pulsene fra vifta er 12V og vil skade ESP32 om de kobles direkte. Det er ofte 2 eller 4 pulser / rotasjon
    2 poeng
  3. Jeg har i noen tid nå hatt en HA nummer 2 kjørende på en RPi Zero. Denne har jeg hatt et lite ønske om å terminere fordi HA ikke lenger er støttet på en så svak "dings". Jeg brukte den kun for å lese inn data fra ventilasjonsanlegget via modbus og publisere dette på MQTT og det har fungert rimelig greit. Men så fikk esphome plutselig støtte for modbus den også og da ble det til at jeg tenkte enda mer alvorlig på dette. Esphome viste seg å være like lett å sette opp til å lese modbus som det meste annet som er enkelt med esphome. Kan varmt anbefales. Hardware kostet meg ca 100kr hos artigereliv.no Det gjenstår å finne en egnet boks å ha kretskortene i....... esphome: name: ventilasjon platform: ESP32 board: esp-wrover-kit wifi: ssid: "HEIME5.ORG" password: !secret heime_wifi domain: .lan preferences: flash_write_interval: 48h # Enable fallback hotspot (captive portal) in case wifi connection fails #ap: # ssid: "Stue Co2 Fallback Hotspot" # password: "ppHXTW3jIUEL" #captive_portal: # Enable logging logger: level: DEBUG baud_rate: 0 # Enable Home Assistant API api: ota: uart: id: mod_uart tx_pin: 17 rx_pin: 16 baud_rate: 9600 stop_bits: 1 modbus: id: modbus1 uart_id: mod_uart flow_control_pin: 5 send_wait_time: 1000ms modbus_controller: - id: heru ## the Modbus device addr address: 1 modbus_id: modbus1 command_throttle: 1000ms update_interval: 10s switch: - platform: modbus_controller modbus_controller_id: heru register_type: coil address: 3 name: "ventilation_away_mode" - platform: modbus_controller modbus_controller_id: heru register_type: coil address: 4 name: "ventilation_alarm_reset" - platform: modbus_controller modbus_controller_id: heru register_type: coil address: 2 name: "ventilation_boost_mode" - platform: modbus_controller modbus_controller_id: heru register_type: coil address: 1 name: "ventilation_overpressure_mode" - platform: modbus_controller modbus_controller_id: heru register_type: coil address: 0 name: "ventilation_unit_on" select: - platform: modbus_controller name: "ventilation_boost_speed" address: 25 value_type: U_WORD optionsmap: "Høy": 4 "Lav": 3 - platform: modbus_controller name: "ventilation_electric_heater_connected" address: 50 value_type: U_WORD optionsmap: "Tilkoblet": 1 "Frakoblet": 0 sensor: - platform: modbus_controller modbus_controller_id: heru name: "ventilation_outdoor_temperature" register_type: read address: 1 value_type: S_WORD unit_of_measurement: "°C" device_class: temperature accuracy_decimals: 1 filters: - multiply: 0.1 - or: - throttle: 30min - delta: 2.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_supply_air_temperature" register_type: read address: 2 value_type: S_WORD unit_of_measurement: "°C" device_class: temperature accuracy_decimals: 1 filters: - multiply: 0.1 - or: - throttle: 30min - delta: 2.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_exhaust_air_temperature" register_type: read address: 3 value_type: S_WORD unit_of_measurement: "°C" device_class: temperature accuracy_decimals: 1 filters: - multiply: 0.1 - or: - throttle: 30min - delta: 2.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_waste_air_temperature" register_type: read address: 4 value_type: S_WORD unit_of_measurement: "°C" device_class: temperature accuracy_decimals: 1 filters: - multiply: 0.1 - or: - throttle: 30min - delta: 2.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_heat_recovery_wheel_temperature" register_type: read address: 6 value_type: S_WORD unit_of_measurement: "°C" device_class: temperature accuracy_decimals: 1 filters: - multiply: 0.1 - or: - throttle: 30min - delta: 2.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_current_supply_fan_speed" register_type: read address: 26 value_type: S_WORD unit_of_measurement: "rpm" filters: - or: - throttle: 30min - delta: 50.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_current_exhaust_fan_speed" register_type: read address: 27 value_type: S_WORD unit_of_measurement: "rpm" filters: - or: - throttle: 30min - delta: 50.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_current_heating_power" register_type: read address: 28 value_type: S_WORD unit_of_measurement: "W" filters: - multiply: 6.6667 - or: - throttle: 30min - delta: 5.0 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_current_heat_cold_recovery_power" register_type: read address: 29 value_type: S_WORD unit_of_measurement: "%" filters: - multiply: 0.3921569 - or: - throttle: 30min - delta: 5.0 number: - platform: modbus_controller modbus_controller_id: heru name: "ventilation_temperature_setpoint" register_type: holding address: 1 value_type: S_WORD unit_of_measurement: "°C" min_value: 15 max_value: 30 binary_sensor: - platform: modbus_controller modbus_controller_id: heru name: "ventilation_exhaust_fan_alarm" register_type: discrete_input address: 21 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_exhaust_filter_alarm" register_type: discrete_input address: 23 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_filter_timer_alarm" register_type: discrete_input address: 24 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_freeze_alarm" register_type: discrete_input address: 12 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_freeze_protection_a_level" register_type: discrete_input address: 26 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_freeze_protection_b_level" register_type: discrete_input address: 25 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_low_rotor_temperature_alarm" register_type: discrete_input address: 14 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_low_supply_alarm" register_type: discrete_input address: 13 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_supply_filter_alarm" register_type: discrete_input address: 22 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_pulser_alarm" register_type: discrete_input address: 19 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_rotor_alarm" register_type: discrete_input address: 10 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_startup_1st_phase" register_type: discrete_input address: 27 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_startup_2nd_phase" register_type: discrete_input address: 28 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_supply_fan_alarm" register_type: discrete_input address: 20 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_temp_sensor_open_circuit_alarm" register_type: discrete_input address: 17 - platform: modbus_controller modbus_controller_id: heru name: "ventilation_temp_sensor_short_circuit_alarm" register_type: discrete_input address: 18
    2 poeng
  4. Denne lille rakkeren har gjort at smarthuset mitt har fungert svært dårlig i et par uker nå! 😞 Vi rakk å gå inn, ta av oss yttertøy og sette oss i sofaen før lyset på stua slo seg på! Utrolig irriterende, særlig når huset har fungerte relativt problemfritt i 7 år! Så hvordan fant jeg synderen, lurer du da sikkert på? 😉 Det hele startet rundt juletider. Det ble merkbart tregere respons på kommandoer, særlig på lys. Prøvde selvsagt de vanlige tingene, som å restarte HomeSeer-serveren, installere de siste Ubuntu-patchene, restarte RasberryPi som Z-wave USB-pinnen kjører på, osv, men ingenting hjalp. Noen dager kunne det fungere "ok" og andre ganger helt i sirup. Visste liksom ikke helt hvor jeg skulle begynne feilsøkingen og med lite ledig tid så ble det egentlig ikke gjort stort med det på et par uker. En dag oppdaget jeg tilfeldigvis at en "pyntelampe" ikke lyste og den lot seg verken slå på med Z-wave eller ved å trykke på bryteren. Tenkte at bryteren trolig hadde gått i stykker og det slo meg at kanskje en del Z-wave-trafikk ble forsøkt rutet via den, så jeg tok en "remove bad node" i HomeSeer, slik at den ikke lengre skulle være en del av Z-wave-nettet. Men, det hjalp ikke. 😞 Et par uker senere satte jeg med ned for å feilsøke mer grundig. Jeg hadde sjekket litt logger og sånt tidligere, uten å se noe unormalt. Jeg benyttet selvsagt også @Moskus sin debug-guide og programvare: Men, det var heller ikke noe som skilte seg ut med mye trafikk der heller. For en del år siden kjøpte jeg Z-seer på tilbud, så jeg fyrte i gang den for å feilsøke og det ble fort klart at det var noe som ikke var som det skulle! Hver gang jeg restartet programmet ble 2-4 tilfeldige noder markert utilgjengelige (rosa). Kjørte jeg en "test all", så var det også mange noder som den feilet å kommunisere med ("B=1" nederst på noden betyr at command eller respons mot noden feilet i testen): Jeg valgte en tilfeldig Fibaro Dimmer 2 (som hadde direkte rute til UZB1) og kjørte command og respons-test: Masse pakketap og utrolig lang tidsbruk! Noen noder var kjappe og ga ingen pakketap, klarte egentlig ikke å se noe mønster i hvem som funket og hvem som ikke gjorde det. Det virket også som den samme noden kunne funke fint i en ny test noen minutter etterpå. Min konklusjon var at min 7 år gamle UZB1-pinne trolig hadde begynte å feile og at jeg måtte bytte den ut. Jeg har en reserve UZB1 liggende et sted og vurderte å lete etter den og forsøke å overføre backup fra gammel til ny og se om det hjalp, evt kjøpe meg en ny USB-pinne (med 700-chipset, for å "oppgradere" litt). Jeg begynte å skrive en epost til HomeSeer-support, for å bare få en slags bekreftelse på at min teori trolig stemte og at det ikke var noe annet jeg hadde "oversett". Skulle avslutte eposten med å skrive at jeg ikke hadde gjort noen endringer i det siste, helt til jeg da kom på denne Swiid-bryteren som hadde feilet og som jeg hadde fjernet fra nettverket. Da slo det meg at jeg hadde ikke trukket ut støpslet til den lampen, så selv om den ikke lengre var en del av Z-wave nettverket mitt, så var det fortsatt "på lufta" og kanskje kunne skape støy. Før jeg sendte eposten gikk jeg derfor og trakk ut støpslet, bare for å i hvertfall ha utelukket det (og rent brannvernmessig er det sikkert også lurt å koble fra elektronikk som har sluttet å fungere som det skal, just in case...). Og vipps, så begynte lysbrytere, osv å fungere lynkjapt igjen! 😮 😄 Jeg tok en ny test med Z-seer: Og bare minutter etter jeg trakk ut kontakten så var ingen noder lengre "rosa" og bare et par termostater meldte om pakketap ("B=1")! 😄 Neste morgen slo alle lysene seg på før jeg rakk å gå ned trappa! Deilig! 😄 Så hensikten med denne posten er rett og slett og vise hvor "sårbart" et Z-wave-nett kan være. Det skal ikke mer enn én trøblete node til for å "ødelegge" for alle andre og gi en svært dårlig/elendig brukeropplevelse (og WAF!). Men å finne denne ene noden er ikke alltid så enkelt! 😞 Jeg var heldig at det var en Swiid på en lampe med støpsel, for da tok det null tid å koble den ut for å teste. Hadde det vært en dimmer-pille f.eks så hadde det vært vesentlig verre - ikke har jeg lov å koble de ut selv, det er mer knotete å komme til, og man er som regel litt mer avhengig av det lyset som drives av en slik sånn at man gjerne ikke ønsker å koble den fra heller (i hvertfall så lenge lyset fungerer da). Og å ta sikringen kurs for kurs vil også kunne gi uante følgefeil, ved at noder som mye trafikk normalt sett rutes igjennom blir koblet ut og man får andre typer feil pga rutingproblemer oppå det hele og vil få problemer med å skille det opprinnelige problemet fra evt rutingfeil pga utkobling av "friske" noder. Så har du et tregt/ustabilt Z-wave nett så ønsker jeg deg lykke til i feilsøkingen... 😛
    1 poeng
  5. For noen år siden gjorde min sønn (30) meg oppmerksom på Arduino. Jeg ble veldig glad for jeg hadde savnet den direkte kontakten med IO som jeg husket fra assembler-programmeringen av Z80 på 80 tallet. Nå kunne jeg ta oppigjen alt jeg hadde puslet med av elektronikk som 14 åring med loddebolt på pulten på gutterommet i barndomshjemmet (1974). Og med mikroprosessor ble alt bare kulere og lettere å lage ting som kunne brukes. Med smarthus kom behovet for å lage devicer som kunne snakke med nettet og leg landet etterhvert på ESP32 og MQTT. Men hver gang jeg skal lage noe, plukker jeg biter fra her og der; noe googler jeg, noe spør jeg ChatGPT om og noe finner jeg i gamle prosjekter jeg har liggende. Mange av eksemplene jeg finner på nettet er dessverre fulle av mye annen kode, -er for gamle eller bærer preg av en programmerer som skal brilljere med å skrive avansert (uleselig) kode. Jeg har lenge tenkt at jeg skulle lage noen små "LEGO klosser" med tematisk funksjonalitet slik at det ble lettere å sette sammen en løsning, og at koden var ferdig "destillert" til å limes inn i prosjektet. Om jeg nå slo dette sammen med tanken om å vise andre hvor inmari gøy dette er, og kanskje hjelpe noen med å komme i gang med dette, var det jo logisk å lage dette som et sett med små mini-guider her på forumet. Jeg ser jo at jeg selv går tilbake til prosjektene mine som jeg har postet her og henter kode fra dem (for det er så enkelt å finne 😉 ) så hvorfor ikke gjøre dette fra en litt egoistisk side også? Det jeg poster bli jo farget av hva jeg personlig foretrekker og jeg har valgt å holde meg innenfor en begrenset ramme som består av: ESP32 Dev Kit v1 MQTT I hver Guide tenker jeg å poste basiskoden (kun det du trenger for det tema miniguiden handler om) men også komplett kode for å kjøre dette over MQTT. Noen guider vil også inneholde biter av annen kode som eksempler på ting som kan være relevant , men dette ønsker jeg å holde separat slik at det ikke forurenser hovedtema. En liten forklaring på hvordan dette fungerer og hvordan det skal kobles må jo med, men når jeg selv leter etter kode blar jeg meg irritert forbi masse bla bla før jeg endelig finner KODEN som jeg trenger. Jeg tenker derfor at basis koden skal ligge HELT ØVERST slik at den blir lett å finne 🙂 Jeg syns det passer med en par "hvordan komme i dag" kapittler også slik at nybegynnerne ikke blir skremt vekk og dere andre får bare vente litt så kommer det mat for dere også 😉 Vi starter da med en "komme i gang" guide for ESP32: Og en for MQTT Og en der de er slått sammen: Senere er planen å komme med: ESP32/MQTT Viftestyring ESP32/MQTT Servostyring ESP32/MQTT Temperatur måling ESP32/MQTT Relee styring ESP32/MQTT Brytere (og debouncing) ESP32/MQTT Adresserbare LED ESP32/MQTT Måle Spenninger og lese Potensiometere ESP32/MQTT Steppermotorer ESP32/MQTT Store strømmer lydløst med MOS-Fet MQTT og HomeSeer (mscMQTT) ESP32/MQTT Strømforskyninger ESP32/MQTT Utstyr for prototyping (og prototype bygging)
    1 poeng
  6. Home Assistant har også bilder som en kan legge UI på. Men i utgangspunktet er det "kort" som er den enkle måten å lage det på. De fleste tror jeg løser dette med å installere pyscript modulen. Da kan en lage rutinene i python. https://hacs-pyscript.readthedocs.io/en/stable/overview.html Jeg tror nok du går på en liten blemme med å introdusere enda et nytt verktøy i automatiseringen istedenfor å sette seg inn i hvordan modbus konfigureringen virker i HA. Men det er jo bare min mening. Uanz, du får det nok til med node-red også.
    1 poeng
  7. Jeg kjører kun Node-Red, og er fornøyd med det. Jeg bruker modbus TCP også mot en vann/vann varmepumpe, funker helt fint det.
    1 poeng
  8. Jeg endrer stadig på dette og har tatt med mulighet for å hente strømpris fra Tibber. Skriptet velger selv hvor den skal hente prisen i fra, men hvis dette gjøres feil, kan jeg slå av kildene med brytere i UI. from datetime import datetime,timedelta import holidays YEAR = datetime.today().year NOR_HOLIDAYS = holidays.NO(years=[YEAR, YEAR+1]) state.persist('pyscript.total_pris_for_strom', default_value=0, default_attributes={"unit_of_measurement":"NOK"}) state.persist('pyscript.snittpris_for_strom', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.spart_paa_strom', default_value=0, default_attributes={"unit_of_measurement":"NOK"}) state.persist('pyscript.strompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.totalstrompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.nettleie', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.stromstotte', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.spotpris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.gjennomsnittlig_strompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.peak_strompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.offpeak_1_strompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.offpeak_2_strompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.hoyeste_strompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) state.persist('pyscript.laveste_strompris', default_value=0, default_attributes={"unit_of_measurement":"NOK/kWh"}) @time_trigger("cron(59 * * * *)") def akkumulere_stromkostnad(): p = round(float(pyscript.totalstrompris) * float(sensor.estimated_hourly_consumption) + float(pyscript.total_pris_for_strom), 2) pyscript.total_pris_for_strom = p if float(sensor.consumption_thisday) > 0: pyscript.snittpris_for_strom = round(float(pyscript.total_pris_for_strom) / float(sensor.consumption_thisday), 4) pyscript.spart_paa_strom = round(float(sensor.consumption_thisday) * (float(pyscript.gjennomsnittlig_strompris) - float(pyscript.snittpris_for_strom)), 2) @time_trigger("cron(0 0 * * *)") def nullstille_stromkostnad(): pyscript.total_pris_for_strom = 0 @time_trigger("cron(0 * * * *)") @state_trigger("input_button.oppdater_strompris") def strompris(): #state.set("pyscript.strompris", new_attributes={}) grid_night = float(input_number.nettleie_natt) / 100.0 grid_day = float(input_number.nettleie_dag) / 100.0 additional_costs = float(input_number.paslag_strom) / 100.0 entso_valid = False if sensor.average_electricity_price_today.prices is not None and len(sensor.average_electricity_price_today.prices) >= 48: ld = datetime.strptime(sensor.average_electricity_price_today.prices[47]["time"], "%Y-%m-%d %H:%M:%S%z") if datetime.now() < ld.replace(tzinfo=None): entso_valid = True if input_boolean.strompriskilde_tibber == 'on' and sensor.energy_price_gabriel_edlands_veg_16.tomorrow_valid == True: pyscript.strompris.updatetime = datetime.now().isoformat() pyscript.strompris.source = "Tibber" l = [] for sourceprice in sensor.energy_price_gabriel_edlands_veg_16.raw_today + sensor.energy_price_gabriel_edlands_veg_16.raw_tomorrow: pr = {} d = datetime.strptime(sourceprice["time"], "%Y-%m-%dT%H:%M:%S.000%z") pr["start"] = d.isoformat() pr["end"] = (d + timedelta(hours=1)).isoformat() pr["spotprice"] = round(float(sourceprice["total"]) - float(additional_costs), 4) pr["gridprice"] = round(grid_day if is_peak(d) else grid_night, 4) pr["payback"] = round(payback(float(pr["spotprice"])), 4) pr["totalprice"] = round(float(pr["spotprice"]) + float(pr["gridprice"]) + float(additional_costs) - float(pr["payback"]), 4) l.append(pr) pyscript.strompris.prices = l elif input_boolean.strompriskilde_nordpool == 'on' and sensor.nordpool.tomorrow_valid == True: pyscript.strompris.updatetime = datetime.now().isoformat() pyscript.strompris.source = "Nordpool" l = [] for sourceprice in sensor.nordpool.raw_today + sensor.nordpool.raw_tomorrow: pr = {} d = sourceprice["start"] pr["start"] = d.isoformat() pr["end"] = (d + timedelta(hours=1)).isoformat() pr["spotprice"] = round(float(sourceprice["value"]), 4) pr["gridprice"] = round(grid_day if is_peak(d) else grid_night, 4) pr["payback"] = round(payback(float(pr["spotprice"])), 4) pr["totalprice"] = round(float(pr["spotprice"]) + float(pr["gridprice"]) + float(additional_costs) - float(pr["payback"]), 4) l.append(pr) pyscript.strompris.prices = l elif input_boolean.strompriskilde_entsoe == 'on' and entso_valid == True: pyscript.strompris.updatetime = datetime.now().isoformat() pyscript.strompris.source = "Entso-e" l = [] for sourceprice in sensor.average_electricity_price_today.prices: pr = {} d = datetime.strptime(sourceprice["time"], "%Y-%m-%d %H:%M:%S%z") pr["start"] = d.isoformat() pr["end"] = (d + timedelta(hours=1)).isoformat() pr["spotprice"] = round(float(sourceprice["price"]), 4) pr["gridprice"] = round(grid_day if is_peak(d) else grid_night, 4) pr["payback"] = round(payback(float(pr["spotprice"])), 4) pr["totalprice"] = round(float(pr["spotprice"]) + float(pr["gridprice"]) + float(additional_costs) - float(pr["payback"]), 4) l.append(pr) pyscript.strompris.prices = l price_sum = 0.0 peak_sum = 0.0 offpeak1_sum = 0.0 offpeak2_sum = 0.0 high = -1000 low = 1000 for sourceprice in pyscript.strompris.prices: if datetime.now() >= datetime.fromisoformat(sourceprice["start"]).replace(tzinfo=None) and datetime.now() < datetime.fromisoformat(sourceprice["end"]).replace(tzinfo=None): pyscript.strompris = round(float(sourceprice["totalprice"]), 4) pyscript.totalstrompris = round(float(sourceprice["totalprice"]), 4) pyscript.nettleie = round(float(sourceprice["gridprice"]), 4) pyscript.stromstotte = round(float(sourceprice["payback"]), 4) pyscript.spotpris = round(float(sourceprice["spotprice"]), 4) if datetime.now().day == datetime.fromisoformat(sourceprice["start"]).day: price_sum += sourceprice["totalprice"] if datetime.fromisoformat(sourceprice["start"]).hour < 8: offpeak1_sum += sourceprice["totalprice"] elif datetime.fromisoformat(sourceprice["start"]).hour < 20: peak_sum += sourceprice["totalprice"] else: offpeak2_sum += sourceprice["totalprice"] if high < sourceprice["totalprice"]: high = sourceprice["totalprice"] if low > sourceprice["totalprice"]: low = sourceprice["totalprice"] pyscript.gjennomsnittlig_strompris = round(float(price_sum) / 24.0, 4) pyscript.peak_strompris = round(float(peak_sum) / 12.0, 4) pyscript.offpeak_1_strompris = round(float(offpeak1_sum) / 8.0, 4) pyscript.offpeak_2_strompris = round(float(offpeak2_sum) / 4.0, 4) pyscript.hoyeste_strompris = round(float(high), 4) pyscript.laveste_strompris = round(float(low), 4) def is_peak(t : datetime): if t.isoweekday() >= 6 or t.hour <= 5 or t.hour >= 22 or t.date() in NOR_HOLIDAYS: return False else: return True def payback(spot : float): return max((spot - 0.9125) * 0.9, 0.0)
    1 poeng
  9. Snippet litt fra configen din. da jeg hadde noen spørsmål rundt hvordan du har bygget opp configen. I modbus config dokumentasjonen så viser de et oppsett lignende det jeg har brukt under her. Dette er et Heru S160ec anlegg hvor det meste fungerer, men "climates" ble feil etter at heru ga ut 1.10 firmware som endrer skalering på temperatur innganger (input registers), men ikke utganger (holding reister). Det er et sidespor til spørsmålet, men for å løse dette problemet tenkte jeg å sette opp et enkelt setpunkt som du har gjort med "number", men da ser jeg at du har bygget det opp veldig ulikt min config med "modbus_controller"/platform. Dette med platform og modbus hvor finner jeg dokumentasjon på måten du har løst dette på så jeg får lest litt om dette evnt har du en enkel forklaring på hvordan det henger sammen? Jeg er rimelig lost i oppsett av home assistant så det er mulig jeg gjør ting helt feil i utgangspunktet her 😛 Configen min er noen år gammel også så mulig noe av det er en utdatert måte å gjøre det på. Edit: Da fant jeg ut at det var en egen komponent knyttet til ESPn dere bruker så da får jeg gruble videre på min løsning som bruker modbus tcp direkte 🙂 https://esphome.io/components/modbus modbus: - name: hub1 type: tcp host: 10.0.0.11 port: 502 sensors: - name: Utetemperatur unit_of_measurement: °C slave: 1 address: 1 input_type: input unique_id: 400 scale: 0.1 precision: 1 - name: Tilluftstemperatur unit_of_measurement: °C slave: 1 address: 2 input_type: input unique_id: 401 scale: 0.1 precision: 1 - name: Fraluftstemperatur unit_of_measurement: °C slave: 1 address: 3 input_type: input unique_id: 402 scale: 0.1 precision: 1 - name: Avkasttemperatur unit_of_measurement: °C slave: 1 address: 4 input_type: input unique_id: 403 scale: 0.1 precision: 1 - name: Etter varmegjenvinner unit_of_measurement: °C slave: 1 address: 6 input_type: input unique_id: 404 scale: 0.1 precision: 1 - name: Filter tid til skifte unit_of_measurement: dager slave: 1 address: 19 input_type: input unique_id: 405 - name: Tilluftsvifte unit_of_measurement: '%' slave: 1 address: 24 input_type: input unique_id: 406 - name: Fraluftsvifte unit_of_measurement: '%' slave: 1 address: 25 input_type: input unique_id: 407 - name: Varmebatteri unit_of_measurement: '%' slave: 1 address: 28 scale: 0.3921568 input_type: input unique_id: 500 - name: Gjenvinner unit_of_measurement: '%' scale: 0.392156 slave: 1 address: 29 input_type: input unique_id: 408 - name: Setpunkt økonomi unit_of_measurement: °C slave: 1 address: 0 input_type: holding unique_id: 409 - name: Setpunkt comfort unit_of_measurement: °C slave: 1 address: 1 input_type: holding unique_id: 410 - name: heater type slave: 1 address: 65 input_type: holding unique_id: 417 - name: heater enabled slave: 1 address: 66 input_type: holding unique_id: 418 switches: - name: "Heater" slave: 1 address: 66 command_on: 1 command_off: 0 write_type: holding scan_interval: 6 verify: input_type: holding address: 66 state_on: 1 state_off: 0 - name: "Boost" slave: 1 address: 2 command_on: 1 command_off: 0 write_type: coil scan_interval: 6 verify: input_type: coil address: 2 state_on: 1 state_off: 0 climates: - name: "Setcomfort" address: 2 input_type: input max_temp: 35 min_temp: 15 offset: 0 precision: 1 scale: 1 target_temp_register: 1 temp_step: 1 temperature_unit: °C unique_id: 419 template: - sensor: - name: "varmebatteri_effekt" unit_of_measurement: W state: "{{ states('sensor.varmebatteri') | int * 12 }}" - name: "virkningsgradtil" unit_of_measurement: '%' state: "{{ (((states('sensor.etter_varmegjenvinner') | int - states('sensor.utetemperatur') | int ) / (states('sensor.fraluftstemperatur') | int - states('sensor.utetemperatur') | int )) * 100)|round(1) }}" - name: "virkningsgradfra" unit_of_measurement: '%' state: "{{ (((states('sensor.fraluftstemperatur') | int - states('sensor.avkasttemperatur') | int ) / (states('sensor.fraluftstemperatur') | int - states('sensor.utetemperatur') | int )) * 100)|round(1) }}"
    1 poeng
  10. Home Assistant har kalender og oppgaveliste. I kalender legger jeg inn ferie slik at varme og lys styres riktig. I tillegg har jeg laget en trykknapp i HA for å opprette oppgaver over det jeg ikke bør glemme før avreise. I januar utgaven av HA (2024.01) er det lagt til tidspunkt for når en oppgave skal være ferdig og dette bruker jeg nå slik at jeg henter avreise fra kalender og setter "due_datetime". alias: Ferieoppgaver description: "" trigger: - platform: state entity_id: - input_button.opprett_ferieoppgaver condition: [] action: - service: todo.add_item data: item: Fyll vann i sluk på bad og vaskerom due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=10)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Ta ut søppel due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=10)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Lad batteri på gardiner due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(days=3)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Sjekk hagemøbler due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(days=3)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Sjekk mat i kjøleskap due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=10)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Stopp post og reklame due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(days=5)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Klipp plen due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(days=1)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Ta inn nøkler til utekraner due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=10)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Stopp avis due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(days=5)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Steng krane til vaskemaskin due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=3)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Steng krane til oppvaskmaskin due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=3)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Stopp klima kl 1500 i Golf due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(days=1)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Tøm vannbeholder på avfukter due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=10)).isoformat() }} target: entity_id: todo.ferie - service: todo.add_item data: item: Sjekk låser på glassdører due_datetime: >- {{ (as_datetime(state_attr('calendar.ferie', 'start_time'))-timedelta(hours=10)).isoformat() }} target: entity_id: todo.ferie mode: single
    1 poeng
Vinnerlisten er satt til Oslo/GMT+02:00
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.