Kategorier
Okategoriserade

Minlampa.se fick inte vara kvar

Så här såg hemsidan ut när den var i bruk.

Kategorier
Okategoriserade

Mindre tid = Mindre domäner

Jag börjat städa upp bland mina domäner nu. Så att jag skall få lite mer tid till annat som min 3D-skrivare eller något annat mindre viktigt men lika roligt 🙂

Kategorier
Okategoriserade Prylar

Tvåvägs-autentisering

Jag har börjat använda mig mer och mer av tvåvägs-autentisering. Det produkter jag har använt hittills är YUBIKEY för lastpass.com och Google Authenticator för gmail och hittills är jag väldigt nöjd.

Kategorier
Arduino

Källkoden till Minlampa.se

#include <Adafruit_NeoPixel.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EEPROM.h>

#define PIN 6


// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(40, PIN, NEO_GRB + NEO_KHZ800);

byte mac[] = {0x90, 0xA2, 0xDA, 0x0E, 0x95, 0x3F};

IPAddress ip(192,168,0,99);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);

int startValue = 255;
int red = startValue;
int green = startValue;
int blue = startValue;
int interval = startValue;
int brightness = 255;
String readString = "";
String lastValue = "";
const String RED = "red";
const String GREEN = "green";
const String BLUE = "blue"; 
const int RED_ADDRESS = 0;
const int GREEN_ADDRESS = 1;
const int BLUE_ADDRESS = 2;

void setup() {
  Serial.begin(9600);
  
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  strip.setBrightness(brightness);
  
  int tmpRed = EEPROM.read(RED_ADDRESS);
  int tmpGreen = EEPROM.read(GREEN_ADDRESS);
  int tmpBlue = EEPROM.read(BLUE_ADDRESS);
  if(tmpRed > 0 || tmpGreen > 0 || tmpBlue > 0){
    red    =  tmpRed;
    green  =  tmpGreen;
    blue   =  tmpBlue;
    colorWipe(strip.Color(red, green, blue));    
  }else{
    colorWipe(strip.Color(red, green, blue));
  }
  
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
    // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        
        //read char by char HTTP request
        if (readString.length() < 100) {
          //store characters to string 
          readString += c;
        } 
        
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: application/json");
          client.println("Connection: close");
          client.println();
          client.println(prepareHtml());
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
    
    String queryString = getQueryString(readString);
    
    if(getValue(queryString, RED).length() > 0)
    {
      red = getIntValue(getValue(queryString, RED));
      EEPROM.write(RED_ADDRESS, red);
      Serial.print("red:");
      Serial.println(red);
    }
    if(getValue(queryString, GREEN).length() > 0)
    {
      green = getIntValue(getValue(queryString, GREEN));
      EEPROM.write(GREEN_ADDRESS, green);
      Serial.print("green:");
      Serial.println(green);
    }
    if(getValue(queryString, BLUE).length() > 0)
    {
      blue = getIntValue(getValue(queryString, BLUE));
      EEPROM.write(BLUE_ADDRESS, blue);
      Serial.print("blue:");
      Serial.println(blue);
    }
    
    //clearing string for next read
    readString="";
    queryString="";
  
    colorWipe(strip.Color(red, green, blue));
    setBrightness(brightness);
    Serial.print(lastValue);
  } // client
}

void setBrightness(int brightness){
  strip.setBrightness(brightness);
}

String prepareHtml(){
  String html = "{\"status\":\"ok\"}";
  int tmpRed = EEPROM.read(RED_ADDRESS);
  int tmpGreen = EEPROM.read(GREEN_ADDRESS);
  int tmpBlue = EEPROM.read(BLUE_ADDRESS);
  if(tmpRed > 0 || tmpGreen > 0 || tmpBlue > 0){
    html = "{\"status\":\"ok\", \"rgb\":["+String(tmpRed)+","+String(tmpGreen)+","+String(tmpBlue)+"]}";
  }else{
    html = "{\"status\":\"ok\", \"rgb\":["+String(startValue)+","+String(startValue)+","+String(startValue)+"]}";
  }
  return html;
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
  }
}

int getIntValue(String value){
  int tmpValue = value.toInt();
  if(tmpValue > 255){
    return 255;
  }
  if(tmpValue < 0){
    return 0;
  }
  
  return tmpValue;
}

String getValue(String queryString, String param){
  
  if(queryString.indexOf("?") > -1 && queryString.indexOf(param) > -1){    
    //Serial.print(param);Serial.println(queryString.indexOf('?') > -1 && queryString.indexOf(param) > -1);
    int paramPos = queryString.indexOf(param) + 1 + param.length();
    int AndCharPosOrLength = queryString.indexOf("&",paramPos);
    if(paramPos > 0){
      if(AndCharPosOrLength == -1){
        AndCharPosOrLength = queryString.length();
      }
      return queryString.substring(paramPos, AndCharPosOrLength);
    }
  }
  return "";
}

String getQueryString(String httpHeader){
  String startString = "GET /";
  String endString = " HTTP/1.1";
  int startPos = httpHeader.indexOf(startString) + startString.length();
  int endPos = httpHeader.indexOf(endString, startPos);

  if(startPos > 0 && endPos > 0){
    Serial.println(httpHeader.substring(startPos, endPos));
    return httpHeader.substring(startPos, endPos);
  }
  return "";
}
Kategorier
Arduino Prylar

Minlampa.se nu ännu bättre

Nu har minlampa.se blivit ännu bättre. Nu visas om lampa är på eller inte och även den valda färgen som lampan är inställd att visa just nu. Givet att den är på.

Kategorier
Linux Okategoriserade Prylar

Minlägenhet.com nu med temperturgrafer

Skärmavbild 2014-08-03 kl. 21.38.17

Se färska grafer här minlägenhet.com/charts.php

Tre trådlösa temperatursensorer skickar data till min tellstick duo. Sedan lagras temperaturdatan i en databas av ett cronjob som kör varje timme. graferna skapas mha av d3js.

Kategorier
Arduino Okategoriserade

Arduino Lampa

Arduino uno, Arduino Ethernet Shield, Adafruit NeoPixel Shield for Arduino och en Ikea Fillsta. Du kan se och ändra färgen lampan har just nu via hemsidan minlampa.eu

2013-12-22 19.21.28 2013-12-22 19.21.51 2013-12-22 19.22.25 2013-12-22 19.23.09 2013-12-22 19.23.15 2013-12-22 19.23.22 2013-12-23 15.28.36

Kategorier
Arduino

Inne- och utetermometer

IMAG0005

Kategorier
Prylar

Arduino upplevelsen

Blandade bilder av upplevelsen
2013-05-23 21.09.19

2013-05-21 22.44.03

2013-05-21 22.44.01

2013-05-21 22.43.57

2013-05-20 22.58.41

2013-05-21 22.43.43

2013-05-21 22.43.56

2013-05-20 22.35.32

En Arduino uno rev 3
2013-04-19 21.22.21

Unboxing Arduino starterkit 🙂
2013-05-15 17.55.35

Min första termometerserver 🙂
2013-06-05 23.22.59

2013-06-05 23.22.36

Min senaste kreation en till termometer 🙂
2013-07-29 21.37.05

Kategorier
Prylar

Det blev visst åtta Raspberry Pi

Raspberry Pis