2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 06:39:11 +00:00

70_Viera: add. GetStatus after on_off command

git-svn-id: https://svn.fhem.de/fhem/trunk@20869 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
mabula 2020-01-02 19:20:42 +00:00
parent d43f6a7bfe
commit 170165e014
2 changed files with 15 additions and 4 deletions

View File

@ -1,5 +1,7 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it. # Do not insert empty lines here, update check depends on it.
- bugfix: 70_VIERA: correction of "Rolling Key"
- feature: 70_VIERA: add. GetStatus after on_off command
- feature: 70_BRAVIA: new attribute wolBroadcast used as address for WOL packet - feature: 70_BRAVIA: new attribute wolBroadcast used as address for WOL packet
- change: 74_XiaomiBTLESens: add special patch from charlie71 - change: 74_XiaomiBTLESens: add special patch from charlie71
- bugfix: 93_DbLog: fix behavior if value is empty and attribute - bugfix: 93_DbLog: fix behavior if value is empty and attribute

View File

@ -9,9 +9,13 @@
# since version 1.25 modified by mabula # since version 1.25 modified by mabula
# #
# #
# Version = 1.27 # Version = 1.28
# #
# Version History: # Version History:
# - 1.28 - 2019-12-14 Dr. H-J Breymayer
# -- correction of "Rolling Key" in case of bad command
# -- GetStatus call after on_off command
#
# - 1.27 - 2019-12-14 Dr. H-J Breymayer # - 1.27 - 2019-12-14 Dr. H-J Breymayer
# -- recognition of orange power LED indicator, new state dormant # -- recognition of orange power LED indicator, new state dormant
# -- attribute webCmd changed "webCmd on_off" # -- attribute webCmd changed "webCmd on_off"
@ -299,6 +303,8 @@ sub VIERA_Set($@) {
Log3 $name, 3, "$name: Set on_off"; Log3 $name, 3, "$name: Set on_off";
VIERA_Encrypted_Command($hash, "POWER"); VIERA_Encrypted_Command($hash, "POWER");
VIERA_Encrypt_Answer($hash); VIERA_Encrypt_Answer($hash);
sleep 0.6;
VIERA_GetStatus($hash, 1);
} }
elsif ($what eq "channel"){ elsif ($what eq "channel"){
return "$name: Channel is too high or low!" if($state < 1 || $state > 9999); return "$name: Channel is too high or low!" if($state < 1 || $state > 9999);
@ -928,19 +934,22 @@ sub VIERA_Encrypt_Answer($) {
$answer = $hash->{helper}{BUFFER} if ($hash->{helper}{BUFFER} ne ""); $answer = $hash->{helper}{BUFFER} if ($hash->{helper}{BUFFER} ne "");
if (index($answer, "HTTP/1.1 200 OK") == -1) { if (index($answer, "HTTP/1.1 200 OK") == -1) {
if ($hash->{helper}{session_seq_num} ne "None") { if (index($answer, "Bad Request") != -1) {
if ($hash->{helper}{session_seq_num} ne "None") {
$hash->{helper}{session_seq_num} -= 1; $hash->{helper}{session_seq_num} -= 1;
} }
}
Log3 $name, 3, "$name wrong encrypted VIERA command: \r\n\"$answer\""; Log3 $name, 3, "$name wrong encrypted VIERA command: \r\n\"$answer\"";
return undef; return undef;
} }
if ($hash->{helper}{is_encrypted}) { if ($hash->{helper}{is_encrypted} == 1) {
my $iS = index($answer, "<X_EncResult>"); my $iS = index($answer, "<X_EncResult>");
my $iE = index($answer, "</X_EncResult>"); my $iE = index($answer, "</X_EncResult>");
$answer = substr($answer, $iS+13, $iE-$iS-13); $answer = substr($answer, $iS+13, $iE-$iS-13);
$answer = VIERA_decrypt_soap_payload($answer, $hash->{helper}{session_key}, $hash->{helper}{session_IV}); $answer = VIERA_decrypt_soap_payload($answer, $hash->{helper}{session_key}, $hash->{helper}{session_IV});
Log3 $name, 5, "$name decrypted VIERA answer: \r\n\"$answer\"";
} }
return $answer; return $answer;