International Year of Cooperatives


Apparently 2012 is the International Year of Cooperatives. Unfortunately, after a small error of judgement with my Christmas shopping in December, there’s one cooperative which won’t be on my Christmas list next year.

The Co-operative Electrical Shop claim that they…

“…pride ourselves on our high standards of Customer Service and want you to be happy with your purchase.”

So, being keen on good customer service, I decided to pay marginally more to buy from them. This was a Christmas present, so I wanted to avoid any problems. Things didn’t get off to a great start when this arrived at the door…

Just to clarify, that’s not the state it was in after opening any packaging. It arrived like that, completely unpackaged with an address label on the bottom! The other tiny problem with the lack of packaging, aside from looking like it had been kicked all the way from the warehouse, is that the intended recipient was the one who answered the door. Lucky it wasn’t a surprise gift or anything then!

Oh well, not a great start, but I’m sure a company so keen on customer service will only be too happy to rectify the mistake. I was feeling a little more optimistic after phoning their customer service line; there was no argument over a full refund and they arranged a pick up for the next day, since I was already going to be working at home waiting for another delivery. What could possibly go wrong…

One thing that could go wrong, and did, is no one showing up to pick up the return! When I phoned to find out why, it appears that they managed to miss off my house number when booking the parcel company pick up. So, two mistakes. Unlucky. They pride themselves on customer service though, so at this point I’d expect some serious effort to put things right.

I was disappointed. I wasn’t able to work at home to wait for another attempted pick up the same week, and despite explaining that a shorter time slot than all-day-maybe or at least a Saturday might be a good idea having been messed about so much already… the computer said no.

At this point I’d like to point out that eSpares managed to deliver 1 minute in to a very specific one hour delivery slot at the same time of year, and they got the order right first time! I mention this because it’s nice to point out that I don’t always complain… and because they gave me a recommend a friend code!!

So, to cut a long story short, they did eventually pick up the ‘parcel’, and they did eventually refund my money, but I’d call that grudging just about managing the legal minimum of customer service, and certainly nothing to be proud of. I wrote to point this out but unsurprisingly no one bothered to reply. Not even a stock, we got your letter and are basically going to ignore you, response.

I won’t be making the mistake of using the Co-operative Electrical Shop again. I’ll be sticking to these instead:

  • By appointment to Jo and JT. Purveyors of home appliances and more, John Lewis. John Lewis have been getting worse recently. Not as bad as Ikea but I’m unlikely to be using their electrical department again.
  • By appointment to Jo and JT. Purveyors of spare parts, eSpares.

Updated: I haven’t got round to posting about John Lewis yet but they aren’t as good as they once were. (19 November 2012)

Tree Trio


The Poles Lane post box is plastered in tinsel so it must be time to accept that it’s almost Christmas. For everyone I haven’t managed to send a card to, here’s a little tree inspired rhyme…

We three trees, not in a park,

One in an office, one in the dark,

One on a table, that’s not very stable,

It’ll probably end with a spark!

Merry Christmas!

Illuminations


It’s lasted a few years but sadly our old Christmas tree failed the strictest quality control standards required for indoor duties. Luckily there was an opening for front garden decoration, so it’s not out of work just yet. Doing a fine job too I think:

The lights are plugged in to a Home Easy socket, so I may be dusting off the arduino to control them, which would be an ideal excuse to give a Pachube Dashboard a try… as soon as I’ve finished the Christmas shopping that is!

Techno Bears


I was only planning to have a quick play with the LCD display I bought recently, but ended up finishing off my Arduino + Home Easy polar bear controller project as well. Not that it actually needed a display you understand, but I’d wired it up, so why not!

…complete with a manual override should it annoy Jo a bit too much! I finished a bit ahead of schedule in the end; the polar bears aren’t actually out yet… because it’s not Christmas! I have dug the tree up though, and as soon as it’s indoors we’ll have some ambient bears to tell us when to turn something off. Here’s the sketch so far, warts and all:

#include <Bounce.h>
#include <HomeEasyCtrl.h>
#include <Messenger.h>
#include <LiquidCrystal.h>

#define WIRELESS 6
#define BUTTON 7
#define LED 13

// Define a metronome
unsigned long previousMillis = 0;

