Open Source Home Automation (Raspberry)
-
Hi I'm John and i'm developing PiDome together with a friend of mine.
The project is in an early stage and we just a couple of days ago are starting to support existing devices (Philips Hue was the first) and are going to include native MySensors support. When it will be included exactly i can not tell but it will be between now and some weeks. The main reason for this is that i'm doing the software and this friend of mine the hardware. So we are just two developers.
The project is aimed at the raspberry pi but being based on java, it will not prevent it will also run on other systems (windows services are in test fase for example). The project also exists of multiple sub projects. Like the server, Desktop OS like/small application and an Android app.
It supports websockets, raw sockets and webservice json-rpc entrypoint all these have secure and non secure ports, visual trigger editor (if this then that (else is on it's way)), floor planner (multiple floors).It is an ambitious but in very early stage project with currently only quick follow up alpha releases and a lot, lot of testing. Maybe at some point it will be interesting when the MySensors support is built in and people are willing to test it.
[edit]
A little video about the project is posted here: http://pidome.wordpress.com/2014/05/28/pidome-explained-in-a-video-clip-with-web-interface-demo/ -
@John-Sirach
:thumbsup:
Nice project you got going! Let me know if you need help interpreting the protocol while developing the MySensors plugin.
@hek Thnx! We're doing the best we can. If i have any questions i will drop you a line. When i take a look at the devices it's all fairly simple. The only thing i notice is that there are variable types, but no data types. Is this correct?
-
Instead of every project reinventing the wheel I would hope we would come to a common MQTT gateway so at least part of the code to support MySensors can be reused and ... you can have multiple Domotica solutions in parallel working with MySensors.
Every Domotica project can then focus on how to handle the different devices the best but at least the interface talking to the MySensor network is standardized.
@Yveaux has already posted a script above not 100% sure how far this is off for a complete solution.
-
@hek Thnx! We're doing the best we can. If i have any questions i will drop you a line. When i take a look at the devices it's all fairly simple. The only thing i notice is that there are variable types, but no data types. Is this correct?
@John-Sirach
Yes, that is correct. There are both device- and variable types. You can report multiple variables on one device.
When to use a specific variable type for a device is really a silent agreement between sensor and controller. Today you could actually report a temperature variable to a humidity device. It would not make any sense, but noting prohibits this. A good example where multiple variables is reported for one device is POWER-device where you usually report both KWH and WATT.
If we can find a more general way of handling this in the future (and not over complex from the sensors point of view) it would be good. We had an discussion going about this but the thread disappeared in an crash.
- I might split this into a new topic -
-
Instead of every project reinventing the wheel I would hope we would come to a common MQTT gateway so at least part of the code to support MySensors can be reused and ... you can have multiple Domotica solutions in parallel working with MySensors.
Every Domotica project can then focus on how to handle the different devices the best but at least the interface talking to the MySensor network is standardized.
@Yveaux has already posted a script above not 100% sure how far this is off for a complete solution.
@daulagari One of the features of PiDome is the json-rpc api which is standardized for every device added. Every device is being reported in the same manner (data, structure, etc...). One of the features on our todo list is MQTT and not only for device communication, but next to the json-rpc api and to be used between multiple PiDome server instances. This would also of course make it possible to chain different type of domotica solutions. We are not yet done with defining the MQTT structure, but it will eventually certainly be done.
-
@John-Sirach
Yes, that is correct. There are both device- and variable types. You can report multiple variables on one device.
When to use a specific variable type for a device is really a silent agreement between sensor and controller. Today you could actually report a temperature variable to a humidity device. It would not make any sense, but noting prohibits this. A good example where multiple variables is reported for one device is POWER-device where you usually report both KWH and WATT.
If we can find a more general way of handling this in the future (and not over complex from the sensors point of view) it would be good. We had an discussion going about this but the thread disappeared in an crash.
- I might split this into a new topic -
@hek Having multiple kind variables posted to a single device is no problem, it's more about the datatype handling because of possible automatic graph creations. It would be nice of there was a table somewhere telling what kind of data a variable is for the internal mappings used. But this would an other topic.
-
@John-Sirach said:
It would be nice of there was a table somewhere telling what kind of data a variable is for the internal mappings used.
Yes, agree, and it would be even nicer if that table was in a machine readable format so that again not everybody has to reinvent the wheel.
-
@hek Having multiple kind variables posted to a single device is no problem, it's more about the datatype handling because of possible automatic graph creations. It would be nice of there was a table somewhere telling what kind of data a variable is for the internal mappings used. But this would an other topic.
@John-Sirach said:
It would be nice of there was a table somewhere telling what kind of data a variable is for the internal mappings used. But this would an other topic.
You can start the yourself topic and publish the table :)
It is in the Vera files on Github... -
@John-Sirach said:
It would be nice of there was a table somewhere telling what kind of data a variable is for the internal mappings used. But this would an other topic.
You can start the yourself topic and publish the table :)
It is in the Vera files on Github...@marceltrapman The internal mappings was meant for my project ;). When i take a look at the github code they all seem to be handled as strings? I meant in the case of a variable to be intepreted as a string,boolean,int,float,etc..
-
@marceltrapman said:
You can start the yourself topic and publish the table
It is in the Vera files on Github...I checked out the Vera repository and do not really see a table, what comes most close are the tDeviceTypes and the tVarTypes definitions in L_Arduino.lua.
Any better definition/source?
-
@marceltrapman said:
You can start the yourself topic and publish the table
It is in the Vera files on Github...I checked out the Vera repository and do not really see a table, what comes most close are the tDeviceTypes and the tVarTypes definitions in L_Arduino.lua.
Any better definition/source?
@John-Sirach said:
I meant in the case of a variable to be intepreted as a string,boolean,int,float,etc..
@daulagari said:
I do not really see a table...
OK, now I understand :)
What I was trying to say is that many rely on @hek to do this work but we can contribute ourselves as well.
In case you think a table is what helps you to do the job it might be a good exercise to assemble that table yourself.
Apologies for not being more clear on that. -
The table is also represented here.
http://www.mysensors.org/build/sensor_api#the-serial-protocol(an updated table will be created for 1.4 once we decide to make it official)
If your using the serial protocol to communicate with the sensor network everything coming to the controller is represented as a string. Some values might might have decimals where applicable like temperature. But this is really up to the sensor to decide.
Boolean values is represented by 1/0.
Some sensor values is represented with percentage 0-100 (e.g. DIMMER, LIGHT_LEVEL, BATTERY_LEVEL).
Yet is some values (or modes) is represented by a string (like for HEATER). But is uncommon and mostly a legacy from Vera. -
The table is also represented here.
http://www.mysensors.org/build/sensor_api#the-serial-protocol(an updated table will be created for 1.4 once we decide to make it official)
If your using the serial protocol to communicate with the sensor network everything coming to the controller is represented as a string. Some values might might have decimals where applicable like temperature. But this is really up to the sensor to decide.
Boolean values is represented by 1/0.
Some sensor values is represented with percentage 0-100 (e.g. DIMMER, LIGHT_LEVEL, BATTERY_LEVEL).
Yet is some values (or modes) is represented by a string (like for HEATER). But is uncommon and mostly a legacy from Vera.@hek said:
If your using the serial protocol to communicate with the sensor network everything coming to the controller is represented as a string. Some values might might have decimals where applicable like temperature. But this is really up to the sensor to decide.
Ok, this is making things more clear, i will let the datatype the be decided by the user creating a device.
Thnx. -
@bjornhallberg
I'm currently using OpenHAB with a couple Arduino sensor nodes. It works great. It does everything you've put in your required list and then some: rules engine, slick android app and browser interface, email / push notifications, data collection and charts. The only missing piece is the GUI for scene creation, but it's in the works. Also, great active community.Here's some videos and tutorial of what I've got working:
I was in the same boat as you. All these "Home Automation" platforms take a lot of digging into to find out where their shortcomings are, what they're capable of. Although I did not do an exhaustive survey of everything out there, I did look at a few on your list, and ended up with OpenHAB.
-
See thread http://forum.mysensors.org/topic/248/generalizing-mysensors for some very related thoughts about making MySensors more easily and cleanly adaptable to different controllers, cloud storage, MQTT, radio networks, etc.
(For once, I had the self discipline to start another thread rather than embed that discussion in this related one, yay!)
-
Here are some benchmarks that also happen to include certain ARM platforms, like the Cubieboard, Raspberry as well as x86 Atom and NUC solutions. It also has the N40L Microserver that I run as a storage server (but am reluctant to run 24/7).
https://s1.hoffart.de/7zip-bench/
http://www.7-cpu.com/Perhaps not entirely applicable to JAVA or node.js or whatever but nevertheless a good guide.
I bought my N40L for about €100 a while back (has since been deprecated by the N54L, don't know if it's still around?). Still stands up as pretty much the cheapest x86 board you can get, especially if you get the 4GB model and consider the performance which is better than a lot of fusion and atom platforms. Not super energy efficient though, even with the picoPSU mod and Dell powerbrick, and a bunch of 4TB drives obviously makes it even less so.
If this whole Raspberry thing doesn't work out I'd definitely look into Intel's NUC line-up. The newer i5 Haswell model (D54250WYK) can allegedly run as lean as 3.7-4.6W idle. I figure they might get pretty cheap once the next generation comes out.
-
I have put some support for mysensors in the software i'm using/creating. It is in early stage and there is some manual labor needed.
Still need to add:- Automatic node addresses
- Automatic create node devices based on node presentations
- And other stuff that can be added, etc...
A penny for your thoughts:
http://pidome.wordpress.com/2014/08/10/added-partly-mysensors-org-wireless-devices-support-api-1-4-beta/ -
I have put some support for mysensors in the software i'm using/creating. It is in early stage and there is some manual labor needed.
Still need to add:- Automatic node addresses
- Automatic create node devices based on node presentations
- And other stuff that can be added, etc...
A penny for your thoughts:
http://pidome.wordpress.com/2014/08/10/added-partly-mysensors-org-wireless-devices-support-api-1-4-beta/@John I did a quick install on my RPi to see how it would work out. I must say I'm impressed. Server web interface was up and running in under 40 seconds or so (openhab = 4 minutes). Very snappy and the interface seems like a good basis for a powerful controller. Shows real promise! Renewed faith in Java ;-)
-
@bjornhallberg
Disable the ssl in config/system.default.properties or copy and paste the below line in config.properties (default has precedence)server.enablessl = falseAnd it will be even faster, it then disables the certificate generation(at least 5 seconds), ssl websocket, http and raw socket instances (couple seconds per instance type).
I'm glad you got it up and running quite quickly if i understood correct because the downloads are still in alpha state (snapshots). I wish i already had some example sensors in the DB so it could by tried out without having to create XML definition files yourself.
-
@John
Your project looks great! I'm looking around for an home automation controller and was tossing between domoticz, openhab and FHEM.My criteria are:
- MySensors support (whether directly or through a gateway)
- Z-Wave support
- Visual floor plan
- Runnable on a Pi
May have to add yours to the mix to trial.
How difficult would it be to compile openzwave and integrate it by some mechanism to PiDome, do you think?