Actibus Skrevet 2. september 2016 Skrevet 2. september 2016 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; } } 2 Siter
Moskus Skrevet 3. september 2016 Skrevet 3. september 2016 Knall! En variabel for IPen til HomeSeer-serveren, så er det jo bare helt perfekt. (Et lite apropros: ESP8266 er bare Wifi-modulen, NodeMCU er selve produktet, altså Arduino-klonen med ESP8266 påmontert. Hvis jeg har forstått det riktig... ) 11 timer siden, Actibus skrev: 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 Jeg kan ikke "nok Arduino" til å være særlig til hjelp, men jeg bruker jo JSON-interfacet i WinSeer. Så hvis det er noe du trenger generelle svar på... Siter
Actibus Skrevet 5. september 2016 Forfatter Skrevet 5. september 2016 Prototype på gang, har demontert en mobil lader, type LG MCS-02ED den passer nesten perfekt inni dimmerboksen (GLE630), kuttet litt av 2 hjørner på kretskortet, loddet kabler på 230v inngangen og på 5v utgangen og inn på Vin på NodeMCU. Hvis man hadde brukt en ESP 12F som Fermate linker til her, så kunne man fått plass til den også inni boksen, men da må også sette inn en spenningsregulator, da den krever 3-3,6v. Har laget noen kretskort tidligere, så det hadde jo vært en tanke hvis jeg skulle hatt slike rundt i hele huset, å lage til kretskort med 230-5v og ESP12 og rotary kontroller på samme kortet, men tror det blir med tanken. Skal ha 3 nye dimmere i kjelleren, der blir det nok til at jeg bare setter rotary encoderen/dimmerhjulet i veggboksen og trekker signalkabler frem til en felles NodeMCU, så sant jeg får til å kjøre flere encodere på samme programmet (har ikke testet), da slipper man å mekke til 230v-5v inni boksen, noe elektrikeren antagelig ikke liker veldig godt.. 1 Siter
lilfire Skrevet 5. september 2016 Skrevet 5. september 2016 Ser bra ut. Litt skeptisk på mobil lader i veggen men. Ser lekkert ut med limet Siter
Actibus Skrevet 5. september 2016 Forfatter Skrevet 5. september 2016 Har mobilladerne tilkoplet 24/7 ellers i huset, så akkurat det ser jeg ikke på som noe problem, så lenge de er originale og ikke billige kina kopier, en slik sak trekker ikke mange mye strøm heller. Største problemet med noe slikt er vel at det nok ikke går helt under kategorien for godkjent elektrisk installasjon, så er nok bedre å ha kontrolleren et annet sted koblet til med vanlig støpsel, og heller trekke signalkabler fra veggboksene, evt om det finnes noen 5v power som passer i en veggboks.. Siter
lilfire Skrevet 6. september 2016 Skrevet 6. september 2016 Har vært på tanken selv, har jo laderne mine stående 24/7 men i en kontakt er det bra med luft og kjøling. Og mange ladere blir varme. så om man plasser dette inne i veggen hvor det ikke er mye luftrom kan varmen stige mye. Har selv kjøpt en Trunking box som fungerer fint. Siter
Actibus Skrevet 31. desember 2016 Forfatter Skrevet 31. desember 2016 Siden det nærmer seg ferdig med snekkerarbeid så tenkte jeg å komme litt videre med dette prosjektet. Dimmerrattet fra Elko passer ikke på disse rotary encoderne, så har tegnet og bestilt noen i 3D print, hvis de passer greit så legger jeg ut filen her, hvis noen andre blir inspirert. Siden dette skal på plass i samme rom som jeg skal ha den termostaten min (link) så kommer jeg til å koble den til samme Arduino istedenfor en egen NodeMCU, men virkemåten er jo helt lik. Er såpass fornøyd med hvor raskt det gikk å dimme med JSON at det beholder jeg, men fikk aldri til å parse JSON responsen fra HS, så for å vite status på lyset vil jeg bruke Arduino pluginen for å sjekke om lyset allerede er av eller på, slik at når man trykker inn dimmerattet så slår den seg da av eller på utifra det. Siter
toffa Skrevet 2. januar 2017 Skrevet 2. januar 2017 Sykt kult! Hadde nylig en kar fra futurehome på skolen som sa at denne type dimming med den gode gamle elko dimmeren ikke var på markedet, ihvertfall ikke til en forsvarlig pris. Har du funnet ut av alt dette selv? Kjøpte meg nylig en NodeMCU så hadde vært sykt spennende å prøvd å lage dette. Som testprosjekt, ville dette funket helt fint alene uten et system som HomeSeer fks? At den bare kobler seg direkte på nett og styres via en web server? Jeg er ikke så dreven på all denne programmeringen, har bare brukt litt arduino. Siter
Actibus Skrevet 2. januar 2017 Forfatter Skrevet 2. januar 2017 Du er avhengig av å kunne styre z-wave dimmeren, så du trenger en form for system. For å bruke min kode trenger du et system som kan kontrolleres med JSON kommandoer, har ikke kjennskap til annet enn Homeseer selv, men antar det er flere som støtter det. Siter
Actibus Skrevet 15. januar 2017 Forfatter Skrevet 15. januar 2017 Har fått kjøpt meg 3D skriver og jobber med dette prosjektet på kveldene nå, mellom oppussing og unger ? Fått laget ratt som passer på encoderen, og holder på å lage en boks som har plass til power, nodemcu og encoderen, bruker power fra Biltema sin USB vegguttak, som jo er godkjent for skjult installasjon, og ikke koster skjorta som Elko sin gjør. Kommer med en oppdatering bare jeg får gjort siste finpussen på boksen ? Siter
Actibus Skrevet 16. januar 2017 Forfatter Skrevet 16. januar 2017 Fått boksen til å passe ikveld, mangler nå bare lokket på toppen som encoderen skal sitte i. Også må jeg lage en boks som er mindre, til bruk der man ikke trenger integrert power. 5 Siter
Actibus Skrevet 17. januar 2017 Forfatter Skrevet 17. januar 2017 Syntes det er rart ingen produsenter har kommet med noe slikt, kan jo lages med en z-uno, burde ikke vært store problemet..? Men det er kanskje ikke veldig utbredt rundt i verden med roterende dimmere? 1 Siter
Lazarus Skrevet 17. januar 2017 Skrevet 17. januar 2017 16 timer siden, Actibus skrev: Fått boksen til å passe ikveld, mangler nå bare lokket på toppen som encoderen skal sitte i. Også må jeg lage en boks som er mindre, til bruk der man ikke trenger integrert power. Dette så jo kjempebra ut. har du lyst til å dele tekningene? jeg har et veldig likt men alikevel ulikt prosjekt jeg arbeider med(og har arbeidet med altfor lenge). Har tegnet noe selv, men dine så noe(les MYE) bedre ut enn mine. ;-) Siter
Actibus Skrevet 17. januar 2017 Forfatter Skrevet 17. januar 2017 Selvfølgelig, skal legge de ut iløpet av kvelden Siter
Actibus Skrevet 17. januar 2017 Forfatter Skrevet 17. januar 2017 vedlagt modellen i SketchUp format og stl veggboks.skp veggboks_ny2.stl Siter
Lazarus Skrevet 17. januar 2017 Skrevet 17. januar 2017 3 timer siden, Actibus skrev: vedlagt modellen i SketchUp format og stl veggboks.skp veggboks_ny2.stl Kjempe! Mye bedre oppsett enn det jeg har forsøkt meg på... Siden jeg er så kravstor.. har du lyst til å dele selve dimmehjul tegningen også? Siter
Actibus Skrevet 17. januar 2017 Forfatter Skrevet 17. januar 2017 Dimmerhjulet laget jeg i 123D Design, fordi jeg ville prøve å lage en mer avrundet utgave, men endte opp med flatt hjul, da det ga penest print. Rattet er tilpasset de rotary encoderne jeg har kjøpt på ebay, regner med de fleste der er like, men her er de jeg har kjøpt: http://www.ebay.com/itm/272163443462?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT dimmerratt c3.stl dimmerratt v3.123dx Siter
Lazarus Skrevet 17. januar 2017 Skrevet 17. januar 2017 1 time siden, Actibus skrev: Dimmerhjulet laget jeg i 123D Design, fordi jeg ville prøve å lage en mer avrundet utgave, men endte opp med flatt hjul, da det ga penest print. Rattet er tilpasset de rotary encoderne jeg har kjøpt på ebay, regner med de fleste der er like, men her er de jeg har kjøpt: http://www.ebay.com/itm/272163443462?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT dimmerratt c3.stl dimmerratt v3.123dx Takker og bukker! da blir det printing på meg i morgen. ? Siter
xibriz Skrevet 18. januar 2017 Skrevet 18. januar 2017 Kjempeprosjekt! I versjon 2. må du bruke en mindre utgave av ESP8266 eller en Z-UNO ? Da kan du lage en ganske flat dimmer som ikke trenger veggboks men bare kan klistres på veggen. Siter
Lazarus Skrevet 18. januar 2017 Skrevet 18. januar 2017 13 minutter siden, xibriz skrev: Kjempeprosjekt! I versjon 2. må du bruke en mindre utgave av ESP8266 eller en Z-UNO Da kan du lage en ganske flat dimmer som ikke trenger veggboks men bare kan klistres på veggen. Strømforsyning kan da bli et problem... Men ordnes jo lett med ekstern strømforsyning eller batteri, selv om levetiden nok ikke blir imponerende. Siter
Actibus Skrevet 18. januar 2017 Forfatter Skrevet 18. januar 2017 Det hadde vært veldig kjekt, problemet er jo at de trenger strøm, hadde vært genialt om de kunne kjørt på batteri. ESP8266 ser ut til å ha litt problemer med deep sleep, det hender visst at den "glemmer" kodingen. Men ser at z-uno kan kjøres i sleep med forbruk på rundt 25uA, det kunne jo funket, hvis den våkner raskt ved input. Kanskje jeg må bestille en etterhvert ? Siter
xibriz Skrevet 18. januar 2017 Skrevet 18. januar 2017 Jeg tror nok at Z-UNO blir litt stor for en flat dimmer, den lille ESP8266 er nok best. Men hvis det er utfordinger med deep sleep blir det vanskelig med batteri. Har nettopp kjøpt en ZWC-K8, og der er deep sleep så bra at den er nesten umulig å konfigurere med inkludering og assosiasjoner. Siter
Actibus Skrevet 18. januar 2017 Forfatter Skrevet 18. januar 2017 Fikk ikke nodemcu under 30mA pga spenningsreguleringen, har bestilt en ren esp8266 for å teste med den. 1 Siter
xibriz Skrevet 18. januar 2017 Skrevet 18. januar 2017 Hvis du ikke vet om denne siden er den verd en titt: http://www.letscontrolit.com/ Jeg har ikke sett så mye på den før, men en kjenning av meg klarte å koke i hop noe uten programmeringskunnskaper Siter
Actibus Skrevet 18. januar 2017 Forfatter Skrevet 18. januar 2017 Har ikke sett noe på den siden, legger den til for senere Jeg ser et potensielt problem med å kjøre ESP8266 i deep sleep på en dimmer, det vil jo ta tid å gjenopprette WiFi forbindelsen når den kommer ut av søvnen (antar jeg) og man vil jo helst ikke ha noen forsinkelse i det hele tatt. Z-uno er kanskje bedre, men koster jo 25-30 ganger prisen av en ESP Siter
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.