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

Vinnerliste

Populært innhold

Viser innholdet med mest poeng fra 03. sep. 2016 i alle områder

  1. Har testet å bruke ESP8266 (NodeMCU) sammen med en rotary encoder mot HS3 og en z-wave dimmer Aeon Labs fra Clas Ohlson. Det fungerer overraskende bra, jeg vil påstå så godt som ingen merkbar forsinkelse ved bruk, da sendes kommandoer via JSON. Planen er å bruke Elko sin løse hjul og deksel, sammen med en bakplate som passer i veggboksen for å få dette til å se helt vanlig ut. Jeg hadde håpet jeg kunne lese ut status av dimmeren via JSON og parse verdien på ESP8266 slik at jeg utifra det kunne sende on/off ved å trykke på rotary encoderen, men klarer ikke å finne ut hvordan jeg kan lagre JSON svaret jeg får fra HS i en string (der jeg har testet er kommentert ut i koden, nesten nederst). Hvis noen har en ide, så hyl ut Det virker slik det står, hentet litt kode herfra og derfra og skrevet noe selv #include <ArduinoJson.h> #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> int brightness = 0; // dim level int fadeAmount = 3; // how many points to increase/decrease dim level by for each step int switchState = 0; int switchPressed = 0; int lastDimLevel; double deviceHSValue; unsigned long currentTime; unsigned long loopTime; const int pin_A = 5; //NodeMCU D1 const int pin_B = 4; //NodeMCU D2 const int pin_SW = 0; //NodeMCU D3 unsigned char encoder_A; unsigned char encoder_B; unsigned char encoder_A_prev=0; const char* ssid = "SSID"; //SSID const char* password = "PASSCODE"; //Network passcode IPAddress ip(192, 168, 1, 204); //Set the desired IP address of the ESP IPAddress subnet(255, 255, 255, 0); IPAddress gateway(192, 168, 1, 1); void setup() { // Initializing serial port for debugging purposes Serial.begin(115200); delay(10); // Connecting to WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.config(ip, gateway, subnet); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); //Serial.println("WiF connected"); String s = WiFi.macAddress(); Serial.println(s); Serial.println(WiFi.macAddress()); // Printing the ESP IP address Serial.println(WiFi.localIP()); pinMode(pin_A, INPUT); pinMode(pin_B, INPUT); pinMode(pin_SW, INPUT); currentTime = millis(); loopTime = currentTime; } void loop() { HTTPClient http; HTTPClient httpOff; HTTPClient httpHSValue; currentTime = millis(); if(currentTime >= (loopTime + 5)){ // 5ms since last check of encoder = 200Hz encoder_A = digitalRead(pin_A); // Read encoder pins encoder_B = digitalRead(pin_B); if((!encoder_A) && (encoder_A_prev)){ // A has gone from high to low if(encoder_B) { // B is high so clockwise // increase the brightness, dont go over 255 if(brightness + fadeAmount <= 99) brightness += fadeAmount; Serial.println(brightness); String dimm = String(brightness); http.begin("http://192.168.1.61/JSON?request=controldevicebyvalue&ref=20&value="+dimm); //Set your HS server IP address and ref is device ID int httpCode = http.GET(); //http.writeToStream(&Serial); //Prints the JSON return to serial http.end(); } else { // B is low so counter-clockwise // decrease the brightness, dont go below 10 if(brightness - fadeAmount >= 10) brightness -= fadeAmount; Serial.println(brightness); String dimmOpp = String(brightness); http.begin("http://192.168.1.61/JSON?request=controldevicebyvalue&ref=20&value="+dimmOpp); //Set your HS server IP address and ref is device ID int httpCode = http.GET(); http.end(); } } encoder_A_prev = encoder_A; // Store value of A for next time loopTime = currentTime; // Updates loopTime } //Reads the Switch switchState = digitalRead(pin_SW); //Checks if the Switch has been pressed if (switchState == LOW) { switchPressed = 1; } if (switchState == HIGH & switchPressed == 1) { Serial.println("Bryter trykket inn"); httpOff.begin("http://192.168.1.61/JSON?request=controldevicebyvalue&ref=20&value=0"); //Set your HS server IP address and ref is device ID int httpCodeOff = httpOff.GET(); httpOff.end(); /*deviceHSValue = httpHSValue.begin("http://192.168.1.61/JSON?request=getstatus&ref=20"); int httpHSValueCode = httpHSValue.GET(); //JSON Parser setup StaticJsonBuffer<2000> jsonBuffer; //char json[] = char json[] = "{\"Name\":\"HomeSeer Devices\",\"Version\":\"1.0\",\"Devices\":{\"ref\":85,\"name\":\"Test dimmbar\",\"location\":\"Unknown\",\"location2\":\"Unknown\",\"value\":26,\"status\":\"26 °C\",\"device_type_string\":\"\",\"last_change\":\"\\/Date(1472668903085)\\/\",\"relationship\":0,\"hide_from_view\":false,\"associated_devices\":[],\"device_type\":{\"Device_API\":0,\"Device_API_Description\":\"No API\",\"Device_Type\":0,\"Device_Type_Description\":\"Type 0\",\"Device_SubType\":0,\"Device_SubType_Description\":\"\"},\"device_image\":\"\",\"UserNote\":\"\",\"UserAccess\":\"Any\",\"status_image\":\"images/HomeSeer/contemporary/Thermometer-00.png\"}}"; JsonObject& root = jsonBuffer.parseObject(json); if (!root.success()) { Serial.println("parseObject() failed"); return; } deviceHSValue = root["Devices"]["value"]; Serial.println("HS Verdi"); Serial.println(deviceHSValue); httpHSValue.writeToStream(&Serial); // Denne skulle jeg gjerne ha lagret slik at den kunne vært brukt istedenfor den manuelle "char json[]" som ligger ovenfor httpHSValue.end(); */ switchPressed = 0; lastDimLevel = brightness; } }
    1 poeng
  2. Jo, det er det sannsynligvis. De aller fleste forsterkere fungerer sånn at hvis de var på når strømmen ble kuttet, vil de være på når strømmen kobles til igjen. Men jeg har et kombinasjonsopplegg som bruker både Nexa og USB-UIRT: 1. Signal sendes fra nettsiden til Girder, som så (gjennom et j... langt LUA-skript som sjekker en bunke variabler og tar høyde for alle eventualiteter, med forsterker på eller av, strømming på eller av, nettradio på eller av, multisonelyd på eller av osv.) sender en ordre til EventGhost, som igjen sender det korrekte Nexa-signalet basert på hvilken sone det er snakk om (med et kortere Python-skript som gjør sonenummeret om til riktig plugg) for å slå på strømmen. De fleste forsterkerne i systemet står på når det kobles til strøm. 2. For unntakene har jeg en USB-UIRT som kjøres av Girder og to sekunder etter Nexa-signalet sender IR-signal med diskret på (for de aller fleste forsterkere finner man diskrete koder på http://files.remotecentral.com/library/3-1/index.html for eksempel så er Onkyo på stort sett denne koden: 0000 006c 0022 0002 0156 00ac 0016 0016 0016 0040 0016 0016 0016 0016 0016 0040 0016 0016 0016 0040 0016 0040 0016 0040 0016 0016 0016 0040 0016 0040 0016 0016 0016 0040 0016 0040 0016 0016 0016 0016 0016 0016 0016 0040 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0016 0040 0016 0040 0016 0016 0016 0040 0016 0040 0016 0040 0016 0040 0016 0040 0016 05cc 0156 0055 0016 0e5d 3. Enkelte forsterkere er så sære at hvis de har vært uten strøm for lenge (enkelte soner, som gjesterom kan jo stå ubrukt i noen måneder av gangen) vil de gå til en standard kilde når de startes, for eksempel FM-radio. Derfor har jeg tre sekunder etter forrige IR-signal (altså fem sekunder etter at tingen ble slått på med Nexa et IR-signal med riktig kildevalg (jeg bruker stort sett CD-inngangen, med analog ut fra Audigy-lydkort med kX-drivere som gir tre soner på hvert kort. Den store fordelen med USB-UIRT er at man da også kan sende volum opp og ned direkte til forsterkeren og ikke må justere det på signalkilden. Det kan gi uønskede resultater, for en del programmer vil gjøre at lydkortet sender ut overstyrt lyd ved fullt volum, og det er jo ikke noe gøy. Ellers har jeg jo som jeg vel nevnte i den første posten samlet alt av forsterkere på ett sted, dermed er det enkelt å kjøre USB-UIRT-utgangen gjennom en Xantech-blokk som splitter den til et nærmest uendelig antall IR-emittere ved hjelp av vanlige minijack Y-splittere på utgangene (Xantech-blokka er aktiv, det vil si at den har strøm inn, så den klarer å dele et vanlig linjesignal i mange flere en hvis man bare setter Y-splittere direkte på linjen fra USB-UIRT-en). Håper det ble noenlunde klart!
    1 poeng
  3. Takk for det! Det var det jeg hellet mot. Så da er det blitt sånn, med assorterte kanaler slått på i diverse rom:
    1 poeng
Vinnerlisten er satt til Oslo/GMT+01: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.