Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - mkbrown69

Pages: 1 2 [3] 4 5 ... 13
Developers / Re: New Template ISY994i uploaded
« on: December 14, 2013, 04:13:22 pm »

That was a lingering bug I had fixed in the last update I'd committed.   I'd refactored the code at one point, and forgot to rename that function call which is sitting in the event handler in a different code file.

This is where you need to go through the web admin, Advanced -> SQLCVS -> Update and then wait a while.  When it says success, you can then reload the router and check the logs.  Triggering some lights should generate the status update events, and you'll find your errors will disappear.

If they don't clear up, let me know...



Developers / Re: New Template ISY994i uploaded
« on: December 14, 2013, 01:17:39 am »
edited: Basically, GSD _SUCKS_ when you need to maintain more than one socket. Full stop.


I can understand your position.  Practically speaking, with the mysql dependency satisfied, the driver works pretty well.  The ruby/GSD driver does make for a good prototype platform, to finish the feature set. It's taken me the better part of a year to get it to this point, and that is with some ruby knowledge. I had to teach myself some more advanced ruby, XML parsing, plus the ISY SDK.  If I had to learn C++ simultaneously, it'd be another year before I got anything out...  ;)

I figure if I can get enough done and kitted out, someone more knowledgable than myself could port it to C++.

As a GSD, it's not perfect, but it does work well...



Developers / Re: New Template ISY994i uploaded
« on: December 14, 2013, 01:07:40 am »

cat /var/log/pluto/55_Generic_Serial_Device.log

Did you install ruby gems or some other package when your wrote the template.


The pastebin isn't there anymore...

I didn't use ruby gems.  I have the following ruby-mysql packages on my core:

apt-get install libmysql-ruby1.8 libmysql-ruby

would satisfy the mysql require.



Developers / Re: New Template ISY994i uploaded
« on: December 13, 2013, 06:56:11 pm »
Why does this driver require mysql?

I'm querying the pluto database to look up the IP address of the device; I couldn't figure out a way to find it via device data.  If you can point me in the direction of that, I'll be able to remove the mysql requirement.  I thought the Ruby mysql drivers were installed as a LMCE dependency (which is why I was using them), but it could be that they are on my system due to some other products I'd installed.

The reader's digest version is that the conn_ method is used with the ISY's subscription channel (which is a one-way feed of events from the ISY to the "client", in this case the LMCE driver).  Commands have to be sent asynchronously as a separate REST call, and I have a function to do that.  The function hits the IP address, which I'm presently scraping from the DB, after first parsing the pluto.conf file to find the connection information.  The relevant DB scrape code is in the 355_Process_Initialize, and the REST command function is in 373_Private_Methods.  I can't establish the conn_ subscription until I've executed some REST calls to connect to the ISY and gather Child Device and other config data.  This was all done to make things work "automagically".


Please stand by... based on Thom's assessment, your system is missing the ruby-mysql packages.  I suspect we'll have a way forward after Thom thwacks me upside the head...  :P



Developers / Re: New Template ISY994i uploaded
« on: December 13, 2013, 01:28:41 pm »
Hi Chris!

Man you're fast!  Been waiting for this for a while, eh?   ;)

My first thought is that you need to go through the web admin, Advanced -> SQLCVS -> Update and then wait a while.  When it says success, you can either reload the router, or reboot the core to have all the auto detection stuff happen via dhcp.  It should detect the ISY, then create the device as a child of the core.  You'll need to change your ISY credentials to match via the web admin, and reload the router.  After that, things should just work as per the wiki page.

If you're still having problems after that, can you pastebin or post the log files here as attachments?  I'll need the <dev#>_Generic _Serial_Device.log and <dev#>_ISY-994i-GSD.log.  Both are located in /var/log/pluto, and can be found using

ls <dev#>_*

Mine are 189_Generic_Serial_Device.log and 189_ISY-994i-GSD.log (as an example).

