Release 2.201 (Beta with PLUGIN framework & Foscam IP Camera Support)

  • 191 Views
  • Last Post 25 February 2013
Ryan-Scott posted this 02 February 2013

Go pick up your copy of version 2.201 with support for plugins and Foscam IP Camera support.

Remember, this is a beta release; if you find any problems please report them here.

There is a new Android app (also in beta) to go along with this release. This new app sports a new navigation structure (I hated the Facebook style slide out!) I'd love to hear your feedback on the new menu as well as any problems issues you experience with the app.




Order By: Standard | Newest | Votes
MadSci posted this 02 February 2013

Had no problem setting up the camera and receiving video stills. I used the port for video stream. When are you going to add controls?

Also, can you provide sample scripts to help us get started on executing camera commands and also inserting a video still into an email? (e.g. Move to preset position command, wait n seconds, record and email image.). I have the Foscam .cgi commands in a PDF. Could also add VLC command line code to record video...

BTW, plugin wiki is down for me.

MadSci posted this 02 February 2013

Nevermind. plugin wiki is up now for me.

Ryan-Scott posted this 02 February 2013

Had no problem setting up the camera and receiving video stills. I used the port for video stream. When are you going to add controls?

Also, can you provide sample scripts to help us get started on executing camera commands and also inserting a video still into an email? (e.g. Move to preset position command, wait n seconds, record and email image.). I have the Foscam .cgi commands in a PDF. Could also add VLC command line code to record video...

BTW, plugin wiki is down for me.


I've started on controls for movement. I should have that by next week.

Also, I'll update my main post with a link to download the new Android app with basic support for camera feed. There are still some known issues, I'll outline those in an edit to the main post as well.

The wiki isn't hosted by me; I noticed they were down a couple times this morning, though other than that they've been pretty good. Maybe planned maintenance or something?

MadSci posted this 02 February 2013

The Android App link is 404'd.

Ryan-Scott posted this 02 February 2013

The Android App link is 404'd.



Thanks - fixed now.

Ryan-Scott posted this 03 February 2013


Also, can you provide sample scripts to help us get started on executing camera commands and also inserting a video still into an email? (e.g. Move to preset position command, wait n seconds, record and email image.). I have the Foscam .cgi commands in a PDF. Could also add VLC command line code to record video...


The only commands I've got built into the Foscam controller right now are snapshot/videostream and movement.

At what point would you execute commands? Would you do it as part of an event from within InControl?

MadSci posted this 03 February 2013

My intention is to be able to move the camera to a preset position and start recording snapshots or video+audio clips when a rule is triggered, such as when a door sensor is tripped while I'm away. I use Google drive to sync with folders on my local HDD so I'll have the video even if my computer gets stolen.

I was able to figure out how to do this by writing a batch file to execute VLC to record 30 second clips in the background via command line. You can also insert the command string into a shortcut .Lnk and execute it that way. Using VLC via command line would probably be the easiest path forward for any sort of video recording capability. I tried to add this code into into the email script but couldn't get it to run (I'm a n00b at this).

There are a bunch of free programs which interface nicely with Foscam (I use Tinycam) so I'm not as concerned with manual interaction with the camera at the moment as much as automatically recording images when a rule is triggered. Of course, being able to move and record using the Incontrol android app commands would be nice.

I downloaded the android app beta...

IpCam: The preview pane is black and shows "waiting for snapshot". I'd like to see an actual snapshot thumbnail here. Video does show up once I click on the camera. Sound?

Thermostat: the new selection toolbar for various modes needs formatting. The color of the letters are white and do not show up when the menu is activated (it has a much whiter background). I actually thought there was nothing there until I accidentally turned off my thermostat, haha.

Now that there is this menu, what purpose will the main On/off button have? I have the Train thermostat which has two separate menus for control (adressed on your software improvement website).

Rules: nothing shows up yet. I realize that this is a work in process... Excited to see this work! Are going to integrate rule activation/ deactivation into scenes? I think this makes a lot of sense.

Ryan-Scott posted this 06 February 2013


I downloaded the android app beta...

IpCam: The preview pane is black and shows "waiting for snapshot". I'd like to see an actual snapshot thumbnail here. Video does show up once I click on the camera. Sound?

Thermostat: the new selection toolbar for various modes needs formatting. The color of the letters are white and do not show up when the menu is activated (it has a much whiter background). I actually thought there was nothing there until I accidentally turned off my thermostat, haha.


