Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 27. jan. 2021 i alle områder
-
Dette er en på grensen til helt ubetydelig liten endring Jeg har et felt i Home Assistant som bildet nedenfor. Der kan jeg sette komforttemperatur i garasje som øker temperaturen såpass at det er levelig der. Og automasjonen ligger i at den slår seg av automatisk når jeg legger meg. Sånt må en ha for det blir bare glemt ellers. Men så til problemet: Hva er komforttemperatur? Det har vært greit med 17 grader når en bare putler med småting, men i går var det banning og frustrasjon over skruer som sitter fastrustet på bilen. Svetten haglet og til slutt ble frustrasjonen over varmen større enn frustrasjonen over bilen. Så da jeg endelig var ferdig med det jeg skulle gjøre i garasjen, var det rett til PC for dagens endring. Så hva gjorde jeg? Jo, skrudd ned "komfort" temperaturen. PS. Nederst i bildet er det et felt for telefonstatus. Vi bruker husets telefoner til å avgjøre om vi er hjemme eller borte. Men så er det slik at jeg bor sammen med et vasehåve. De andre valgene på telefonstatus er "Glemt hjemme" og "Glemt borte". Selvfølgelig.........6 poeng
-
3 poeng
-
Hun kan flere ganger i uken sitte i sofaen og lure fælt på kor mobilen er. Og så viser det seg at hun sitter på den 🤪 Jeg mistenker at det hadde blitt så mange varslinger at ingen brydde seg lenger.2 poeng
-
Nydelig! Du kan ikke legge inn en sensor på mobilen og en sensor på "vasehåve" og lage en varsling når avstanden mellom de to blir for stor?2 poeng
-
Skrev ferdig (for denne gang, tror jeg da akkurat nå) en mer generell regel i HABApp slik at jeg har Wallplugs programmerbar på klokkeslett og ta hensyn til oppvarmingstid for motorvarmere. Disse WallPluggene er plassert rundt om på gården og er en mix av zigbee og z-wave. For å få fruens motorvarmer til å skjønne konseptet "Helg" så ble den regelen sånn: Plasserte også ut diverse dingser jeg hadde liggende ubrukt som signal-routere på z-wave på strategiske steder. Nye zigbee WallPlugs ble også satt opp dær z-wave ikke rekker. 4-hopp-grensa på z-wave er og blir en begrensning for meg. Lagde nye sitemaps for timere og motorvarmer funksjon på WallPluggene (screenshots): Sitemaps er genialt, de er veldig kjapt å ta opp mobilen for å endre settinger i OpenHAP-Appen. Ikke porno, men funksjonell, også utenfor eget WiFi-nett.2 poeng
-
Hvis dette er et lys som alltid skal slåes på under bevegelse med samme dimme nivå så vil jeg anbefalle deg å bruke direkte assosiering for å slå på selve lyset og deretter bruke en flow for å slå det av igjen. Da vil du få en raskere og mer stabil trigger siden signalet vil gå direkte fra bevegelsesensoren til lyset og vil også fungere selv om kontrolleren (Homey) er nede. Hvis du vil prøve denne fremgangsmåten så må du først assosiere lyskilden med assosiasjons gruppe 2 på Fibaro sensoren. I tillegg må du forandre parameter 12 på Fibaro sensoren: 12. BASIC command class configuration fra 0 til 1 (only the BASIC ON command frame sent in Basic Command Class). På denne måten vil sensoren kun slå på lyset og ikke av som gjør at du får mer kontroll over når du vil slå av lyset via flows i Homey.1 poeng
-
https://www.aliexpress.com/item/1005001835233323.html Var billigere før jul, ser jeg.1 poeng
-
Dumpet borti et Python-bibliotek holidays som gjorde det ekstremt lett å få smarthuset til vite at det er helligdag. Installeres med 'pip install holidays' Jeg har en 'item' i OpenHAB som heter 'Helg', som er av eller på. Når det er på er huset i 'helgemodus", og det skal det også være på helligdager. Så da trengte jeg følgende lille Python-script #!/usr/bin/python import datetime import openhab import holidays openhab_url = 'http://minopenhabserver:8090/rest' openhab_client = openhab.openHAB(openhab_url) if datetime.date.today() in holidays.Norway(): openhab_client.get_item('Helg').state = 'ON' Kjører det via serveren sin crontab hver midnatt.1 poeng
-
Og sånn ble det seendes ut når en amatør som meg bruker HABApp med logging og bjeller på for å få SwitchItem "Helg" i OpenHAB: import HABApp, logging import datetime import holidays.countries.norway oh_helg_itemnavn = "Helg" class Helg(HABApp.Rule): def __init__(self): super().__init__() self.log = logging.getLogger('HABApp') self.log.info('Helg regel: startet') self.oppdater_oh_item() self.run_on_every_day(datetime.time(hour=0,minute=0), self.oppdater_oh_item) self.run_hourly(self.oppdater_oh_item) def oppdater_oh_item(self): hour = datetime.datetime.now().hour minute = datetime.datetime.now().minute if self.oh.item_exists(oh_helg_itemnavn): if datetime.date.today() in holidays.Norway(): self.oh.send_command(oh_helg_itemnavn, "ON") if hour == 0 and minute == 0: self.log.info("Helg regel: Jammen ble det helg igjen!") else: self.oh.send_command(oh_helg_itemnavn, "OFF") if hour == 0 and minute == 0: self.log.info("Helg regel: Nope! Atter en vanlig arbeidsdag.") else: self.log.error(f"Helg regel: OH Item {oh_helg_itemnavn} finnes ikke!") Helg()1 poeng
-
Det står iallfall i dokumentasjonen at den skal oppgi det. Så får vi bare regne med at den gjør det.1 poeng
-
Apex Smart Plug · Issue #3943 · dresden-elektronik/deconz-rest-plugin (github.com) Ser ut som om pluggen oppgir riktig divisor så da er det et smarthings problem. Og ser også at Datek og Deconz er på talefot så det blir nok god støtte i Deconz også hvis det ikke allerede er der (kunne i fra linken ovenfor ikke se at noe manglet .......)1 poeng
-
Hei. Harald her som jobber for Datek. Det er vi som har utviklet APEX Smart Plug, og jeg kan svare på spørsmål. Når vi sier at et er den sikreste så er det i hovedsak tre ting vi mener: - Den skrur seg av ved kontinuerlig for høyt strømforbruk - Den skrur seg av ved for høy interntemperatur - Den har termisk sikring I tillegg har den frostsikringsmodus, en setting for hvis den går offline som sikrer at den er på i valgfri % av tiden. Den er jo også 16A og er trygg å bruke på f.eks. vaskemaskiner. Sertifisert av Nemko og tilsvarende i Sverige, Finland og Danmark. Se https://www.datek.no/dv-cms/resources/home-smartplug-1.pdf for produktarket. Når det gjelder Smartthings og andre Huber, så er det de som må lage støtte for å vise riktig. Vi har designet vår Smart Plug for å være et wattmeter, og Zigbee attributten leser ut data som må deles med en divisor for å vise riktig i apper. Smartthings bruker mest sannsynlig feil divisor og derfor vises data feil.1 poeng
-
Byggetråd for forbruksmåler / display for lettere å visualisere strømforbruket i tilfelle noen har interesse av å lage noe lignende. Tips for videreutvikling og hjelp/kommentarer til kode blir satt pris på. Jeg skal få lagt opp flere bilder og beskrivelse av komponenter og koblingsdiagram. Backend oppsettet mitt bærer litt preg av at veien blir til mens du går. Det er ikke nødvendig å bruke både python-scriptet og Node-red, det går fint an å hente spotprisen via python , eller benytte seg av node-red for å lese modbus-til-usb adapteret som enkelte i "Lesing av HAN - The easy way" tråden har gjort. Men nåværende oppsett er stabilt, så jeg kommer ikke til å skrive det om enda. 1) Node-red blir brukt til å hente spotpris fra Tibber, inject-noden er et cron basert og trigges 2 ganger i timen (hvert 30 minutter, i tilfelle første trigger feiler). // Cron utrykket trigger en "Post to tibber" med følgende innhold: msg.payload = { "query" : "{viewer {homes {currentSubscription {priceInfo {current {total startsAt }}}}}}" }; msg.headers = { "Authorization" : "Bearer din-tibber-token-aabbccdd-1234", "Content-Type" : "application/json" }; return msg; 2) Funksjon "set spotpris as global variable": Setter spotprisen til en global variabel ("strompris") i node-red for bruk i en annen flow. // Lagrer/setter spotprisen fra Tibber i en global variabel som kan brukes i MQTT flow senere. var newMsg = {payload: msg.payload.data.viewer.homes[0].currentSubscription.priceInfo.current.total }; global.set("strompris",newMsg.payload); return newMsg; // Henter forbruksdata via MQTT på "ams/Act_Pow_P_Q1_Q4", // disse dataene kommer somsagt på influx line protocol format // hos meg. // Eksempel: "Act_Pow_P_Q1_Q4,name=Act_Pow_P_Q1_Q4 value=2047" // // Jeg ønsker kun verdien, så jeg splitter på '='. // Denne kombineres med spotprisen som blir hentet ut fra // global "strompris" variabel i node-red og sendes ut // til ny MQTT topic som NodeMCU/forbruksmåleren bruker. // Jeg brukte ';' som delimiter mellom power og spotpris. // Innholdet i "Combine AMS power and spotpris" funksjonen var values = msg.payload.split('='); var power = values[2]; var spotpris = global.get("strompris"); msg = {payload: power +";" + spotpris}; return msg; Forbruket leses via HAN porten fra AMS ved hjelp av test_rx og en modbus til USB adapter. Jeg har brukt følgende script fra brukeren Berland her på forumet (Håper det går greit å legger ut modifisert versjon her). I tillegg til å sende JSON til MQTT så ønsket jeg å sende influx line protocol syntax til MQTT for enkelt å sende til influxdb ved bruk samme python script/Node-red eller Telegraf. # Modified from https://www.hjemmeautomasjon.no/forums/topic/2873-lesing-av-han-the-easy-way-tm-wip/?do=findComment&comment=39623 import subprocess import paho.mqtt.client as mqtt import json import sys import requests from requests.exceptions import HTTPError # If the binary is still active for some reason, kill it subprocess.call("killall test_rx >/dev/null", shell=True) proc = subprocess.Popen(['./test_rx','-n'], stdout=subprocess.PIPE) def on_connect(client, userdata, flags, rc): pass def on_disconnect(client, userdata, rc=0): sys.exit(1) client = mqtt.Client() client.on_connect = on_connect client.on_disconnect = on_disconnect client.connect('mqttserver', 1883) print "Connected" cumulativejson = '' cumulativeInfluxLine = '' try: for line in iter(proc.stdout.readline, ''): line = line.rstrip() cumulativejson += line if line[-1:] == '}': try: amsJson = json.loads(cumulativejson) client.publish('power/ams', cumulativejson) for key in amsJson: value = amsJson[key] if isinstance(value, int) or isinstance(value, float): cleanValue = str(value).replace(" ","") influxLineData = '%(key)s,name=%(key)s value=%(cleanValue)s' % locals() mqttTopic = 'ams/' + key client.publish(mqttTopic, influxLineData) cumulativejson = '' except UnicodeDecodeError: # Sometimes we get something strange # on the serial line, just ignore it. cumulativejson = '' continue except Exception as e: print(e) proc.terminate() sys.exit(1) # Let systemd restart us Koden som kjøres på NodeMCUen kan også sees her: https://github.com/Olavae/mqtt-power-meter/blob/main/MqttPowerSpotMeter.ino // // Power usage display with current spot price using OLED and Neopixel. // Uses a NodeMCU board with wifi to recieve a single MQTT message on // the form powerUsage;spotprice using ';' as a delimiter/IFS then // splits the message into two variables to visualise them. // #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Adafruit_NeoPixel.h> // Following 4 are needed for SSD1306 oled display #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define PIXELPIN D3 // Datapin for neopixel #define NUMPIXELS 24 // Number of neopixels #define DELAYVAL 500 // Time (in milliseconds) to pause between pixels #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) //OLED display (Uses GPIO5 (D1) (SCL) and GPIO4 (D2) (SDA) as standard Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Neopixels / ws2812 compatible leds Adafruit_NeoPixel pixels(NUMPIXELS, PIXELPIN, NEO_GRB + NEO_KHZ800); // Update these with values suitable for your network. const char* ssid = "Your-Wifi-Network"; const char* password = "wifi-passphrase"; const char* mqtt_server = "10.0.0.5"; // Your MQTT broker // Set your variable for "nettleie" to your power company. const float nettleie = 42.61; // BKK nettleie variabel del, Price in øre. const char* powerPriceTopic = "strompris"; // Your MQTT topic where you publish "powerUsage;spotpris" const char* delimiter = ";"; WiFiClient espClient; PubSubClient client(espClient); unsigned long lastMsg = 0; #define MSG_BUFFER_SIZE (50) char msg[MSG_BUFFER_SIZE]; void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { char incomming[length]; for (int i=0; i<length; i++){ incomming[i] = (char)payload[i]; } // Split incomming message into Power and spot price with delimiter // First token (Power) char* incToken = strtok(incomming,delimiter); char* incommingPower = incToken; // Second token (Spot price) incToken = strtok(NULL,delimiter); char* incommingSpot = incToken; // Convert into easier to manage data types. long power = atol(incommingPower); float kronepris = atof(incommingSpot); int pris = round((kronepris*100)); // Go from Krone to øre. // Calculate price per hour based on current power usage float timepris = (((kronepris*100) + nettleie)*power)/100000; // Number of LEDS which will light up, round to nearest kW. int powerInt = (int)(round((float)(power/1000.0))); // Light up Neopixel, colours suits my normal power usage. // Green is OK ( power < 5kW ) // Yellow is hmm ( 5kW < power < 10kW ) // Red gets expensive fast ( Power > 10kW ) pixels.clear(); for(int i=0;i<powerInt;i++) { if (i<=4) { pixels.setPixelColor(i, pixels.Color(0,50,0)); } else if ((i >= 5) && (i <= 9)) { pixels.setPixelColor(i, pixels.Color(50,50,0)); } else if (i >= 10) { pixels.setPixelColor(i, pixels.Color(50,0,0)); } } pixels.show(); // Light up pixels // OLED display, 3 lines with medium/large text. // -------- // | Power | // | Spot | // | perHour| // -------- display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); display.setCursor(0,10); display.print(power); display.println(" W"); display.print(pris); display.println(" 0re"); // Fake a norwegian Ø, haven't gotten Adafruit_gfx to display non ascii chars. display.print(timepris); display.println(" kr/t"); display.display(); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Create a random client ID String clientId = "ESP8266Client-"; clientId += String(random(0xffff), HEX); // Attempt to connect if (client.connect(clientId.c_str())) { Serial.println("connected"); // ... and resubscribe client.subscribe(powerPriceTopic); // Topic where you publish your meter values } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup() { pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output Serial.begin(115200); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64 (Default address) can also be 0x3D Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } display.display(); delay(300); // Wait and show adafruit splashscreen, they provided a nice library // Clear the buffer display.clearDisplay(); setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); } Komponenter NodeMCU kompatibelt utviklerkort, mitt er basert på ESP8266, har ikke testet med ESP32 versjoner. NodeMCU bruker 3.3V, men gir deg 5V på VIN-pin om du benytter deg av USB-kontakten for å gi kortet strøm. Neopixel krever 5V. OLED skjerm bruker 3.3V. Neopixel WS2812b kompatibel ring. https://www.kjell.com/no/produkter/elektro-og-verktoy/arduino/tilbehor/luxorparts-adresserbar-rgb-led-ring-24x-led-p87933 SSD1306 0.96 tommers OLED display 128x64. 470 ohm motstand mellom NodeMCU og neopixel datapin. (Ligger loddet under krympestrømpen på bildene nedenfor). 7 koblingskabler. Kabinettboks (Ikke tegnet enda, kan legge med STL-fil for 3dprinting når jeg er fornøyd). Jeg var utålmodig og fant et sett fra Kjell & co som inneholdt OLED-skjermen og 24-leds-neopixel, mostander og koblingskabler. Det er rimeligere å kjøpe fra andre steder. Merk at settet ikke inneholder NodeMCU kortet som trengs. https://www.kjell.com/no/produkter/elektro-og-verktoy/arduino/arduino-pakke/playknowlogy-startpakke-for-arduino-eksperiment-p88211 Jeg har startet på arbeidet med å skrive om koden for å bruke websockets, (testet ulike bibliotek, men denne her virker mest lovende til nå. https://github.com/gilmaimon/ArduinoWebsockets) for å hente forbruket direkte fra Tibber APIet i håp om å lage et stand-alone display for dem som bruker Tibber pulse, men som ikke ønsker å kjøre noe backend systemer hjemme med MQTT oppsett. PS: Jord-kabel mellom SSD1306/OLED display og NodeMCU er brun, jeg slurvet her, men den er tegnet inn i rett farge (svart) i koblingsdiagrammet.1 poeng
Vinnerlisten er satt til Oslo/GMT+01:00