ELV Powerline Schaltsteckdose SOP112

Aus FHEMWiki
Version vom 30. Dezember 2015, 23:43 Uhr von JoergOstertag (Diskussion | Beiträge) (Initiale Information über die SOP112 Steckdosen)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

ELV Powerline Schaltsteckdose SOP112=

Die [ELV Powerline Schaltsteckdose SOP112] gibt es bei [hier bei ELV].

Die Steckdosen werden über einen (im Set enthaltenen) Powerline Adapter an das Lokale Netzwerk angebunden. Jede Steckdose bekommt (über DHCP) eine eigene IP Adresse und kann dann darüber angesprochen werden.

Die Steckdosen können sowohl direkt aus dem LAN gesteuert und abgefragt werden. Zu den Steckdosen gibt es auch eine APP mit der man aus dem Internet die Steckdosen abfragen und steuern kann. Die Steckdosen messen auch die Leistungsaufnahme des angeschlossenen Verbrauchers.


Stromverbrauch

Noch was zur Hardware: Die Dosen selbst (den Powerlan-AP habe ich noch nicht gemessen) benötigen 2 Watt für den Eigenbedarf.


Ansteuerung

Exemplarisch mit curl:

 curl --globoff -v 'http://192.168.0.222/?cmd=200&json={"sn":"SWP1040003001149","state":1}


Über den PL501 Adapter wird in meinem Netz per dhcp eine IP-Adresse für jede Steckdose zugewiesen. Der Power Plug, also der schaltbare Adapter, hat eine Serien Nummer aufgedruckt, z.B. so etwas wie SW10400100123 Sendet man per Browser

 http://192.168.3.82/?cmd=200&json={"sn":"SWP1040001000123","port":0,"state":1}

wird die Steckdose eingeschaltet

Einschalten:

http://192.168.xxx.yyy/?cmd=200&json={"state":0}
für aus und state=1 für an.

Abfragen Alles:

http://192.168.xxx.yyy/?cmd=511
{"response":511,"code":200,"data":{"watt":["0.00"],"amp":["0.0"],"switch":[0]}}

Abfragen Limit:

http://192.168.xxx.yyy/?cmd=512
{"response":512,"code":200,"data":{"master":[0],"limit":0}}

Abfrage Status:

http://192.168.xxx.yyy/?cmd=513
{"response":513,"code":200,"data":{"switch":[0]}}

Abfrage Regeln:

http://192.168.xxx.yyy/?cmd=514
{"response":514,"code":200,"data":{"rule":[]}}

Abfrage:

http://192.168.xxx.yyy/?cmd=515
{"response":515,"code":200,"data":{"start":"
dann geht es mit Steuerzeichen weiter.

Steuerung aus fhem heraus

Perl Schnipsel

Schalten der Dosen:

sub SOP_set($$)
{
	my ($SOP,$Event) = @_;
	my $state=0;
	if ($Event eq "on" || $Event eq "start") {$state=1; $Event = "on"} else {$Event = "off"};
	if (Value($SOP) ne $Event) {fhem("set ".$SOP." ".$Event)};
	my $waste = GetFileFromURL ("http://192.168.xxx.".AttrVal($SOP,"IP",1)."/?cmd=200&json={%22port%22:0,%22state%22:".$state."}");
	(my $SOPDummy = $SOP) =~ s/\.SOP112/.SOP/;
	SOP_reading();
}


Auslesen der Daten: (Pre)

sub
SOP_reading()
{
	use Math::Round qw/round/;
	#my ($NAME,$state) = @_;
	my $SOP;
	my $Muster = '[\[\]"}]+';
	foreach $SOP (devspec2array("Type=SOP112"))
	{
		(my $SOPDummy = $SOP) =~ s/\.SOP112/.SOP/;
		my $ret1 = GetFileFromURL ("http://192.168.4.".AttrVal($SOP,"IP",1)."/?cmd=511");
		my @Wert = split /[:,]/, "$ret1",6;
		my @Data = split /[:,]/, $Wert[5];
		if ($Wert[1] == 511)
		{
			(my $watt = $Data[1]) =~ s/$Muster//g;
			(my $amp = $Data[3]) =~ s/$Muster//g;
			(my $switch = $Data[5]) =~ s/$Muster//g;
			if (ReadingsVal($SOP,"amp",0) != $amp ) {fhem("setreading ".$SOP." amp ".$amp)};
			$watt = round($watt);
			if (ReadingsVal($SOP,"watt",0) != $watt ) {fhem("setreading ".$SOP." watt ".$watt)};
			if ($watt < AttrVal($SOP,"Ready",1) && Value($SOPDummy) eq "on") {
				fhem ("set ".$SOPDummy." ready");SOP_set ($SOP,"off");
			}
			else
			{
				if (ReadingsVal($SOP,"switch",0) != $switch ) {fhem("setreading ".$SOP." switch ".$switch)};
				$switch = "on"; if (ReadingsVal($SOP,"switch",0) == 0) {$switch = "off"};
				if (ReadingsVal($SOP,"state","") ne $switch ) {SOP_set($SOP,$switch)};
			}
			if ($watt > AttrVal($SOP,"Ready",1) && (Value($SOPDummy) eq "start"||Value($SOPDummy) eq "ooo")) {
				if (Value($SOPDummy) ne "on" ) {fhem ("set ".$SOPDummy." on")};
			};

			if (Value($SOPDummy) eq "stop")
			{
				fhem ("set ".$SOPDummy." off");
			};

			my $ret2 = GetFileFromURL ("http://192.168.4.".AttrVal($SOP,"IP",1)."/?cmd=512");
			@Wert = split /[:,]/, "$ret2",6;
			@Data = split /[:,]/, $Wert[5];
			(my $master = $Data[1]) =~ s/$Muster//g;
			(my $limit = $Data[3]) =~ s/$Muster//g;
			if (ReadingsVal($SOP,"master",0) != $master ) {fhem("setreading ".$SOP." master ".$master)};
			if (ReadingsVal($SOP,"limit",0) != $limit ) {fhem("setreading ".$SOP." limit ".$limit)};

			my $ret3 = GetFileFromURL ("http://192.168.xxx.".AttrVal($SOP,"IP",1)."/?cmd=512");
			@Wert = split /[:,]/, "$ret3",6;
			@Data = split /[:,]/, $Wert[5];
			(my $start = $Data[1]) =~ s/$Muster//g;
			(my $delay = $Data[3]) =~ s/$Muster//g;
		#	if (ReadingsVal($SOP,"start",0) != $start ) {fhem("setreading ".$SOP." start ".$start)};
			if (ReadingsVal($SOP,"delay",0) != $delay ) {fhem("setreading ".$SOP." delay ".$delay)};
		}
		else
		{
			if (Value($SOPDummy) ne "ooo" ) {fhem ("set ".$SOPDummy." ooo")};
		}
	}
}

Das Auslesen von "Start" ergibt eine (mir kryptische) Zeichenkombi, die ich einfach mal nicht abspeichere. Wenn es einen Sinn ergibt, einfach ent-auskommentieren


Links