The snapshot will be arriving shortly when I push the next version of the beta app out. I'll post an update to this thread when that happens.


Rules: nothing shows up yet. I realize that this is a work in process... Excited to see this work! Are going to integrate rule activation/ deactivation into scenes? I think this makes a lot of sense.


Yes, you'll be able to activate and de-activate the rules from the Android app itself.


Now that there is this menu, what purpose will the main On/off button have? I have the Train thermostat which has two separate menus for control (adressed on your software improvement website).


The on/off will remain as a way to switch between comfort and econ heating. I'm not clear what you mean about two separate menus for control though.

MadSci posted this 06 February 2013

The Train thermostat actually separates the main controls into two separate menus, system (on, off, cooling, heating, auto) and schedule (hold, run, esm). see page 4: http://www.homeseer.com/pdfs/Schlage/thermostatusermanual-c.pdf

Because of this, I think, some of the menu commands for the thermostat don't work correctly.

I'm interested in learning how to write/tweak plugins and would be happy to help improve the functionality for the Train thermostat. I actually started looking at it last weekend with the foscam controller code you published.

Ryan-Scott posted this 06 February 2013

I've released 2.203 with some fixes to the camera support.

Axial-User posted this 07 February 2013

Installed 2.203 and the new android app. I sign in on both, but cannot see my devices? Any idea? I logged off and logged back in still nothing. I check on my tablet with the old APK and nothing there either.

Ryan-Scott posted this 07 February 2013

Could you check your logfile.txt and see if you've got any cloud connection issues going on?

MadSci posted this 08 February 2013

.

jonfrance posted this 09 February 2013

I'm using release 2.203 and although I did experience some issues initially as described above I did get it working, however the connection to the cloud and therefore connection to the app doesn't seem too reliable.
I've extracted an example of an error in the log file which has been there since the update.

2/9/2013 9:53:44 AM: Cloud: Attempting to connect to cloud server over chanId: [...]
2/9/2013 9:53:44 AM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)<br> at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127<br>2/9/2013 9:53:58 AM: Cloud: Cloud connected!<br>2/9/2013 9:53:59 AM: Cloud: Cloud connected!<br>2/9/2013 9:54:04 AM: Cloud: Attempting to connect to cloud server over chanId: [...]<br>2/9/2013 9:54:04 AM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)
at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127
2/9/2013 9:54:24 AM: Cloud: Attempting to connect to cloud server over chanId: [...]
2/9/2013 9:54:24 AM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)<br> at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127<br>2/9/2013 9:54:44 AM: Cloud: Attempting to connect to cloud server over chanId: [...]<br>2/9/2013 9:54:44 AM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)
at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127


I get this error over and over in the log file as you can see.

Ryan-Scott posted this 09 February 2013


I was able to figure out how to do this by writing a batch file to execute VLC to record 30 second clips in the background via command line. You can also insert the command string into a shortcut .Lnk and execute it that way. .


MadSci, would you mind sharing your patch script that you used to start the recording using VLC?

Ryan-Scott posted this 09 February 2013

I get this error over and over in the log file as you can see.


Jon -

I'll be releasing a new beta update later this afternoon. When I do, I'd be interested in seeing your new logs. Hopefully the extra stuff I added will help track down the problem you are having.

jonfrance posted this 09 February 2013

I've updated my version and here is snip of my log file:

