Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 25. jan. 2021 i alle områder
-
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.4 poeng
-
4 poeng
-
Jeg savnet den gamle forbruksmåleren på kjøkkenveggen som viser strømforbruket. Selv om jeg kan sjekke forbruket som leses via HAN porten via telefonen/nettside, så var ikke dataene like tilgjengelige. Har derfor laget en prototype med hjelp av en nodemcu, neopixel LED-ring og en 0.96 tommers OLED skjerm. Hver LED illustrer 1kW i strømtrekk. Antall watt vises på første linje. Spotpris for aktuell time blir hentet fra Tibber APIet og vises i andre linje. Estimert kostnad per time med nåværende strømtrekk inkluderer nettleiedelen på 42,61øre/kWh til BKK. Oppdateringsfrekvensen er hvert 2.sekund (hver gang AMS måleren sender ut "Act_Pow_P_Q1_Q4"). Backend systemer består av følgende: Raspberry Pi leser modbus til USB adapter er koblet til HAN porten ved hjelp av test_rx / han-port-1.15 nevnt i "Lesing av HAN - The Easy Way (TM) - WIP" tråden. Output fra test_rx blir matet til MQTT ved hjelp av et python-script. Node-Red henter spotpris fra Tibber i starten av hver time og sender til MQTT. NodeMCU heter dataene fra MQTT kjører beregninger på kostnad og viser dette på OLED-skjermen og via neopixlene. Todo: Printe ut et nytt kabinett med høy WAF slik at fruen blir glad. Prototypen ble tegnet i en fei i går kveld. Lage presence detection på boksen slik at OLED skjermen ikke blir brent ut, alternativt bytte ut skjermen (stor e-paper/e-ink skjerm står på ønskelisten). Forsøke å skrive om koden til hente sanntidsforbruk direkte fra Tibber APIet slik at andre kan lage sitt eget watt-o-meter ved hjelp av en Nodemcu/ESP uten noe annet enn en Tibber pulse. Om noen vet om noe kode som henter ut sanntidsmålingene fra tibber og som kan kjøres på en esp/nodemcu så send meg gjerne i den retningen. PS: Første post på forumet. Takk til alle som er aktive her, dere har hjulpet meg i mange prosjekter uten at dere har visst om det. (F.eks "Backspace" som inspirerte meg til å gjøre Mitsubishi varmepumpen smart ved hjelp av Nodemcu/SwiCago prosjektet, Moskus sin visdom og alle dere andre). Edit:26.01.2021: Byggetråd her:3 poeng
-
Evt knappen «poll hub for changes» på root-device til huben.2 poeng
-
2 poeng
-
Se: https://forums.homeseer.com/forum/audio-video-and-infra-red-ir-plug-ins/audio-video-and-infra-red-ir-discussion/harmony-hub-rien-du-pre/1279205-special-for-harmony-hub-users-to-move-to-meiharmonyhub1 poeng
-
Har du krysset av for «use devices» i plugin settings? Ser default poll for nye devicer er 1 døgn, prøvd å sette ned den?1 poeng
-
Sjekk om du har fått en ny device, eller først sjekk om du har kontakt mellom hub'en og HomeSeer. Burde ikke være særlig delay på den med MeiHarmony.1 poeng
-
Hvis løsningen på Ikea-pære-problemer er å bruke Ikea-hub'en, så er det jo ikke et særlig mye håp. Altså generelt, for menneskeheten.1 poeng
-
Hæ?! Du kan vel gjøre det fra mobilen nå? Dvs. både å oppdatere og syncronisere mot serverne? Jepp. Som sagt. Ligger de som en Device som du kan kontrollere individuelt i appen?1 poeng
-
ENDELIG har Smarter reservekanner på lager ! (Har ventet på det i årevis...) https://smarter.am/collections/accessories/products/carafe1 poeng
-
1 poeng
-
Og forresten, dette krever en write-up i sin egen tråd! VI VIL HA DETALJER!1 poeng
-
Hei! Har kjøpt meg en https://www.elektroimportoren.no/namron-z-wave-4-kanaler-fjernkontroll/4512711/Product.html Fant ingen config til zwcfg slik at jeg kunne bruke zwave.scene_activated, så laget en, denne gjør så man kan bruke alle 12 knappene til og aktivere scener/automatiseringer. <CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="4" innif="true" scenecount="12"> <Instance index="1" /> <Value type="int" genre="system" instance="1" index="0" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="1" label="Scene 1 On" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="2" label="Scene 1 Off" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="3" label="Scene 2 On" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="4" label="Scene 2 Off" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="5" label="Scene 3 On" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="6" label="Scene 3 Off" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="7" label="Scene 4 On" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="8" label="Scene 4 Off" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="9" label="Scene 5 On" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="10" label="Scene 5 Off" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="11" label="Scene 6 On" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> <Value type="int" genre="user" instance="1" index="12" label="Scene 6 Off" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" /> </CommandClass>1 poeng
-
@Fermate Fick du någonsin till din ELKO-Dimmer som blinkade vitt att fungera? Jag råkade ut för samma sak men löste det genom att formatera mitt micro SD-kort med "FAT 32" och sedan lägga på "ELKODL001.bin" och "elko.ebl" i roten. När jag satte i kortet nu så laddade den firmware. Sedan följde jag instruktionerna om att trycka in dimmerknappen och tryckbrytaren samtidigt varefter den uppdaterade zigbee. Jag kan inte se om jag fått nya versioner då jag använder Homey som hemautomatisering och den visar inte versionerna på Elkodimmern i appen. Så länge Micro-SD-kortet var formaterat med "FAT" filsystem kunde jag inte lösa problemet med att dimmern var död och bara blinkade vitt. Notera också att jag använder Micro SD-kort och inte Micro SDHC. Vh Marcus1 poeng
-
Det ante meg at det alltid var en løsning, men heldigvis bestilte jeg før jeg sjekket. Dream Machine Pro var for fristende1 poeng
-
Bestilt meg en Unifi Dream Machine Pro. Erstatter en Unifi security gateway (legges ut på finn), pluss unify controller og unifi video controller som kjører på hus-ubuntu-server. Utløsende årsak er at OpenHAB 3 skal kjøres på Java 11, mens Unifi-programvaren henger igjen på Java 8, så noe måtte gjøres for å planlegge hopp fra OpenHAB 2.5 til 3.1 poeng
-
Man angrer definitivt på den sparte hundrelappen når man må frem med den lange stigen, det blåser pinnjævler, er godt under ti minus og det striregner.. ..føles sånn omtrent. Uansett hvilken dings som må fikses.1 poeng
-
Veldig enig, synes Ikeapærene er ustabile som fy i forhold til Hue-pærene som bare virker. Litt lei av å fly innom Ikea for å bytte pærer etterhvert.1 poeng
-
Sikker på at det ikke er DeConz som er bukkebæsj ? 🤣 Jeg gikk bort fra den og til Ikea sin Gateway fordi den aldri funket til noe som helst 😛0 poeng
-
Remote Desktop, TeamViewer eller VNC? Påkrevd på alle headless windows-maskiner. Nå kan skru på XMPP selv i appen, trenger ikke styre så mye med det. Men hvis du ikke har gjort det, så må det gjøres nå ja.0 poeng
-
Problemet med ikea pærer (men ikke annet utstyr som brytere og led drivere) er at de er en tanke mer pest og plage enn alternativene. Når de detter ut av nettet for ørtene gang så går de etter hvert gjennom fasene irritasjon, #&#!!#%?, forbainna mannskit (eller søren og, som vi sier i sør) til du slutt røsker (ikke skrur) de ut av sokkelen en gang for alle. Da bryr du deg ikke lenger om de var billigere.0 poeng
Vinnerlisten er satt til Oslo/GMT+01:00