Development/Tutorials/Sensors: Difference between revisions

From KDE TechBase
(New page: Implementing KSysGuard sensors simple example. Prequesities: KDE, Perl, nc Imagine you have a program that monitors some value important for you. You want the value to be plotted <s>or d...)
 
No edit summary
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Implementing KSysGuard sensors simple example.
Implementing KSysGuard sensors simple example.


Prequesities: KDE, Perl, nc
Prerequisities: KDE, Perl.


Imagine you have a program that monitors some value important for you.
Imagine you have a program that monitors some value important for you.
You want the value to be plotted <s>or displayed in the KDE systray</s>.
You want the value to be plotted or displayed in the KDE systray.


The most _____ way is to add it to KSysGuard as a sensor.
The most straightforward way is to add it to KSysGuard as a sensor.
 
== Example ==


Step 1. Create, for example, "/home/vi/code/sensor/sensor.pl" with the following content:
Step 1. Create, for example, "/home/vi/code/sensor/sensor.pl" with the following content:
<code lang="perl">#!/usr/bin/perl -w   
<syntaxhighlight lang="perl">#!/usr/bin/perl -w   
$|=1;
$|=1;


Line 28: Line 31:
     print "ksysguardd> ";
     print "ksysguardd> ";
}
}
</code>
</syntaxhighlight>


Step 2: Launch KSysGuard, File->Connect Host->Custom Command, enter "/home/vi/code/sensor/sensor.pl" in the Command field, OK.
Step 2: Launch KSysGuard, File->Connect Host->Custom Command, enter "/home/vi/code/sensor/sensor.pl" in the Command field, OK.
Line 35: Line 38:


You will see your sensor (random value from 0 to 100 in this case).
You will see your sensor (random value from 0 to 100 in this case).
== Systray ==
If you want to see the plot is your systray, follow this:
Step 1: Add "KSysGuard applet to the desktop".
Step 2: In there's no spare displays, choose "Configure System Guard" in the context menu of the applet and increase "Number of displays".
Step 3: Launch KSysGuard, follow previous example to get access to your sensor.
Step 4: Drag and drop from "random Integer Value" to the free display in the systray.
Step 5: "Signal plotter", then you will be asked again to provide the data source. Choose "Custom Command" with the same script.
[Step 6: Open properties and remove grids and lines to clean up the plot]
== Protocol ==
The ksysguardd protocol:
1. Server sends version line ("ksysguardd 1.2.0") ended with newline.
2. Server sends "ksysguardd> " with spacebar and without newline.
Available commands:
  monitors -- List available sensors
  <sensor name> -- Get the value of some sensor
  <sensor name>? -- Get the metadata of the sensor
"monitor" command:
For each sensor, send the sensor name TAB the sensor type (integer) NEWLINE.
Then go back to the prompt "ksysguardd> ".
get command:
For integer sensors, server should send one integer value and NEWLINE.
info command:
Server should send the Display Name of the sensor TAB minimum value TAB maximum value TAB units NEWLINE. Looks like this command or some part of it is optional.
== Example session ==
Example of session:
<syntaxhighlight lang="text">
ksysguardd 1.2.0
ksysguardd> random
96
ksysguardd> random
46
ksysguardd> monitors
random.integer
ksysguardd> random
11
ksysguardd> random?
Random Value.0.100
ksysguardd> random
47
ksysguardd> random
54
ksysguardd> random
5
ksysguardd> random
37
ksysguardd> random
41
ksysguardd> random
58
ksysguardd> random
36
ksysguardd> random
69
ksysguardd> random
83
ksysguardd>
</syntaxhighlight>

Latest revision as of 16:26, 15 July 2012

Implementing KSysGuard sensors simple example.

Prerequisities: KDE, Perl.

Imagine you have a program that monitors some value important for you. You want the value to be plotted or displayed in the KDE systray.

The most straightforward way is to add it to KSysGuard as a sensor.

Example

Step 1. Create, for example, "/home/vi/code/sensor/sensor.pl" with the following content:

#!/usr/bin/perl -w  
$|=1;

print "ksysguardd 1.2.0\n";
print "ksysguardd> ";

while(<>){
    if(/monitors/){
	print "random\tinteger\n";
    }
    if(/random/){
	if(/\?/){
	    print "Random Value\t0\t100\n";
	}else{
	    print int(rand()*100),"\n";
	}
    }
    print "ksysguardd> ";
}

Step 2: Launch KSysGuard, File->Connect Host->Custom Command, enter "/home/vi/code/sensor/sensor.pl" in the Command field, OK.

Step 3: Open "127.0.0.1", find "random Integer Value", drag it to some sheet.

You will see your sensor (random value from 0 to 100 in this case).

Systray

If you want to see the plot is your systray, follow this:

Step 1: Add "KSysGuard applet to the desktop".

Step 2: In there's no spare displays, choose "Configure System Guard" in the context menu of the applet and increase "Number of displays".

Step 3: Launch KSysGuard, follow previous example to get access to your sensor.

Step 4: Drag and drop from "random Integer Value" to the free display in the systray.

Step 5: "Signal plotter", then you will be asked again to provide the data source. Choose "Custom Command" with the same script.

[Step 6: Open properties and remove grids and lines to clean up the plot]

Protocol

The ksysguardd protocol: 1. Server sends version line ("ksysguardd 1.2.0") ended with newline. 2. Server sends "ksysguardd> " with spacebar and without newline. Available commands:

  monitors -- List available sensors
  <sensor name> -- Get the value of some sensor
  <sensor name>? -- Get the metadata of the sensor

"monitor" command: For each sensor, send the sensor name TAB the sensor type (integer) NEWLINE. Then go back to the prompt "ksysguardd> ".

get command: For integer sensors, server should send one integer value and NEWLINE.

info command: Server should send the Display Name of the sensor TAB minimum value TAB maximum value TAB units NEWLINE. Looks like this command or some part of it is optional.

Example session

Example of session:

ksysguardd 1.2.0
ksysguardd> random
96
ksysguardd> random
46
ksysguardd> monitors
random.integer
ksysguardd> random
11
ksysguardd> random?
Random Value.0.100
ksysguardd> random
47
ksysguardd> random
54
ksysguardd> random
5
ksysguardd> random
37
ksysguardd> random
41
ksysguardd> random
58
ksysguardd> random
36
ksysguardd> random
69
ksysguardd> random
83
ksysguardd>