I'll look at them tonight if you're still having problems.  I think you just got bit by the misaligned code (it got attached to a different device in the SQLCVS number shuffles...


Developers / Re: New Template ISY994i uploaded
« on: December 13, 2013, 04:28:20 am »
Hi Thom!

I'm guessing that no news is good news, and that I'm on the right track.  I've done another anonymous SQLCVS commit. Would you be able to review it and let me know if it looks OK?  Dec 12th @ 22:20 EST, against Trac #1999.



Developers / Re: New Template ISY994i uploaded
« on: December 09, 2013, 05:10:38 am »
Hi Thom!

I modified the template first to re-associate it with Universal Devices (#1163).  That's what I committed early this morning.  Later, I noticed the code wasn't associated, so I started looking into the tables. 

I modified table 'InfraredGroup_Command.FK_InfraredGroup' for all affected rows to match the relevant row from 'infraredGroup.PK_InfraredGroup'.  The old value was 6143 (which matched the Google ChromeCast values), and I changed it to 6102 for the ISY.  I noted the behavior for LMCE creating new command groups, deleted the new (blank) rows, and changed the FK_InfraredGroup value for the pre-existing ones. 

Let me know how you want me to proceed...

Thanks again!


Developers / Re: New Template ISY994i uploaded
« on: December 09, 2013, 03:36:12 am »

I've noticed that the code got tied to the Google manufacturer ID, which meant it wasn't working with the driver the way it should.  I've figured out how to fix it locally by modifying the database tables directly.  I'm not sure if doing a SQLCVS commit now will make things better or worse, so I'll wait on your advice.

Thanks for your assistance with this!  It's greatly appreciated!


Developers / Re: New Template ISY994i uploaded
« on: December 08, 2013, 06:23:22 am »

I've just committed a fix for Manufacturer ID.  It got switched to"Google" in the SQLCVS number shuffle, and was corrected to "Universal Devices".  Fix committed on Dec. 8 @ 0:18 EST via anonymous SQLCVS.

Thanks for the assistance!


Developers / New Template ISY994i uploaded
« on: December 07, 2013, 04:32:01 am »
ISY994i Template Release notes

Initial checkin, Trac ticket #1999 committed Dec. 6, 2013 at 22:20 EST.  Would someone be able to review and approve it, please?  Edit: Forgot to mention, it's a SQLCVS anonymous commit...

Wiki Page for driver:

Working Features:

Insteon/X10 Devices and Insteon Scenes
Automatic device creation in LMCE
Automatic creation of Insteon Scenes as dimmable child devices
Generates status update events to LMCE
Control of devices and scenes using orbiters

Future work/To-Do list:
- finish up device status, config routines and logic
- integrate orbiter alerts
- add more events support
- add more device support and verbosity
- Insteon Keypad support (basically implemented using related devices)
- relate ISY folders to LMCE rooms (and logic applied
- Integrate ISY WeatherBug module with 1204's WeatherPlugin



Installation issues / Re: Problems intstalling to VirtualBox
« on: December 02, 2013, 01:23:02 am »

20G is probably too small.  I run mine with a 50Gb LV for root, and seperate LV's for /home and /var/log, and you can see what I'm using.  LMCE is virtualized using KVM, with LVM's passed through as block devices.  /var/lib/mysql is an LV from an SSD, and the large log directory is for centralized syslogging, and verbose logging for dev/debugging work.

Code: [Select]
Filesystem            Size  Used Avail Use% Mounted on
rootfs                 50G   36G   12G  76% /
none                  787M  316K  787M   1% /dev
                       50G   36G   12G  76% /
/dev/vdc1              20G  1.8G   17G  10% /var/log
/dev/vde1             296G  2.9G  278G   2% /home
/dev/vdb1              12G  2.7G  8.6G  25% /var/lib/mysql

You have to remember, each MD is almost another install itself, averaging 2.5 G apiece.

Hope that helps!


@Langston:  no problem!  My pleasure!


How it works will depend a bit on what you're using as a "client".  The wiki page I linked describes LMCE's VPN implementation, which uses IPSEC or a Layer 2 Tunnelling protocol (L2TP).  Those are pretty common, and there are clients in, or available for, most mobile devices and computers.  The solution I use implements IPSEC, and uses certificates for two-factor authentication (something you have, the certificate, and something you know, the password).  It works on my iDevices, and I can install the VPN profile quite easily.  When I want to access the house, I click the VPN setting on, enter my password, and then I'm in.  I can then launch RoamingOrb or whatever app to access internal services.  I could make it easier using iOS7's new VPN on demand features, but I'd have to create some Mobile Device Management (MDM) profiles; right now, it'd be too much work in order to be lazy ;)

VPN's have other nice features, depending on the product.  Most give you seperate address spaces, so you can route, filter, and firewall to your hearts content.  Most enterprise Wi-Fi implementations require a VPN connection over Wi-Fi in order to access corporate services.  There are other fancier features, but you get the idea...



DOH!  Link in other thread, now here for reference:


It's a good and valid question.  Simply, it's about limiting the attack vectors.  The more services you expose directly to the Internet, the greater the possibility that one of those services can be exploited.  This isn't specifically about LMCE, but a general security practice.  One or two doors are easier to secure than ten or twenty doors.

IT security is like layers on an onion; you have to keep peeling them away to get to the centre.  You want to make it hard enough that 'they' move on to easier pickings.

Your LMCE login page doesn't currently track login attempts, and I'm willing to bet most people won't be looking through their Apache access logs to see if someone is running a dictionary attack.  There are other web-based products like MythWeb and MediaTomb; how about them?

SSH is even riskier, especially if your password isn't strong or you're not using two-factor authentication (username, password, and a pre-shared key, token, or certificates).  That's the first attack vector most will try; I regularly see port-scans against border devices, which are going after the SSH port (among others).

Yes, there are ways to secure all those services and make them more resistant to attacks, but that does require advanced IT knowledge.  LMCE's about making media and home automation "easier".  While most that are perusing these forums are more technically inclined, LMCE's target audience is those less technically inclined, who wouldn't be able to implement those safeguards.  Hence, the VPN makes it easier and safer.

In the case of Orbitors, I'm not sure if the traffic is SSL/TLS encrypted.  So, if you were to expose those ports over the Internet, and were sending your alarm system PIN code * in the clear *, someone on the same network segment (like in the case of cable modems) could sniff that traffic, figure out what it meant, and then use a replay attack to disarm your system.  Using the VPN means all that traffic is encrypted in the VPN tunnel, between your core and the end-device (the phone running QOrbiter).

Hope that explains things!  IT security is a complex issue, so I tried to keep it simple...


The use of a VPN would likely be both easier, and safer.



DISCLAIMER:  I don't use this particular configuration, but I'm pointing it out as it's built-in to LMCE. I run Sophos (formerly Astaro) UTM as a virtual machine, and use it to VPN into my house.  I use RoamingOrb on iDevices that way to access the core.  Same principles, different products.

Developers / Re: Need some design advice
« on: November 23, 2013, 04:35:07 am »
More progress and more questions...

I'm using event 765 (Set Device Relations) to establish the relationship between a Keypadlinc and it's buttons.  It works, and I'm able to show the buttons as related devices.  I'm wondering what the 'value' field in the schema is for?  I'm also wondering if I'm using this "related devices" correctly?  Basically, the buttons are physically part of the same switch, but are separate from the load, and seperate from each other.

I'm also curious about the difference between the Device Group and the "related devices" ;  the one notable difference I saw was that you can create "related devices" programmatically from GSD, but I don't see a way of doing it from GSD driver for Device Groups.



Pages: 1 2 [3] 4 5 ... 13