Juerd / eq3-max

Yet another thing that talks to the "eQ-3 MAX! Cube Lan Gateway"
Other
34 stars 15 forks source link

Name command not working #1

Closed bilbolodz closed 7 years ago

bilbolodz commented 7 years ago

When I'm trying to set name for a valve:

./bin/max name 134237 "Valve bedroom"

I've got an error:

Can't call method "id" on an undefined value at /opt/eq3-max/bin/../lib/Max.pm line 299, line 17.

Juerd commented 7 years ago

Could you please provide the output of the following commands?

The second command has to be executed from main directory, so cd there first. Please use https://gist.github.com/ for pasting the output and share the URLs.

Juerd commented 7 years ago

https://github.com/Juerd/eq3-max/commit/fa97743f5ce6ef653e041613482033deaa98a38f might fix it, by the way.

bilbolodz commented 7 years ago

cubie@Cubian:~$ max status Found cube at 192.168.105.15 Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 125, line 17. Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 126, line 17. Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 125, line 17. Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 126, line 17. Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 125, line 17. Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 126, line 17. Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 125, line 17. Use of uninitialized value $setpoint in bitwise and (&) at /opt/eq3-max/bin/../lib/Max.pm line 126, line 17.

cubie@Cubian:~$ perl -Ilib -MMax -MData::Dumper -e'print Dumper +Max->connect(Max->discover)' Can't locate Max.pm in @INC (@INC contains: lib /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .). BEGIN failed--compilation aborted.

Juerd commented 7 years ago
Kontaktron okienny 1(0fb2b4) auto@0.0 

What does kontaktron mean? I think this is a device type that is not yet supported by this software.

  • Sypialnia(2) Termostat Sypialnia(134237) auto@19.0 (valve at 0%)

Interesting; I thought th device you were trying to name, would not be assigned to a room. But clearly it is.

cubie@Cubian:~$ perl -Ilib -MMax -MData::Dumper -e'print Dumper +Max->connect(Max->discover)' Can't locate Max.pm in @INC (@INC contains: lib /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .). BEGIN failed--compilation aborted.

This command needs to be run from the directory in which the 'lib' and 'bin' folder are. For example, if your git checkout is in /opt/eq3-max, then cd /opt/eq3-max before running perl -Ilib -MMax -MData::Dumper -e'print Dumper +Max->connect(Max->discover)'

bilbolodz commented 7 years ago

"Kontaktron okienny 1(0fb2b4)" it's "open windows sensor

