File: 020-rfspi.t

package info (click to toggle)
libhipi-perl 0.93-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 20,048 kB
  • sloc: perl: 471,917; ansic: 22; makefile: 10
file content (141 lines) | stat: -rw-r--r-- 3,673 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!perl

use Test::More tests => 18;
use HiPi qw( :rpi :mcp23017 );
use HiPi::RaspberryPi;
use Time::HiRes;
use HiPi::GPIO;
use HiPi::Interface::MCP23017;

my $sleepwait = 1000;

SKIP: {
        skip 'not in dist testing', 18 unless( $ENV{HIPI_MODULES_DIST_TEST_RFSPI_DEV_0} || $ENV{HIPI_MODULES_DIST_TEST_RFSPI_DEV_1} );

diag('SPI RF tests are running');
    
use_ok( HiPi::Energenie );

my $monitor_1 = '0004-0001-000A54';
my $adapter_1 = '0004-0002-000E08';
my $adapter_2 = '0004-0002-002BA0';

my $reset_gpio;

if ( $ENV{HIPI_MODULES_DIST_TEST_RFSPI_DEV_1} ) {
    $reset_gpio = RPI_PIN_22;
    
    #$gpio = HiPi::GPIO->new;
    #$gpio->set_pin_mode( $reset_pin, RPI_MODE_OUTPUT ) if( $gpio->get_pin_mode($reset_pin) != RPI_MODE_OUTPUT );
    #$gpio->pin_write($reset_pin, RPI_LOW);
} else {
    my $mcp = HiPi::Interface::MCP23017->new(
        devicename => '/dev/i2c-1',
        address    => 0x20,
    );
    $mcp->pin_mode( MCP_PIN_A1, MCP23017_OUTPUT );
    $reset_gpio = sub {
        my $value = shift;
        $mcp->pin_value( MCP_PIN_A1, $value );
    };
}



my $device_name = $ENV{HIPI_MODULES_DIST_TEST_RFSPI_DEV_0} ? '/dev/spidev0.0' : '/dev/spidev0.1';

my %handler_params = ( $ENV{HIPI_MODULES_DIST_TEST_RFSPI_HIGH_POWER} )
    ? ( backend => 'RF69HW', devicename => $device_name )
    : ( backend => 'ENER314_RT', devicename => $device_name );

my $handler = HiPi::Energenie->new(
    %handler_params,
    reset_gpio => $reset_gpio,
);

if ($handler_params{backend} eq 'RF69HW' ) {
    diag 'RF SPI USING HIGH POWER MODULE ON ' . $handler_params{devicename};
} else {
    diag 'RF SPI USING LOW POWER MODULE ON ' . $handler_params{devicename};
}

my $val = $handler->process_request(
    command         => 'query',
    sensor_key      => $monitor_1,
);

my $data = $val->{data};

my $record = $data->records->[0];
is( $record->name, 'Real Power', 'monitor Real Power name' );


$record = $data->records->[1];
is( $record->name, 'Reactive Power', 'monitor Reactive Power name' );


$record = $data->records->[2];
is( $record->name, 'Voltage', 'monitor Voltage name' );


$record = $data->records->[3];
is( $record->name, 'Frequency', 'monitor Frequency name' );

$val = $handler->process_request(
    command         => 'query',
    sensor_key      => $adapter_1,
);

$data = $val->{data};

$record = $data->records->[0];
is( $record->name, 'Real Power', 'adapter Real Power name' );


$record = $data->records->[1];
is( $record->name, 'Reactive Power', 'adapter Reactive Power name' );


$record = $data->records->[2];
is( $record->name, 'Voltage', 'adapter Voltage name' );


$record = $data->records->[3];
is( $record->name, 'Frequency', 'adapter Frequency name' );

$record = $data->records->[4];
is( $record->name, 'Switch State', 'adapter Switch State name' );

$val = $handler->process_request(
    command         => 'switch',
    sensor_key      => $adapter_2,
    switch_state    => 1
);

is( $val->{success}, 1, 'adapter switched on' );

$record = $val->{data}->records->[-1];
is( $record->name, 'Switch State', 'adapter switched on Switch State name' );
is( $record->value, 1, 'adapter switched on value' );

sleep 2;

$val = $handler->process_request(
    command         => 'switch',
    sensor_key      => $adapter_2,
    switch_state    => 0
);

is( $val->{success}, 1, 'adapter switched off' );

$record = $val->{data}->records->[-1];
is( $record->name, 'Switch State', 'adapter switched off Switch State name' );
is( $record->value, 0, 'adapter switched off value' );

is( $handler->switch_socket( 0x0C976E, 2, 1 ), undef ,'socket on');
sleep 2;
is( $handler->switch_socket( 0x0C976E, 2, 0 ), undef ,'socket off');

} # End SKIP

1;