2/9/2013 4:54:47 PM: Cloud: Attempting to connect to cloud server over chanId: 53de627f-9d31-4872-8f8f-c96625e2ed1e
2/9/2013 4:54:47 PM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)<br> at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127<br>2/9/2013 4:55:07 PM: Cloud: Attempting to connect to cloud server over chanId: 53de627f-9d31-4872-8f8f-c96625e2ed1e<br>2/9/2013 4:55:07 PM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)
at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127
2/9/2013 4:55:23 PM: Command has been queued up for sleeping device 5
2/9/2013 4:55:26 PM: Command has been queued up for sleeping device 5
2/9/2013 4:55:27 PM: Cloud: Attempting to connect to cloud server over chanId: 53de627f-9d31-4872-8f8f-c96625e2ed1e
2/9/2013 4:55:27 PM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)<br> at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127<br>2/9/2013 4:55:29 PM: Command has been queued up for sleeping device 5<br>2/9/2013 4:55:33 PM: Command has been queued up for sleeping device 6<br>2/9/2013 4:55:37 PM: Command has been queued up for sleeping device 6<br>2/9/2013 4:55:39 PM: Command has been queued up for sleeping device 6<br>2/9/2013 4:55:47 PM: Cloud: Attempting to connect to cloud server over chanId: 53de627f-9d31-4872-8f8f-c96625e2ed1e<br>2/9/2013 4:55:47 PM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)
at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127
2/9/2013 4:56:07 PM: Cloud: Attempting to connect to cloud server over chanId: 53de627f-9d31-4872-8f8f-c96625e2ed1e
2/9/2013 4:56:07 PM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)<br> at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127<br>2/9/2013 4:56:27 PM: Cloud: Attempting to connect to cloud server over chanId: 53de627f-9d31-4872-8f8f-c96625e2ed1e<br>2/9/2013 4:56:27 PM: Error with Cloud Connection: Object reference not set to an instance of an object. at SocketIOClient.Client.On(String eventName, Action1 action)
at MLS.ZWave.WCFService.InControlSocketClient.startSocketClient(String serverAddress) in z:\work\mls\MLS.ZWave.Controller\MLS.ZWave.WCFService\InControlSocketClient.cs:line 127


Still getting that error message, I can use the app remotely most of the time, even with these messages, so they don't actually appear to be having an affect on that.
No Z drive here either.

Ryan-Scott posted this 09 February 2013

Could you confirm the version you are seeing? It'll show up in the title bar and in the log file when you restart. The logs don't have the new items I added today, so it appears that you didn't actually get updated.

jonfrance posted this 10 February 2013

Thanks. I found out the issue, there were some ghost services running in the background, presumably an old version, so the GUI showed the new version but I suspect I was still running the old service. I killed them all off and re-installed and everything looks good now.
Thanks for your help.

gmerin posted this 10 February 2013

