Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 20. des. 2018 i alle områder
-
4 poeng
-
Ah, OK. Får se hvordan jeg løser det, rent teknisk. Kanskje det blir en egen bit om Pulse-integrering.2 poeng
-
Vi snakker mye om automasjon her på forumet, og sammen er vi blitt veldig flinke. Jeg lærer noe nytt nesten hver dag, og det synes jeg er gøy! ... men som de sier: "We work hard, we play hard". Så av og til må det være lov med litt off topic. Jeg begynner med litt uhemmet selvskryt. Jeg la et bilde på Reddit der jeg streamer (verdens absolutt beste spill) Red Dead Redemption fra Xbox One hjemme over 4G til båten da vi var på båtferie, og det var jo festlig å se at det bildet ble populært. Faktisk så populært at jeg ble kontaktet av Surface-teamet som ville legge det på Twitter, som de selvfølgelig fikk lov til. ... ikke akkurat direkte relatert til hjemmeautomasjon, men fremdeles godt innenfor "because I can!"-mentaliteten.1 poeng
-
Ja det fungerer som det skal når jeg tester med Telnet både lokalt og fra andre enheter PC i samme nett, men Sensio har ikke klart å få det til og de vet heller ikke hvorfor. De har gitt beskjed om at vi må installere en ny kontroller som har støtte for å sende push- get-kommandoer via http. Det jeg ønsker å oppnå kan også løses av GCalSeer selv om det ikke blir helt nøyaktig så vil det være "godt nok". GCalSeer vil også brukes i mange andre sammenhenger så da velger jeg heller å hjelpe deg med å teste den for å gjøre den så god som mulig.1 poeng
-
Lastet ned og installert, førsteinntrykket ser bra ut. Her blir det en del å teste ja! Offset funksjonen må testes ? Gir deg tilbakemelding på det jeg finner av evt bugs.1 poeng
-
1 poeng
-
Fikk det bekreftet på mail når jeg spurte de om det, for skulle bytte inn de 3 Z-TRM2 jeg hadde kjøpt til FX. Men det ble da ikke aktuelt.1 poeng
-
Tja, min elektriker gjorde det på omtrent alle dimmerne jeg fikk montert. Riktignok var de fleste 3-veis lampestøpsel-stikk i tak da. Men, også dobbelstikk midt i trappa tenkte han montere det på (perfekt plassert for støvsugeren ved rengjøring av trappa!), men der ba jeg han fjerne stikk og sette på et blindlokk og wago i stedet.1 poeng
-
Noe jeg kan teste for deg...?1 poeng
-
@GeneralVirus her er den, uten at jeg egentlig har fått ryddet noe mer opp i den, når noe fungerer så blir det fort bare værende sånn. Opprett en tom API for NodeMcu dra plugin, lim inn dette før du kommer til: //************Do not change anything after Here***************** etter loop() er ferdig /************************************************************* Arduino to Homeseer 3 Plugin API written by Enigma Theatre. V1.0.0.146 * * *************************************************************/ int FromHS[50]; boolean IsConnected = false; //************************************************************ //**************Declare your variables here******************* #include <EEPROM.h> #include <ESP8266WiFi.h> //JSON #include <ESP8266HTTPClient.h> //JSON SLUTT static const byte EEPROM_INITIALIZED_MARKER = 0xF1; //Just a magic number static const uint8_t HAN_RX_PIN = 3; int effekt; int total; short volt1; short volt2; short volt3; short frekvens; int forrigeEffekt; static const int DATABUFFER_LENGTH = 256; uint8_t data_buffer[DATABUFFER_LENGTH]; volatile int databuffer_pos; volatile bool buffer_overflow; volatile unsigned long databuffer_receive_time; static unsigned long MINIMUM_TIME_BETWEEN_PACKETS = 1000L; static const uint8_t SLIP_END = 0xC0; static const uint8_t SLIP_ESC = 0xDB; static const uint8_t SLIP_ESC_END = 0xDC; static const uint8_t SLIP_ESC_ESC = 0xDD; static const unsigned CRC16_XMODEM_POLY = 0x1021; static const SerialConfig SERIAL_MODE = SERIAL_8N1; void read_persistent_string(char* s, int max_length, int& adr) { int i = 0; byte c; do { c = EEPROM.read(adr++); if (i<max_length) { s[i++] = static_cast<char>(c); } } while (c!=0); s[i] = 0; } void write_persistent_string(const char* s, size_t max_length, int& adr) { for (int i=0; i<std::min(strlen(s), max_length); i++) { EEPROM.write(adr++, s[i]); } EEPROM.write(adr++, 0); } void serialEvent() { unsigned long now = millis(); if (now<databuffer_receive_time || (now-databuffer_receive_time)>MINIMUM_TIME_BETWEEN_PACKETS) { databuffer_pos = 0; buffer_overflow = false; databuffer_receive_time = now; } uint8_t b; while (Serial.available()) { b = Serial.read(); if (0==databuffer_pos && SLIP_END==b) //FRAME_END can be sent to force reset of buffer { continue; } if ((databuffer_pos+1) < DATABUFFER_LENGTH) //Room for one more byte? { //ESC ESC_END => END (0xDB 0xDC => 0xC0) //ESC ESC_ESC => ESC (0xDB 0xDD => 0xDB) if (databuffer_pos>0 && SLIP_ESC==data_buffer[databuffer_pos-1]) { if (SLIP_ESC_END==b) { data_buffer[databuffer_pos-1] = SLIP_END; continue; } else if (SLIP_ESC_ESC==b) { //data_buffer[databuffer_pos-1] = SLIP_ESC; //Already has this value continue; } } data_buffer[databuffer_pos++] = b; } else { buffer_overflow = true; } } } char* toHex(char* buffer, unsigned int value) { buffer[0]='0'; buffer[1]='x'; uint8_t length = value<256?2:4; for (uint8_t i=length; i>0; i--) { buffer[i+1] = ((value&0x000F)<=9?'0':'A'-10)+(value&0x000F); value = value >> 4; } buffer[length+2] = 0; return buffer; } void dumpHex(const uint8_t* data_buffer, int databuffer_pos, String& response, uint8_t start_pos, uint8_t length) { char tmp_buffer[7]; if(start_pos!=0) { response += "\n"; } response.concat(toHex(tmp_buffer, start_pos)); response += ":"; for (int i=0; i<length && (start_pos+i)<databuffer_pos; i++) { response += " "; response.concat(toHex(tmp_buffer, data_buffer[start_pos+i])); } } unsigned int hexToInt(const uint8_t* data_buffer, int databuffer_pos, uint8_t start_pos) { return ((start_pos+4)>databuffer_pos) ? 0 : data_buffer[start_pos+3]<<24 | data_buffer[start_pos+2]<<16 | data_buffer[start_pos+1]<<8 | data_buffer[start_pos]; } unsigned short hexToShort(const uint8_t* data_buffer, int databuffer_pos, uint8_t start_pos) { return ((start_pos+2)>databuffer_pos) ? 0 : data_buffer[start_pos+1]<<8 | data_buffer[start_pos]; } boolean validCrc16(const uint8_t* data_buffer, int databuffer_pos, uint8_t content_start_pos, uint8_t content_length, uint8_t crc_start_pos) { if ((content_start_pos+content_length)>databuffer_pos || (crc_start_pos+2)>databuffer_pos) { return false; } unsigned crc = 0; for (uint8_t i=0; i<content_length; i++) { crc ^= ((unsigned)data_buffer[content_start_pos+i]) << 8; for (uint8_t j=0; j<8; j++) { crc = crc&0x8000 ? (crc<<1)^CRC16_XMODEM_POLY : crc<<1; } } unsigned short actual_crc = hexToShort(data_buffer, databuffer_pos, crc_start_pos); return crc==actual_crc; } void handleRequest() { String response; dumpHex(data_buffer, databuffer_pos, response, 0, 16); response.concat(F("\tMålernummer: \"")); for (uint8_t i=0; i<16; i++) { response.concat((char)data_buffer[i]); } response.concat(F("\"")); dumpHex(data_buffer, databuffer_pos, response, 16, 4); response.concat(F("\tAkkumulert forbruk: ")); response.concat(hexToInt(data_buffer, databuffer_pos, 16)/1000.0); response.concat(F("MWh")); total = hexToInt(data_buffer, databuffer_pos, 16)/1000.0; dumpHex(data_buffer, databuffer_pos, response, 20, 28); dumpHex(data_buffer, databuffer_pos, response, 48, 4); response.concat(F("\tForbruk: ")); response.concat(hexToInt(data_buffer, databuffer_pos, 48)); response.concat(F("W")); effekt = hexToInt(data_buffer, databuffer_pos, 48); dumpHex(data_buffer, databuffer_pos, response, 52, 12); dumpHex(data_buffer, databuffer_pos, response, 64, 2); response.concat(F("\tStrøm fase 1: ")); response.concat(hexToShort(data_buffer, databuffer_pos, 64)); response.concat(F("mA")); dumpHex(data_buffer, databuffer_pos, response, 66, 4); dumpHex(data_buffer, databuffer_pos, response, 70, 2); response.concat(F("\tStrøm fase 2: ")); response.concat(hexToShort(data_buffer, databuffer_pos, 70)); response.concat(F("mA")); dumpHex(data_buffer, databuffer_pos, response, 72, 6); dumpHex(data_buffer, databuffer_pos, response, 78, 2); response.concat(F("\tStrøm fase 3: ")); response.concat(hexToShort(data_buffer, databuffer_pos, 78)); response.concat(F("mA")); dumpHex(data_buffer, databuffer_pos, response, 80, 2); dumpHex(data_buffer, databuffer_pos, response, 82, 2); response.concat(F("\tSpenning fase 1: ")); response.concat(hexToShort(data_buffer, databuffer_pos, 82)/10.0); response.concat(F("V")); if (hexToShort(data_buffer, databuffer_pos, 82) != 0) { volt1 = hexToShort(data_buffer, databuffer_pos, 82)/10.0; } dumpHex(data_buffer, databuffer_pos, response, 84, 2); response.concat(F("\tSpenning fase 2: ")); response.concat(hexToShort(data_buffer, databuffer_pos, 84)/10.0); response.concat(F("V")); if (hexToShort(data_buffer, databuffer_pos, 84) != 0) { volt2 = hexToShort(data_buffer, databuffer_pos, 84)/10.0; } dumpHex(data_buffer, databuffer_pos, response, 86, 2); response.concat(F("\tSpenning fase 3: ")); response.concat(hexToShort(data_buffer, databuffer_pos, 86)/10.0); response.concat(F("V")); if (hexToShort(data_buffer, databuffer_pos, 86) != 0) { volt3 = hexToShort(data_buffer, databuffer_pos, 86)/10.0; } dumpHex(data_buffer, databuffer_pos, response, 88, 6); dumpHex(data_buffer, databuffer_pos, response, 94, 2); response.concat(F("\tFrekvens: ")); response.concat(hexToShort(data_buffer, databuffer_pos, 94)/100.0); response.concat(F("Hz")); if (hexToShort(data_buffer, databuffer_pos, 94) != 0) { frekvens = hexToShort(data_buffer, databuffer_pos, 94)/100.0; } dumpHex(data_buffer, databuffer_pos, response, 96, 1); dumpHex(data_buffer, databuffer_pos, response, 97, 2); response.concat(F("\tSjekksum er ")); response.concat(validCrc16(data_buffer, databuffer_pos, 0, 97, 97) ? F("OK") : F("IKKE OK")); dumpHex(data_buffer, databuffer_pos, response, 99, 1); if (buffer_overflow) { response.concat(F("\n\n(Buffer overflowed)")); } //.send(200, F("text/plain"), response); } //**************************************************************** void HSSetup() { //************************ //Add YOUR SETUP HERE; //in_setup_mode = false; databuffer_pos = 0; buffer_overflow = false; databuffer_receive_time = 0L; Serial.begin(9600, SERIAL_MODE); Serial.setDebugOutput(false); // read_persistent_params(); //************************ } void HSloop() { //************************ //Add YOUR CODE HERE; //************************ /* To Send Data to Homeseer use SendToHS(Device,Value) Eg.. SendToHS(1,200); where 1 is the API device in homeseer and 200 is the value to send To Recieve data from Homeseer look up the FromHS array that is updated when the device value changes. Eg.. FromHS[5] would be the data from API Output device 5 All code that is located just below this block will execute regardless of connection status! You can include SendToHS() calls, however when there isn't an active connection, it will just return and continue. If you only want code to execute when HomeSeer is connected, put it inside the if statement below. */ /*Execute regardless of connection status*/ HTTPClient http; if (Serial.available()) { serialEvent(); } if (IsConnected == true) { /*Execute ONLY when HomeSeer is connected*/ handleRequest(); if(forrigeEffekt != effekt && effekt != 0) { SendToHS(1, effekt); SendToHS(2, total); SendToHS(3, volt1); SendToHS(4, volt2); SendToHS(5, volt3); SendToHS(6, frekvens); forrigeEffekt = effekt; } } } //************Do not change anything after Here*****************1 poeng
-
Da er flere feil funnet hos meg, men i loggen kommer det: Loading script UpDOwnButtons.vb :File not found: UpDOwnButtons.vb enda filen ligger i scriptkatalogen og navnet på den er skrevet som det står i scriptet. Er endret til UpDOwnButtons.vb uten et det hjalp. Etter litt mer feilsøking er alt nå bare fryd og gammen!!1 poeng
-
Etter noen ukers venting har BKK endelig åpnet porten. Alt lå klart for integrasjon mot Homeseer og det fungerte med en gang. Har fulgt oppskriften i alternativ 1 + @Salvesen sin løsning med cloudmqtt til mcsMQTT plugin. Også en stor takk til @petersv for informasjonsflyten! Nå blir neste steg å få inn strømpriser, mener å ha sett noen løsninger på det her på forumet.1 poeng
-
1 poeng
-
Jeg må innrømme jeg synes dette med at det må være fast tilkobling er rart, generelt er det mye rart med reglene innen elektrisk. "Våre 16A kontakter tåler ikke å være koblet til 16A, la oss påby fast tilkobling", "våre forgreinere som er merket 16A tåler ikke 16A, la oss påby å ha flere kontakter". Hva med å sette krav direkte til det som er problemet?1 poeng
Vinnerlisten er satt til Oslo/GMT+02:00