60 lines
No EOL
2 KiB
Java
60 lines
No EOL
2 KiB
Java
import java.io.*;
|
|
import com.sun.jna.Library;
|
|
import com.sun.jna.Native;
|
|
import com.sun.jna.ptr.*;
|
|
|
|
import java.util.Date;
|
|
|
|
public class SensorsJNAPoll
|
|
{
|
|
public interface CLibrary extends Library {
|
|
|
|
static int TELLSTICK_TEMPERATURE = 1;
|
|
static int TELLSTICK_HUMIDITY = 2;
|
|
|
|
void tdInit();
|
|
void tdClose();
|
|
int tdTurnOn(int deviceId);
|
|
int tdTurnOff(int deviceId);
|
|
int tdSensor(byte[] protocol, int protocolLength, byte[] model, int modelLength, IntByReference id,IntByReference dataTypes);
|
|
int tdSensorValue(byte[] protocol, byte[] model, int id, int dataType, byte[] value, int valueLength, IntByReference timestamp);
|
|
}
|
|
|
|
public static void main(String[] args)
|
|
{
|
|
CLibrary lib = (CLibrary)Native.loadLibrary("libtelldus-core.so.2", CLibrary.class);
|
|
lib.tdInit();
|
|
|
|
IntByReference id = new IntByReference();
|
|
IntByReference dataTypes = new IntByReference();
|
|
|
|
System.out.println("getting sensors");
|
|
System.out.println("");
|
|
|
|
byte protocol[] = new byte[20];
|
|
byte model[] = new byte[20];
|
|
|
|
//check every sensor
|
|
while(lib.tdSensor(protocol, 20, model, 20, id, dataTypes) == 0){
|
|
System.out.println("Sensor: " + Native.toString(protocol) + " " + Native.toString(model));
|
|
|
|
byte value[] = new byte[20];
|
|
IntByReference timestamp = new IntByReference();
|
|
if((dataTypes.getValue() & CLibrary.TELLSTICK_TEMPERATURE) != 0){
|
|
lib.tdSensorValue(protocol, model, id.getValue(), 1, value, 20, timestamp);
|
|
long timestampvalue = (long)timestamp.getValue() * 1000;
|
|
Date date = new Date(timestampvalue);
|
|
System.out.println("Temperature: " + Native.toString(value) + "C, " + date.toString());
|
|
}
|
|
if((dataTypes.getValue() & CLibrary.TELLSTICK_HUMIDITY) != 0){
|
|
lib.tdSensorValue(protocol, model, id.getValue(), 2, value, 20, timestamp);
|
|
long timestampvalue = (long)timestamp.getValue() * 1000;
|
|
Date date = new Date(timestampvalue);
|
|
System.out.println("Humidity: " + Native.toString(value) + "%, " + date.toString());
|
|
}
|
|
System.out.println("");
|
|
}
|
|
lib.tdClose();
|
|
}
|
|
|
|
} |