Output of second command: ' $VAR1 = bless( { 'metadata_tmp' => [], 'serial' => 'LEQ0429224', 'firmware' => '0113', 'devices' => { ' d' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'LEQ1128382', 'name' => 'Termostat Dominik', 'test_result' => 160, 'max' => $VAR1, 'room' => bless( { 'name' => 'Pokoj Dominik', 'max' => $VAR1, 'id' => 1, 'addr' => ' d', 'devices' => { ' d' => $VAR1->{'devices'}{' d'}, '��' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'LEQ1112884', 'name' => 'Kontaktron okienny 1', 'test_result' => 0, 'max' => $VAR1, 'room' => $VAR1->{'devices'}{' d'}{'room'}, 'firmware' => '1.6', 'setpoint' => '0', 'type' => 4, 'valve' => undef, 'addr' => '��', 'temperature' => '0' }, 'Max::Device' ) } }, 'Max::Room' ), 'firmware' => '1.6', 'setpoint' => '22', 'type' => 1, 'valve' => 100, 'addr' => ' d', 'temperature' => '0' }, 'Max::Device' ), '��' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'MEQ1450675', 'name' => 'Termostat srodkowy', 'test_result' => 161, 'max' => $VAR1, 'room' => bless( { 'name' => 'Salon', 'max' => $VAR1, 'id' => 5, 'addr' => ' �', 'devices' => { ' => bless( { ' 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'MEQ1457815', 'name' => 'Termostat lewy', 'test_result' => 161, 'max' => $VAR1, 'room' => $VAR1->{'devices'}{'��'}{'room'}, 'firmware' => '1.6', 'setpoint' => '21', 'type' => 1, 'valve' => 100, ', 'addr' => ' 'temperature' => '0' }, 'Max::Device' ), 'x�' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'NEQ1201071', 'name' => 'Termostat ścienny salon', 'test_result' => 255, 'max' => $VAR1, 'room' => $VAR1->{'devices'}{'��'}{'room'}, 'firmware' => '1.6', 'setpoint' => '21', 'type' => 3, 'valve' => 4, 'addr' => 'x�', 'temperature' => '20.4' }, 'Max::Device' ), '��' => $VAR1->{'devices'}{'��'}, ' �' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'MEQ1459490', 'name' => 'Termostat prawy', 'test_result' => 161, 'max' => $VAR1, 'room' => $VAR1->{'devices'}{'��'}{'room'}, 'firmware' => '1.6', 'setpoint' => '21', 'type' => 1, 'valve' => 100, 'addr' => ' �', 'temperature' => '0' }, 'Max::Device' ) } }, 'Max::Room' ), 'firmware' => '1.6', 'setpoint' => '21', 'type' => 1, 'valve' => 100, 'addr' => '��', 'temperature' => '0' }, 'Max::Device' ), '��' => $VAR1->{'devices'}{' d'}{'room'}{'devices'}{'��'}, ' ��' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'KEQ0520581', 'name' => 'Przycisk Eco wejście', 'test_result' => 15, 'max' => $VAR1, 'firmware' => '1.9', 'setpoint' => '0', 'type' => 5, 'valve' => undef, 'addr' => ' ��', 'temperature' => '0' }, 'Max::Device' ), 'ߢ' => bless( { 'serial' => 'LEQ0429224', 'test_result' => 255, 'max' => $VAR1, 'type' => 0, 'room' => bless( { 'max' => $VAR1, 'id' => 19, 'devices' => { 'ߢ' => $VAR1->{'devices'}{'ߢ'} } }, 'Max::Room' ), 'firmware' => '0.1', 'addr' => 'ߢ' }, 'Max::Device' ), '�K' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'NEQ1203944', 'name' => 'Termostat ścienny 1', 'test_result' => 255, 'max' => $VAR1, 'room' => bless( { 'name' => 'Sypialnia', 'max' => $VAR1, 'id' => 2, 'addr' => 'B7', 'devices' => { 'B7' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'MEQ1398134', 'name' => 'Termostat Sypialnia', 'test_result' => 255, 'max' => $VAR1, 'room' => $VAR1->{'devices'}{'�K'}{'room'}, 'firmware' => '1.6', 'setpoint' => '19', 'type' => 2, 'valve' => 0, 'addr' => 'B7', 'temperature' => '0' }, 'Max::Device' ), '��' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'LEQ1108703', 'name' => 'Kontaktron okienny 1', 'test_result' => 0, 'max' => $VAR1, 'room' => $VAR1->{'devices'}{'�K'}{'room'}, 'firmware' => '1.6', 'setpoint' => '0', 'type' => 4, 'valve' => undef, 'addr' => '��', 'temperature' => '0' }, 'Max::Device' ), '�K' => $VAR1->{'devices'}{'�K'} } }, 'Max::Room' ), 'firmware' => '1.6', 'setpoint' => '19', 'type' => 3, 'valve' => 4, 'addr' => '�K', 'temperature' => '19.9' }, 'Max::Device' ), 'B' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'MEQ1398100', 'name' => 'Termostat Piotr', 'test_result' => 255, 'max' => $VAR1, 'room' => bless( { 'name' => 'Pokoj Piotr', 'max' => $VAR1, 'id' => 4, 'addr' => 'B', 'devices' => { 'B' => $VAR1->{'devices'}{'B'}, '݃' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'NEQ0163757', 'name' => 'Kontaktron okienny 1', 'test_result' => 0, 'max' => $VAR1, 'room' => $VAR1->{'devices'}{'B'}{'room'}, 'firmware' => '1.6', 'setpoint' => '0', 'type' => 4, 'valve' => undef, 'addr' => '݃', 'temperature' => '0' }, 'Max::Device' ) } }, 'Max::Room' ), 'firmware' => '1.6', 'setpoint' => '21', 'type' => 2, 'valve' => 56, 'addr' => 'B', 'temperature' => '0' }, 'Max::Device' ), '},> $VAR1->{'devices'}{'��'}{'room'}{'devices'}{' 'x�' => $VAR1->{'devices'}{'��'}{'room'}{'devices'}{'x�'}, 'B7' => $VAR1->{'devices'}{'�K'}{'room'}{'devices'}{'B7'}, '݃' => $VAR1->{'devices'}{'B'}{'room'}{'devices'}{'݃'}, ' �' => bless( { 'flags' => { 'battery' => 0, 'link' => 0, 'error' => 0, 'invalid' => 0, 'init' => 0 }, 'mode' => 0, 'serial' => 'LEQ1128403', 'name' => 'Termostat 1', 'test_result' => 160, 'max' => $VAR1, 'room' => bless( { 'name' => 'Lazienka', 'max' => $VAR1, 'id' => 3, 'addr' => ' �', 'devices' => { ' �' => $VAR1->{'devices'}{' �'} } }, 'Max::Room' ), 'firmware' => '1.6', 'setpoint' => '22', 'type' => 1, 'valve' => 77, 'addr' => ' �', 'temperature' => '0' }, 'Max::Device' ), ' �' => $VAR1->{'devices'}{'��'}{'room'}{'devices'}{' �'}, '��' => $VAR1->{'devices'}{'�K'}{'room'}{'devices'}{'��'} }, 'host' => '192.168.105.15', 'devicenames' => {}, 'rooms' => { '4' => $VAR1->{'devices'}{'B'}{'room'}, '1' => $VAR1->{'devices'}{' d'}{'room'}, '3' => $VAR1->{'devices'}{' �'}{'room'}, '19' => $VAR1->{'devices'}{'ߢ'}{'room'}, '2' => $VAR1->{'devices'}{'�K'}{'room'}, '5' => $VAR1->{'devices'}{'��'}{'room'} }, 'addr' => '0edfa2', 'sock' => bless( *Symbol::GEN2, 'IO::Socket::INET' ) }, 'Max' ); '

Juerd commented 7 years ago

Thanks. I think the cause of the problem was the Eco button, which doesn't have a room assigned. I don't have an eco button, or window shutters, so I never tested with those things.

As notified before, I've pushed a new commit in an attempt to solve this issue. Could you upgrade to https://github.com/Juerd/eq3-max/commit/fa97743f5ce6ef653e041613482033deaa98a38f using git pull in the right directory, and let me know if that changes anything?

bilbolodz commented 7 years ago

Thank you. Now it working. Eco button ALWAYS is NOT assigned to particular room. It's device for "whole house" (as I remember it could be two pieces of Eco switch per Cube) so it assigned "to the house".