Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 04. des. 2021 i alle områder
-
Jeg tenkte å ta en kjapp wirte up på hvordan jeg har begrenset effektleddet med openHAB. Jeg ser at det skrives noe om PID andre steder men det ble for avansert for meg å sette meg inn i Før man begynner må man ha inn ActiveImportPower fra HAN-porten på en eller annen måte. Jeg bruker kortet jeg lagde i 2017/18 som blant annet @ArnieO har tatt til nye høyder. Først lagrer jeg alle verdier i InfluxDB for enkelhets skyld med følgende dette python-script. Det kjører som en service. # -*- coding: utf-8 -*- import random import time from datetime import datetime from paho.mqtt import client as mqtt_client from influxdb import InfluxDBClient broker = 'openhabian.localdomain' port = 1883 topic = "esp/ams/activeimportpower" client_id = f'python-ams-mqtt-influx-{random.randint(0, 1000)}' dbname = "ams" dbuser = "ams" dbpass = "ams" def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT Broker!") else: print("Failed to connect, return code %d\n", rc) # Set Connecting Client ID client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return client def subscribe(client: mqtt_client, dbclient: InfluxDBClient): def on_message(client, userdata, msg): print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic") store(dbclient, msg.payload.decode()) client.subscribe(topic) client.on_message = on_message def store(dbclient: InfluxDBClient, power): json_body = [ { "measurement": "activeimportpower", "time": datetime.now(), "fields": { "value": int(power) } } ] dbclient.write_points(json_body) def run(): dbclient = InfluxDBClient('localhost', 8086, dbuser, dbpass, dbname) client = connect_mqtt() subscribe(client, dbclient) client.loop_forever() if __name__ == '__main__': run() Deretter kalkulerer jeg gjeldende kWh-forbruk hver andre minutt med dette scriptet. Det kjører som en cron-jobb (*/2 * * * *). # -*- coding: utf-8 -*- import random import time from datetime import datetime from paho.mqtt import client as mqtt_client from influxdb import InfluxDBClient broker = 'openhabian.localdomain' port = 1883 topic = "esp/ams/avaragewh" client_id = f'python-avarage-wh-{random.randint(0, 1000)}' dbname = "ams" dbuser = "ams" dbpass = "ams" def connect_mqtt(): def on_connect(client, userdata, flags, rc): if rc != 0: print("Failed to connect, return code %d\n", rc) # Set Connecting Client ID client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return client def publish(client, dbclient): avarage = avarage_wh(dbclient) # If avarage is None we probably don't have enough data to calculate the avarage if avarage is None: return result = client.publish(topic, avarage) # result: [0, 1] status = result[0] if status != 0: print(f"Failed to send message to topic {topic}") def avarage_wh(dbclient): hour_start = str(datetime.now().replace(microsecond=0, second=0, minute=0)).replace(' ', 'T') result = dbclient.query(f"SELECT * FROM activeimportpower WHERE time >= '{hour_start}Z'") count = 0 sum = 0 try: for val in list(result)[0]: count += 1 sum += val['value'] except: return None return round(sum / count) def run(): dbclient = InfluxDBClient('localhost', 8086, dbuser, dbpass, dbname) client = connect_mqtt() publish(client, dbclient) client.disconnect() if __name__ == '__main__': run() Da får vi gjeldende kWh ut på mqtt-topic "esp/ams/avaragewh" som vi kan bruke i openHAB til å gjøre noen beslutninger med disse reglene: var high_kwh_threshold = 4800 // Turn off items if kWh is above this number var low_kwh_threshold = 4600 // Turn on items if kWh is below this number var min_current_w = 4500 // If we need to turn off items, turn off enough items so that the current watt usage is below this number var max_current_w = 6000 // If we can turn on items, turn on enough items so that the current watt usage is below this number rule "high kwh" when Item AMS_AvarageWh changed then // If the avarage is above 4800 kWh we need to bring the current usage below 4500w if ((AMS_AvarageWh.state as Number) > high_kwh_threshold) { var current_w = AMS_ActiveImportPower.state as Number // Turn off office if (current_w > min_current_w && OfficeHeat_Switch.state == ON) { OfficeHeat_Switch.sendCommand(OFF) current_w -= OfficeHeat_Electricmeterwatts.state as Number // Subtract current usage } // Turn off hallway if (current_w > min_current_w && (HallwayFloor_Thermostatmode.state as Number) == 1) { HallwayFloor_Thermostatmode.sendCommand(0) current_w -= HallwayFloor_Electricmeterwatts.state as Number // Subtract current usage } // Turn off bath room if (current_w > min_current_w && (BathRoomFloor_Thermostatmode.state as Number) == 1) { BathRoomFloor_Thermostatmode.sendCommand(0) current_w -= BathRoomFloor_Electricmeterwatts.state as Number // Subtract current usage } // Turn off living room if (current_w > min_current_w && LivingHeat_Switch.state == ON) { LivingHeat_Switch.sendCommand(OFF) current_w -= LivingHeat_Electricmeterwatts.state as Number // Subtract current usage } } end rule "low kwh" when Item AMS_AvarageWh changed then //logDebug("ams", "LOW KWH START") // If the avarage is below 4600 kWh we can start to bring the current usage up if ((AMS_AvarageWh.state as Number) < low_kwh_threshold) { var current_w = AMS_ActiveImportPower.state as Number // Turn on living room if (current_w < max_current_w && LivingHeat_Switch.state == OFF) { LivingHeat_Switch.sendCommand(ON) current_w += 1200 // Based on experience } // Turn on bath room if (current_w < max_current_w && (BathRoomFloor_Thermostatmode.state as Number) == 0) { BathRoomFloor_Thermostatmode.sendCommand(1) current_w += 800 // Based on experience } // Turn on hallway if (current_w < max_current_w && (HallwayFloor_Thermostatmode.state as Number) == 0) { HallwayFloor_Thermostatmode.sendCommand(1) current_w += 700 // Based on experience } // Turn on office if (current_w < max_current_w && OfficeHeat_Switch.state == OFF) { OfficeHeat_Switch.sendCommand(ON) current_w += 700 // Based on experience } } end Her er det en del tall jeg bare har tatt rett ut av luften. F.eks. så ønsker jeg at kWh holder seg under 4800. For å klare det har jeg gjettet på at effekten må under 4500w for å komme under 4800kWh dersom man har kommet over. Deretter når man har kommet under 4600kWh så gjetter jeg på at man kan slå på ting helt til man er på maks 6000w. Det er bare 4 aktører jeg har lagt inn (alle varmekildene) i min prioriterte rekkefølge. Her ser man hvordan scriptet har jobbet seg gjennom natten med VVB og oppvaskmaskin i sving: Her er når vi våknet i dag. Som man ser så er det ugunstig å gå inn i timen med høy effektbruk: Middagslagingen i går gikk bedre fordi da startet jeg tilfeldigvis på halv time: Her er mine beregninger opp mot hva nettleverandører mener. Ser greit ut med +- 2% avvik på det meste.1 poeng
-
Du må ha impulsbyter i andre enden. Endevender du har idag kan sikkert bygges om til impulsbryter, spørs hvor gammel og hvilken produsent det er.1 poeng
-
rule "high kwh" when Item TibberLiveAveragePower changed then // If the avarage is above 4800 kWh we need to bring the current usage below 4500w if ((TibberLiveAveragePower.state as Number) > 4800) { var current_w = TibberLiveAveragePower.state as Number // Turn off Stue if (current_w > 4500 && ZWave13ThermostatStueThermostatMode.state == 1) { ZWave13ThermostatStueThermostatMode.sendCommand(0) current_w -= ZWave13ThermostatStueMeterWatts.state as Number } // Turn off bad oppe if (current_w > 4500 && (ZWave14ThermostatBadOEtgThermostatMode.state as Number) == 1) { ZWave14ThermostatBadOEtgThermostatMode.sendCommand(0) current_w -= ZWave14ThermostatBadOEtgMeterWatts.state as Number } // Turn off barnerom oppe if (current_w > 4500 && (ZWave15TermostatBarneromOEtgThermostatMode.state as Number) == 1) { ZWave15TermostatBarneromOEtgThermostatMode.sendCommand(0) current_w -= ZWave15TermostatBarneromOEtgMeterWatts.state as Number } // Turn off Entre if (current_w > 4500 && ZWave17ThermostatGangUEtgSone1ThermostatMode.state == 1) { ZWave17ThermostatGangUEtgSone1ThermostatMode.sendCommand(0) current_w -= ZWave17ThermostatGangUEtgSone1MeterWatts.state as Number } // Turn off kjellergang if (current_w > 4500 && (ZWave16ThermostatGangUEtgSone2ThermostatMode.state as Number) == 1) { ZWave16ThermostatGangUEtgSone2ThermostatMode.sendCommand(0) current_w -= ZWave16ThermostatGangUEtgSone2MeterWatts.state as Number } // Turn off bad nede if (current_w > 4500 && (ZWave22BadUEtgThermostatMode.state as Number) == 1) { ZWave22BadUEtgThermostatMode.sendCommand(0) current_w -= ZWave22BadUEtgMeterWatts.state as Number } // Turn off vaskerom if (current_w > 4500 && (ZWave19ThermostatVaskeromThermostatMode.state as Number) == 1) { ZWave19ThermostatVaskeromThermostatMode.sendCommand(0) current_w -= ZWave19ThermostatVaskeromMeterWatts.state as Number } // Turn off Soverom1 if (current_w > 4500 && (ZWave21ThermostatSoverom1ThermostatMode.state as Number) == 1) { ZWave21ThermostatSoverom1ThermostatMode.sendCommand(0) current_w -= ZWave21ThermostatSoverom1MeterWatts.state as Number } // Turn off Soverom2 if (current_w > 4500 && (ZWave20ThermostatSoverom2ThermostatMode.state as Number) == 1) { ZWave20ThermostatSoverom2ThermostatMode.sendCommand(0) current_w -= ZWave20ThermostatSoverom2MeterWatts.state as Number } // Turn off Soverom3 if (current_w > 4500 && (ZWave18ThermostatSoverom3ThermostatMode.state as Number) == 1) { ZWave18ThermostatSoverom3ThermostatMode.sendCommand(0) current_w -= ZWave18ThermostatSoverom3MeterWatts.state as Number } // Turn off Varmtvannsbereder if (current_w > 4500 && (ZWave23PowerVVTSwitchBinary.state as Number) == ON) { ZWave23PowerVVTSwitchBinary.sendCommand(OFF) current_w -= ZWave23PowerVVTMeterWatts.state as Number } } end rule "low kwh" when Item TibberLiveAveragePower changed then //logDebug("ams", "LOW KWH START") // If the avarage is below 4600 kWh we can start to bring the current usage up to (max) 6000w if ((TibberLiveAveragePower.state as Number) < 4600) { var current_w = TibberLiveAveragePower.state as Number // Turn on stue if (current_w < 6000 && ZWave13ThermostatStueThermostatMode.state == 0) { ZWave13ThermostatStueThermostatMode.sendCommand(1) current_w += 2470 // Estimate 2470w for now } // Turn on bad oppe if (current_w < 6000 && (ZWave14ThermostatBadOEtgThermostatMode.state as Number) == 0) { ZWave14ThermostatBadOEtgThermostatMode.sendCommand(1) current_w += 925 } // Turn on barnerom oppe if (current_w < 6000 && (ZWave15TermostatBarneromOEtgThermostatMode.state as Number) == 0) { ZWave15TermostatBarneromOEtgThermostatMode.sendCommand(1) current_w += 489 } // Turn on entre if (current_w < 6000 && ZWave17ThermostatGangUEtgSone1ThermostatMode.state == 0) { ZWave17ThermostatGangUEtgSone1ThermostatMode.sendCommand(1) current_w += 605 } // Turn on kjellergang if (current_w < 6000 && ZWave16ThermostatGangUEtgSone2ThermostatMode.state == 0) { ZWave16ThermostatGangUEtgSone2ThermostatMode.sendCommand(1) current_w += 1327 } // Turn on bad nede if (current_w < 6000 && ZWave22BadUEtgThermostatMode.state == 0) { ZWave22BadUEtgThermostatMode.sendCommand(1) current_w += 526 } // Turn on vaskerom if (current_w < 6000 && ZWave19ThermostatVaskeromThermostatMode.state == 0) { ZWave19ThermostatVaskeromThermostatMode.sendCommand(1) current_w += 561 } // Turn on soverom1 if (current_w < 6000 && ZWave21ThermostatSoverom1ThermostatMode.state == 0) { ZWave21ThermostatSoverom1ThermostatMode.sendCommand(1) current_w += 741 } // Turn on soverom2 if (current_w < 6000 && ZWave20ThermostatSoverom2ThermostatMode.state == 0) { ZWave20ThermostatSoverom2ThermostatMode.sendCommand(1) current_w += 737 } // Turn on soverom3 if (current_w < 6000 && ZWave18ThermostatSoverom3ThermostatMode.state == 0) { ZWave18ThermostatSoverom3ThermostatMode.sendCommand(1) current_w += 822 } // Turn on Varmtvannsbereder if (current_w < 6000 && ZWave23PowerVVTSwitchBinary.state == OFF) { ZWave23PowerVVTSwitchBinary.sendCommand(ON) current_w += 3000 } } end1 poeng
-
Bruker Oh selv og har sett litt på dette, men jeg tror må legge meg på 5-10kw grensen. 5kw blir for trangt med 5 i familien og kun el oppvarming (varmekabler) Å kunne unngå fx at alle varmekablene er inne samtidigt, eller at de jobber i tandem uten at det kan bli for kaldt i enkelte rom. Der en ender opp med kabler som må ta igjenn det tapte over lang tid.1 poeng
-
En node (dvs. en dimmer, switch, etc) kan bare høre til ett nettverk. MEN: Du kan ha flere controllere på et nettverk. Du kan imidlertid kun ha én "master" controller, de andre blir secondary controllere. Så ja, det er mulig. Litt jobb å sette opp, og jeg er usikker på hvordan det vil kunne fungere med FutureHome eller om det i det hele tatt er mulig). Men teknisk sett er det mulig med Z-wave.1 poeng
-
HomeSeer, selvfølgelig. Men seriøst: Hjemmeautomasjon er mest snakk om smak og behag. Hvis Home Assistant funker for deg, så er det supert! Hvis ikke, så er det heldigvis mange andre alternativer.1 poeng
-
Termostater i ovner og gulv er gjerne lagd slik at de veksler mellom helt av og fullt på i intervaller. Og så er det gjennomsnittet over tid som bestemmer hvor mange kWh en ovn eller en kabel bruker. Så jeg vil si at det du ser er helt normalt. Jeg bruker Home Assistant og der har jeg lagd kurve og visning av effekt slik at det er snittet de siste 5 minutt som brukes. Synes det er mer informativt enn det du ser i Tibber appen.1 poeng
-
1 poeng
-
Ny aeotec Z stick 7 er på lager https://www.eldirekte.no/aeotec-z-stick-7/cat-p/c/p1500018439 Bestilte en for å teste. Edit: Brukte et par dager og fikk exludet + includet alle devicer til ny stick. Fikk alt tilsynelatende opp å gå, men var forferdelig ustabilt. Har 43 devicer (alle er z-waveplus, mye fibaro og heatit), ingen på batteri. Kjører Home assistant med ZwaveJs2MQTT Aeotec z-stick 5: ca. 75% av de snakket direkte med stick 25% har 1 "hop" Z-stick 7: ca. 25% snakker direkte med z-stick. 50% har 1 hop 15% har 2 hop 10% har 3 hop Prøvde med kort og lang usb kabel i raspberry pi.. samt å ha den midt i huset, like ustabbilt. Prøvde med all slags healing, og re-interview, men hjalp ingen ting. Testet også med siste firmware 7.15, og stick i PC med simplicity, den viser også ustabilt nettverk. Nei... det ble desverre tilbake til gamle Z-stick 5. Fikk det opp å gå med en gang. (etter ny runde med exclude/include prosessen..). Vil følge med firmware oppdateringer om det skjer mer utvikling på denne pinnen.1 poeng
Vinnerlisten er satt til Oslo/GMT+01:00