4 cams are working fine [and under win 8 - i'm shocked win 8 is tolerating it ;) ]

aoliva posted this 11 February 2013

i'm shocked win 8 is tolerating it ;) ]


LOL - that made me laugh

Ryan - I have Toshiba cameras all over the place. I know the camera URL of the jpegs it creates. I'd like to write a plugin for them. Where can I get the plugin framework/docs?

Thanks.

-Alex


Nevermind this post - I just noticed the new Plugins forum.

-Alex

MadSci posted this 11 February 2013


I was able to figure out how to do this by writing a batch file to execute VLC to record 30 second clips in the background via command line. You can also insert the command string into a shortcut .Lnk and execute it that way. .


MadSci, would you mind sharing your patch script that you used to start the recording using VLC?


I used this in a link ".lnk" file as a shortcut. It records for 15 sec minimized in the tray. It recorded the file in the same directly that the .lnk was in.

"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" http://cameraip:port/videostream.asf?user=""&pwd="" --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1_test.asf vlc://quit

VLC has a pretty extensive command link scripts which I don't understand. Maybe another user can help.

MadSci posted this 15 February 2013


I was able to figure out how to do this by writing a batch file to execute VLC to record 30 second clips in the background via command line. You can also insert the command string into a shortcut .Lnk and execute it that way. .


MadSci, would you mind sharing your patch script that you used to start the recording using VLC?

I used this in a link ".lnk" file as a shortcut. It records for 15 sec minimized in the tray. It recorded the file in the same directly that the .lnk was in.

"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" http://cameraip:port/videostream.asf?user=""&pwd="" --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1test.asf vlc://quit

VLC has a pretty extensive command link scripts which I don't understand. Maybe another user can help.



I'm trying to use this in a script, below. Any idea what I'm doing wrong? The script runs in InControl with no errors but nothing happens. The same .exe works as a .lnk.

using System;
using System.Collections.Generic;
using System.Text;
using MLS.ZWave.Service.Rules;
using MLS.ZWave.BusinessObjects;

public class Recordxmin : ScriptBase, ScriptInterface {

///
/// This script finds any node that is above 80% and sets it to 80%.
///
/// ALWAYS MAKE COPIES OF SCRIPTS YOU INTEND TO CUSTOMIZE OR YOUR CHANGES
/// COULD BE LOST.
///

public void runScript() {
try {
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = @"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" http://cameraip:port/videostream.asf?user=""&pwd="" --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1
test.asf vlc://quit";

psi.CreateNoWindow = true;
psi.UseShellExecute = false;
System.Diagnostics.Process.Start(psi);
} catch (Exception ex) {
// Log the exception here
var message = ex.Message;
}
}
}

Ryan-Scott posted this 15 February 2013


psi.FileName = @"C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" http://cameraip:port/videostream.asf?user=""&pwd="" --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1test.asf vlc://quit";


Change that line to read:

[code]
psi.FileName = "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe\" http://cameraip:port/videostream.asf?user=\"&pwd=\" --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1
test.asf vlc://quit";
[/code]

MadSci posted this 15 February 2013

Thanks. I'll give that a try.

MadSci posted this 16 February 2013

Getting error codes: ";" expected and invalid expression term ":"

using System;
using System.Collections.Generic;
using System.Text;
using MLS.ZWave.Service.Rules;
using MLS.ZWave.BusinessObjects;

public class Recordxmin : ScriptBase, ScriptInterface {

///


/// This script finds any node that is above 80% and sets it to 80%.
///
/// ALWAYS MAKE COPIES OF SCRIPTS YOU INTEND TO CUSTOMIZE OR YOUR CHANGES
/// COULD BE LOST.
///

public void runScript() {
try {
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe\" http://192.168.1.111:8000/videostream.asf?user=user&pwd=password --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1_test.asf vlc://quit";
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
System.Diagnostics.Process.Start(psi);
} catch (Exception ex) {
// Log the exception here
var message = ex.Message;
}
}
}

Ryan-Scott posted this 16 February 2013

Getting error codes: ";" expected and invalid expression term ":"


Where do you see that error at?

MadSci posted this 17 February 2013

I see it in the logs in the rules section of the GUI.

Ryan-Scott posted this 18 February 2013

I see it in the logs in the rules section of the GUI.


Could you link a screen shot to it for me so I can see the exact message?

Axial-User posted this 19 February 2013

Looks like you need to break up your parameters.

psi.FileName = "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe\" http://192.168.1.111:8000/videostream.asf?user=user&pwd=password --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1test.asf vlc://quit";

I'm not familiar with VLC but I'm assuming all the http stuff is suppose to be the arguments. If so you should do this:

psi.FileName = "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe";
psi.Arguments = "http://192.168.1.111:8000/videostream.asf?user=user&pwd=password --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=IPCamera-1
test.asf vlc://quit";

-N

MadSci posted this 23 February 2013

Thanks for the info. The code (below) runs without showing anything in the log file but nothing happens. Everything works if I put the vlc command into a shortcut (.lnk) file and execute it by clicking on it.

using System;
using System.Collections.Generic;
using System.Text;
using MLS.ZWave.Service.Rules;
using MLS.ZWave.BusinessObjects;

public class Recordxmin : ScriptBase, ScriptInterface {

///


/// ALWAYS MAKE COPIES OF SCRIPTS YOU INTEND TO CUSTOMIZE OR YOUR CHANGES
/// COULD BE LOST.
///

public void runScript() {
try {
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe";
psi.Arguments = "http://192.168.1.79:1111/videostream.asf?user=user&pwd=12345 --qt-start-minimized --no-qt-notification --run-time=15 :demux=dump :demuxdump-file=D:\IPCamera-1test.asf vlc://quit";
psi.CreateNoWindow = true;
psi.UseShellExecute = false;
System.Diagnostics.Process.Start(psi);
} catch (Exception ex) {
// Log the exception here
var message = ex.Message;
}
}
}




I've also tried writing code to just execute the .lnk but that doesn't seem to work either. Log file says: "Script failed to compile with error: 'System.Diagnostics.ProcessStartInfo' does not contain a definition for 'Filename' and no extension method 'Filename' accepting a first argument of type 'System.Diagnostics.ProcessStartInfo' could be found (are you missing a using directive or an assembly reference?) on line 16."



using System;
using System.Collections.Generic;
using System.Text;
using MLS.ZWave.Service.Rules;
using MLS.ZWave.BusinessObjects;

public class Recordxmin : ScriptBase, ScriptInterface {

///
/// ALWAYS MAKE COPIES OF SCRIPTS YOU INTEND TO CUSTOMIZE OR YOUR CHANGES
/// COULD BE LOST.
///

public void runScript() {
try {
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.ProcessStartInfo.Filename = "D:\VLC
Record.lnk";
System.Diagnostics.Process.Start(psi);
} catch (Exception ex) {
// Log the exception here
var message = ex.Message;
}
}
}

Ryan-Scott posted this 25 February 2013

I believe you need "ProcessStartInfo.FileName" instead of "ProcessStartInfo.Filename"

Close