// Set the default interval to every 3 minutes -
//   enough time for a cup of tea
unsigned long interval = 180000;

// Instantiate a Bounce object with a 5 millisecond debounce time
Bounce bouncer = Bounce(BUTTON,5); 

// Instantiate Home Easy controller with transmitter on pin 4 and LED on 13
HomeEasyCtrl lightController(WIRELESS,LED);

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

// Instantiate Messenger object with the message function and the default separator (the space character)
Messenger message = Messenger(); 

// Flag indicating the desired state of the lights
bool deviceOn = false;

// Flag indicating whether bears are on manual!
bool manual = false;

// Last energy reading in watts
int watts = 0;

// Energy use messages
int energyUse = 0;
char* energyUseMessages[]={"Energy: low", "Energy: normal", "Energy: high"};

// Define messenger function
void messageCompleted() {
 int elementCount = 0;
 int last = 0;
 Serial.println("Message received");

 // Loop through all the available elements of the message
 while ( message.available() ) {
 elementCount++;
 int value = message.readInt();

 if ((value == 0) || (elementCount > 2)) {
 Serial.println("Oops");
 return;
 }

 Serial.println(value, DEC);

 // wait for same value twice for simple
 // error checking
 if (value == last) {
 watts = value;
 } else {
 last = value;
 }
 }
 Serial.println("Watts");
 Serial.println(watts, DEC);

 checkEnergyUse();
}

void checkEnergyUse() {
 if (watts < 50 || watts > 350) {
 deviceOn = false;
 previousMillis = millis();
 // Don't mind waiting for things to go off
 if (watts < 50) {
 energyUse = 0; // low
 } else {
 energyUse = 2; // high
 }
 } else if (watts > 100 && watts < 300) {
 deviceOn = true;
 previousMillis = millis();
 energyUse = 1; // normal
 // Want things to come on immediately
 lightController.deviceOn();
 } // otherwise, no change

 updateDisplay();
}

void updateDisplay() {
 lcd.clear();

 // 1st line
 if (manual) {
 lcd.print("Manual override");
 } else {
 lcd.print(energyUseMessages[energyUse]);
 }

 // 2nd line
 lcd.setCursor(0,1);
 if (deviceOn) {
 lcd.print("Polar bears: on");
 } else {
 lcd.print("Polar bears: off");
 }
}

void setup() {
 pinMode(BUTTON,INPUT);

 // Initiate Serial Communication
 Serial.begin(9600); 

 // set up the LCD's number of rows and columns:
 lcd.begin(16, 2);
 lcd.print("Ready");
 lcd.setCursor(0,1);
 lcd.print("Polar bears: off");

 // set up incoming message processor
 message.attach(messageCompleted);
}

void loop() {

 // Check push button for manual override
 if ( bouncer.update() ) {
 if ( bouncer.read() == LOW) {
 if (!manual) {
 manual = true;
 deviceOn = true;
 lightController.deviceOn();
 } else {
 if (deviceOn) {
 deviceOn = false;
 lightController.deviceOff();
 } else {
 manual = false;
 checkEnergyUse();
 }
 }
 updateDisplay();
 }
 }

 // The following line is the most effective way of
 // feeding the serial data to Messenger
 while ( Serial.available( ) ) message.process(Serial.read( ) );

 // Keep the device in the desired state
 if ( millis() - previousMillis > interval ) {
 previousMillis = millis();

 if (deviceOn) {
 lightController.deviceOn();
 } else {
 lightController.deviceOff();
 }
 updateDisplay();
 }
}

No polar bears have been harmed in the making of this post. At least not yet anyway.

Update: Seems to be working quite well, although the manual override button seems to have problems- it seems to randomly flip back on when I want it to stay off. Still, the button works well enough to pair with a Home Easy socket which is the main thing. Tree and polar bears should be up this weekend. (16 Dec 2009)

Navigating with baked beans


Very pleased with my new high tech sat nav cradle attachment:

beanhack

Fits my car’s cup holder perfectly and keeps the screen in just the right spot. Plan A had been to use an old plastic bottle with some stones in, but that wasn’t quite so stable. (Might have worked better with a different size bottle, or in a different cup holder for that matter.) Using a tin also means I have some emergency rations in the event of any really bad traffic jams!

Must have gifts for anyone with a sat nav next Christmas?