I bought a Smappee a year ago and it has been a great help in finding appliances that needed some attention.
This is not a paid review. I’m a customer and I’ve made a Chrome extension called SmappeeGraph to keep a eye on power usage. You can get it here.
Appliance learning has been a bit fuzzy. I’m missing a way to diagnose based on phase data. It can’t detect multiple stoves of the same type even if they are on different phases (I’m not sure there really is a way to do it though). And it tends to group always on appliances into a single appliance that was driving me wild for a while until I figured that was the case.
Data history is limited to what is stored on the service. You only get 5min granularity for the last day, 1 day granularity for the last 6 months and 1 month for the last few years. The UI for looking at that data is terrible.
The mobile app works fine, it does have notifications for appliances, but they are flaky. The added smart switch does not suite me, as it’s just the one and limited to the area where the Smappee meter is – but it might come in handy for certain applications.
Reliability was not a issue at all, it has been constantly working for the last year without any mayor issue. If it loses power it takes a couple of minutes to sync back to the mobile app.
Support was great, I messed up my order and they worked with me to fix it within minutes.
Solar meter is available, I haven’t had the opportunity to test it out.
Hackability. I have the home version that is compared to their commercial offering quite limited. They have a web-based configuration utility that can be used to reset the memory, make it re-learn the appliances and look at second-to-second data for each phase. Here is a example how that can be used in a chrome extension. The smart plugs can also potentially be used in the same manner.
Making a script to check, update and add a set of records to MySQL can be quite daunting. And even when done, the script will be slow. Luckily, there is a way to do this with a simple and fast SQL command.
LOAD DATA LOCAL INFILE '/location/on/drive' -- the location of the CSV
REPLACE INTO TABLE mytable -- table to 'replace' in to
CHARACTER SET charset_name -- the character set the CSV is in
FIELDS TERMINATED BY ';' -- character between fields
OPTIONALLY ENCLOSED BY '"' -- character to enclose fields
ESCAPED BY '"' -- excape character
LINES TERMINATED BY 'n' -- end of line character
IGNORE 1 LINES; -- ignore n lines, useful if first line is a header
(id, name, location, @phonenumber) -- fields, use @ to name a field that does not corespond to a existing column
SET contact=CONCAT('Phone number: ',@phonenumber) -- maybe use the new name to set a column value
The keyword LOCAL is used to specify, that the given file is relative to the client, from which the script was run, otherwise, the path relative to the server would be used.
REPLACE replaces the lines, that have a matching unique field. IGNORE ignores them.
“The only system which is truly secure is one which is switched off and unplugged, locked in a titanium lined safe, buried in a concrete bunker, and is surrounded by nerve gas and very highly paid armed guards. Even then, I wouldn’t stake my life on it.”