merge from devel
This commit is contained in:
		@@ -67,7 +67,7 @@ use Blocking;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $version = "0.8.0";
 | 
					my $version = "1.0.0";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -104,6 +104,7 @@ sub LGTV_WebOS_Presence($);
 | 
				
			|||||||
sub LGTV_WebOS_PresenceRun($);
 | 
					sub LGTV_WebOS_PresenceRun($);
 | 
				
			||||||
sub LGTV_WebOS_PresenceDone($);
 | 
					sub LGTV_WebOS_PresenceDone($);
 | 
				
			||||||
sub LGTV_WebOS_PresenceAborted($);
 | 
					sub LGTV_WebOS_PresenceAborted($);
 | 
				
			||||||
 | 
					sub LGTV_WebOS_WakeUp_Udp($@);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -165,7 +166,8 @@ my %openApps = (
 | 
				
			|||||||
            'ARDMediathek'              => 'ard.mediathek',
 | 
					            'ARDMediathek'              => 'ard.mediathek',
 | 
				
			||||||
            'Arte'                      => 'com.3827031.168353',
 | 
					            'Arte'                      => 'com.3827031.168353',
 | 
				
			||||||
            'WetterMeteo'               => 'meteonews',
 | 
					            'WetterMeteo'               => 'meteonews',
 | 
				
			||||||
            'Notificationcenter'        => 'com.webos.app.notificationcenter'
 | 
					            'Notificationcenter'        => 'com.webos.app.notificationcenter',
 | 
				
			||||||
 | 
					            'Plex'                      => 'cdp-30'
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my %openAppsPackageName = (
 | 
					my %openAppsPackageName = (
 | 
				
			||||||
@@ -187,7 +189,8 @@ my %openAppsPackageName = (
 | 
				
			|||||||
            'ard.mediathek'                     => 'ARDMediathek',
 | 
					            'ard.mediathek'                     => 'ARDMediathek',
 | 
				
			||||||
            'com.3827031.168353'                => 'Arte',
 | 
					            'com.3827031.168353'                => 'Arte',
 | 
				
			||||||
            'meteonews'                         => 'WetterMeteo',
 | 
					            'meteonews'                         => 'WetterMeteo',
 | 
				
			||||||
            'com.webos.app.notificationcenter'  => 'Notificationcenter'
 | 
					            'com.webos.app.notificationcenter'  => 'Notificationcenter',
 | 
				
			||||||
 | 
					            'cdp-30'                            => 'Plex'
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -211,6 +214,8 @@ sub LGTV_WebOS_Initialize($) {
 | 
				
			|||||||
    $hash->{AttrList}   = "disable:1 ".
 | 
					    $hash->{AttrList}   = "disable:1 ".
 | 
				
			||||||
                          "channelGuide:1 ".
 | 
					                          "channelGuide:1 ".
 | 
				
			||||||
                          "pingPresence:1 ".
 | 
					                          "pingPresence:1 ".
 | 
				
			||||||
 | 
					                          "wakeOnLanMAC ".
 | 
				
			||||||
 | 
					                          "wakeOnLanBroadcast ".
 | 
				
			||||||
                          $readingFnAttributes;
 | 
					                          $readingFnAttributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -239,6 +244,7 @@ sub LGTV_WebOS_Define($$) {
 | 
				
			|||||||
    $hash->{helper}{device}{channelguide}{counter}  = 0;
 | 
					    $hash->{helper}{device}{channelguide}{counter}  = 0;
 | 
				
			||||||
    $hash->{helper}{device}{registered}             = 0;
 | 
					    $hash->{helper}{device}{registered}             = 0;
 | 
				
			||||||
    $hash->{helper}{device}{runsetcmd}              = 0;
 | 
					    $hash->{helper}{device}{runsetcmd}              = 0;
 | 
				
			||||||
 | 
					    $hash->{helper}{device}{channelguide}{counter}  = 'none';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Log3 $name, 3, "LGTV_WebOS ($name) - defined with host $host";
 | 
					    Log3 $name, 3, "LGTV_WebOS ($name) - defined with host $host";
 | 
				
			||||||
@@ -432,8 +438,13 @@ sub LGTV_WebOS_Set($@) {
 | 
				
			|||||||
        if($cmd eq 'off') {
 | 
					        if($cmd eq 'off') {
 | 
				
			||||||
            $uri                                = $lgCommands{powerOff};
 | 
					            $uri                                = $lgCommands{powerOff};
 | 
				
			||||||
        } elsif ($cmd eq 'on') {
 | 
					        } elsif ($cmd eq 'on') {
 | 
				
			||||||
 | 
					            if( AttrVal($name,'wakeOnLanMAC','none') ne 'none' ) {
 | 
				
			||||||
 | 
					                LGTV_WebOS_WakeUp_Udp($hash,AttrVal($name,'wakeOnLanMAC',0),AttrVal($name,'wakeOnLanBroadcast','255.255.255.255'));
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
                $uri                                = $lgCommands{powerOn};
 | 
					                $uri                                = $lgCommands{powerOn};
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    } elsif($cmd eq '3D') {
 | 
					    } elsif($cmd eq '3D') {
 | 
				
			||||||
        return "usage: 3D on/off" if( @args != 1 );
 | 
					        return "usage: 3D on/off" if( @args != 1 );
 | 
				
			||||||
@@ -549,7 +560,7 @@ sub LGTV_WebOS_Set($@) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        my  $list = ""; 
 | 
					        my  $list = ""; 
 | 
				
			||||||
        $list .= "connect:noArg pairing:noArg screenMsg mute:on,off volume:slider,0,1,100 volumeUp:noArg volumeDown:noArg channelDown:noArg channelUp:noArg getServiceList:noArg on:noArg off:noArg launchApp:Maxdome,AmazonVideo,YouTube,Netflix,TV,GooglePlay,Browser,Chilieu,TVCast,Smartshare,Scheduler,Miracast,TVGuide,Timemachine,ARDMediathek,Arte,WetterMeteo,Notificationcenter 3D:on,off stop:noArg play:noArg pause:noArg rewind:noArg fastForward:noArg clearInputList:noArg input:$inputs channel";
 | 
					        $list .= "connect:noArg pairing:noArg screenMsg mute:on,off volume:slider,0,1,100 volumeUp:noArg volumeDown:noArg channelDown:noArg channelUp:noArg getServiceList:noArg on:noArg off:noArg launchApp:Maxdome,AmazonVideo,YouTube,Netflix,TV,GooglePlay,Browser,Chilieu,TVCast,Smartshare,Scheduler,Miracast,TVGuide,Timemachine,ARDMediathek,Arte,WetterMeteo,Notificationcenter,Plex 3D:on,off stop:noArg play:noArg pause:noArg rewind:noArg fastForward:noArg clearInputList:noArg input:$inputs channel";
 | 
				
			||||||
        return "Unknown argument $cmd, choose one of $list";
 | 
					        return "Unknown argument $cmd, choose one of $list";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -628,7 +639,7 @@ sub LGTV_WebOS_Read($) {
 | 
				
			|||||||
    my $buf;
 | 
					    my $buf;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    Log3 $name, 4, "LGTV_WebOS ($name) - ReadFn gestartet";
 | 
					    Log3 $name, 4, "LGTV_WebOS ($name) - ReadFn started";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $len = sysread($hash->{CD},$buf,10240);
 | 
					    $len = sysread($hash->{CD},$buf,10240);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -640,7 +651,7 @@ sub LGTV_WebOS_Read($) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	unless( defined $buf) { 
 | 
						unless( defined $buf) { 
 | 
				
			||||||
        Log3 $name, 3, "LGTV_WebOS ($name) - Keine Daten empfangen";
 | 
					        Log3 $name, 3, "LGTV_WebOS ($name) - no data received";
 | 
				
			||||||
        return; 
 | 
					        return; 
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -807,7 +818,10 @@ sub LGTV_WebOS_ResponseProcessing($$) {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        my $decode_json     = decode_json(encode_utf8($json));
 | 
					        my $decode_json     = decode_json(encode_utf8($json));
 | 
				
			||||||
 | 
					        if($@){
 | 
				
			||||||
 | 
					            Log3 $name, 3, "LGTV_WebOS ($name) - JSON error while request: $@";
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LGTV_WebOS_WriteReadings($hash,$decode_json);
 | 
					        LGTV_WebOS_WriteReadings($hash,$decode_json);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -825,6 +839,7 @@ sub LGTV_WebOS_WriteReadings($$) {
 | 
				
			|||||||
    my $name            = $hash->{NAME};
 | 
					    my $name            = $hash->{NAME};
 | 
				
			||||||
    my $mute;
 | 
					    my $mute;
 | 
				
			||||||
    my $response;
 | 
					    my $response;
 | 
				
			||||||
 | 
					    my %channelList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    Log3 $name, 4, "LGTV_WebOS ($name) - Beginn Readings writing";
 | 
					    Log3 $name, 4, "LGTV_WebOS ($name) - Beginn Readings writing";
 | 
				
			||||||
@@ -1403,6 +1418,32 @@ sub LGTV_WebOS_PresenceAborted($) {
 | 
				
			|||||||
    Log3 $name, 4, "Sub LGTV_WebOS_PresenceAborted ($name) - The BlockingCall Process terminated unexpectedly. Timedout!";
 | 
					    Log3 $name, 4, "Sub LGTV_WebOS_PresenceAborted ($name) - The BlockingCall Process terminated unexpectedly. Timedout!";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sub LGTV_WebOS_WakeUp_Udp($@) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my ($hash,$mac_addr,$host,$port) = @_;
 | 
				
			||||||
 | 
					    my $name  = $hash->{NAME};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $port = 9 if (!defined $port || $port !~ /^\d+$/ );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    my $sock = new IO::Socket::INET(Proto=>'udp') or die "socket : $!";
 | 
				
			||||||
 | 
					    if(!$sock) {
 | 
				
			||||||
 | 
					        Log3 $name, 3, "Sub LGTV_WebOS_WakeUp_Udp ($name) - Can't create WOL socket";
 | 
				
			||||||
 | 
					        return 1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    my $ip_addr   = inet_aton($host);
 | 
				
			||||||
 | 
					    my $sock_addr = sockaddr_in($port, $ip_addr);
 | 
				
			||||||
 | 
					    $mac_addr     =~ s/://g;
 | 
				
			||||||
 | 
					    my $packet    = pack('C6H*', 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, $mac_addr x 16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setsockopt($sock, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt : $!";
 | 
				
			||||||
 | 
					    send($sock, $packet, 0, $sock_addr) or die "send : $!";
 | 
				
			||||||
 | 
					    close ($sock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
####### Presence Erkennung Ende ############
 | 
					####### Presence Erkennung Ende ############
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1506,6 +1547,18 @@ sub LGTV_WebOS_PresenceAborted($) {
 | 
				
			|||||||
            current state of ping presence from TV. create a reading presence with values absent or present.
 | 
					            current state of ping presence from TV. create a reading presence with values absent or present.
 | 
				
			||||||
        </ul>
 | 
					        </ul>
 | 
				
			||||||
    </ul>
 | 
					    </ul>
 | 
				
			||||||
 | 
					    <ul>
 | 
				
			||||||
 | 
					        <ul>
 | 
				
			||||||
 | 
					            <li>wakeOnLanMAC</li>
 | 
				
			||||||
 | 
					            Network MAC Address of the LG TV Networkdevice.
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
 | 
					    <ul>
 | 
				
			||||||
 | 
					        <ul>
 | 
				
			||||||
 | 
					            <li>wakeOnLanBroadcast</li>
 | 
				
			||||||
 | 
					            Broadcast Address of the Network - wakeOnLanBroadcast <network>.255
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
</ul>
 | 
					</ul>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=end html
 | 
					=end html
 | 
				
			||||||
@@ -1597,6 +1650,22 @@ sub LGTV_WebOS_PresenceAborted($) {
 | 
				
			|||||||
            <ul>Mögliche Werte: 0 => keine zyklischen TV-Guide-Updates, 1 => zyklische TV-Guide-Updates</ul>
 | 
					            <ul>Mögliche Werte: 0 => keine zyklischen TV-Guide-Updates, 1 => zyklische TV-Guide-Updates</ul>
 | 
				
			||||||
        </ul>
 | 
					        </ul>
 | 
				
			||||||
    </ul>
 | 
					    </ul>
 | 
				
			||||||
 | 
					    <ul>
 | 
				
			||||||
 | 
					        <ul>
 | 
				
			||||||
 | 
					            <ul>
 | 
				
			||||||
 | 
					                <li>wakeOnLanMAC</li>
 | 
				
			||||||
 | 
					                MAC Addresse der Netzwerkkarte vom LG TV
 | 
				
			||||||
 | 
					            </ul>
 | 
				
			||||||
 | 
					        </ul>        
 | 
				
			||||||
 | 
					    </ul>    
 | 
				
			||||||
 | 
					    <ul>
 | 
				
			||||||
 | 
					        <ul>
 | 
				
			||||||
 | 
					            <ul>
 | 
				
			||||||
 | 
					                <li>wakeOnLanBroadcast</li>
 | 
				
			||||||
 | 
					                Broadcast Netzwerkadresse - wakeOnLanBroadcast <netzwerk>.255
 | 
				
			||||||
 | 
					            </ul>
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
    <p><br /><br /><strong>Generierte Readings/Events:</strong></p>
 | 
					    <p><br /><br /><strong>Generierte Readings/Events:</strong></p>
 | 
				
			||||||
    <ul>
 | 
					    <ul>
 | 
				
			||||||
        <ul>
 | 
					        <ul>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user