ELV Powerline Schaltsteckdose SOP112: Unterschied zwischen den Versionen

Aus FHEMWiki
KKeine Bearbeitungszusammenfassung
(→‎Links: Anmeldung zum Download, Handbuch bei Manualslib)
 
(14 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=ELV Powerline Schaltsteckdose SOP112=
=ELV Powerline Schaltsteckdose SOP112=


Die [[http://www.elv.de/elv-spar-set-mit-2x-schaltsteckdose-sop112-und-1x-powerline-adapter.html ELV Powerline Schaltsteckdose SOP112]]
{{Infobox Modul
gibt es bei [[http://www.elv.de/elv-spar-set-mit-2x-schaltsteckdose-sop112-und-1x-powerline-adapter.html hier bei ELV]].
|Name=SOP112
|ModPurpose=Schalten der ELV Steckdose SOP112
|ModType=x
|ModCmdRef=SOP112
|ModFTopic=30501
|ModForumArea=Sonstige Systeme
|ModTechName=54_SOP112.pm
|ModOwner=Per,JoergOstertag
}}


Die Steckdosen werden über einen (im Set enthaltenen) Powerline Adapter an das Lokale Netzwerk angebunden.
Die [https://de.elv.com/elv-spar-set-mit-2x-schaltsteckdose-sop112-und-1x-powerline-adapter-118025 ELV Powerline Schaltsteckdose SOP112]
Jede Steckdose bekommt (über DHCP) eine eigene IP Adresse und kann dann darüber angesprochen werden.
gab es bei ELV.
 
  Artikelnummer 11 74 92 – Startset PowerLan-Adaper PL501 + 2 Steckdosen SOP112
  Artikelnummer 11 74 97 – Erweiterung 1 Steckdose SOP112
 
Die Steckdose wird über [https://de.wikipedia.org/wiki/PowerLAN PowerLAN] mit dem Hausnetzwerk verbunden. Zum Einbinden ins LAN wird der im Set enthaltene PowerLAN-Adapter verwendet werden. Es kann ein PowerLAN-Adapter für mehrere Steckdosen verwendet werden.
Jede Steckdose bekommt (über DHCP) eine eigene IP-Adresse und kann dann darüber angesprochen werden.
Die Steckdosen können im Lokalen Netzwerk über http-Requests mit json kodierten Parametern gesteuert und abgefragt werden. Ergänzend gibt es auch eine APP mit der man aus dem Internet die Steckdosen abfragen und steuern kann.


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.
Die Steckdosen messen auch die Leistungsaufnahme des angeschlossenen Verbrauchers.


Die SOP112 haben eine Seriennummer aufgedruckt, bisher gab es aber noch keine Notwendigkeit, diese zu verwenden.
==Stromverbrauch==
Die SOP112 benötigt etwas über 2 Watt, die PL501 etwas unter 2 Watt. Bei 0,30 €/kWh sind das ~22 € pro Jahr und Gerät. Die Homematic Zwischenstecker HM-LC-Sw1-Pl liegen bei ~1 Watt, die GHoma-Dosen lassen mein "Messgerät" (eine SOP112) nicht ausschlagen.
== Installation ==
Das Modul aus dem Forum laden: {{Link2Forum|Topic=30501|Message=383894|LinkText=Download Modul}} und in das FHEM Modul-Verzeichnis (/opt/fhem/FHEM/) kopieren.
Json Library installieren:
  sudo aptitude install libjson-perl
Konfigurieren(Bsp.):
  define doseSop1 SOP112 BC:2B:D7:00:71:24 192.168.0.101
==Anwendung==


Define
  define <name> SOP112 <MAC> <IP>


==Stromverbrauch==
IP, unter welcher die SOP112 angesprochen wird. Solange die Erkennung anhand der MAC noch nicht existiert, ist dies ein Pflichtparameter!
 
  attr <name> IconPrefix <Prefix>
 
Prefix für die Icons Prefix.on.png, Prefix.off.png, Prefix.start.png, Prefix.ready.png, Prefix.ooo.png. Diese Werte werden bei Änderung automatisiert in "devStateIcon" geschrieben, können dort aber anschließend übersteuert werden. Wird in IconPrefix UND devStateIcon nichts eingetragen, werden nur die Status on und off mit den Standardsymbolen angezeigt, die anderen Status werden als Text dargestellt.
 
  attr <name> Ready <Watt>
 
Standby-Leistung in Watt, welche das Modul zum Umschalten von start -> on sowie von on -> ready über- bzw. unterschritten wird. Wird dieser Parameter nicht angegeben, erfolgt keine automatische Abschaltung und Ready_CMD wird nicht ausgeführt. 0 (Null) ist ein gültiger Parameter!
 
  attr <name> Ready_Time <sec>
 
Zeit in Sekunden, welche die Standby-Leistung unterschritten sein muss, um von on zu ready umzuschalten. Ist der Parameter leer, wird sofort (nach Rückmeldung der Steckdose!) bei Unterschreiten der Standby-Leistung der Status ready eingenommen.
 
  attr <name> Ready_CMD <command>
 
Befehl, welcher mit Erreichen des Ready-Status ausgeführt wird. Dabei gilt die normale FHEM-Syntax, der String wird intern der Perl-Funktion fhem() übergeben.
 
  attr <name> Ready_on 0|off|1|on
 
Wird ready erreicht, wird SOP112 normalerweise ausgeschaltet. Mit Ready_on = 1 bleibt sie eingeschaltet, Ready_CMD wird dennoch abgesendet.
 
  attr <name> sn Seriennummer
 
Lt. Forumsbeitrag sendet die App die Seriennummer bei den Anfragen mit, ein Unterschied zu Befehlen ohne oder mit falscher Seriennummer konnte bisher nicht festgestellt werden. Für Dokumentationszwecke und evtl. spätere Funktionen kann sie aber bereichts übergeben werden.
 
==Readings==
 
status
  start  Steckdose ist eingeschaltet, der Stromverbrauch ist nicht größer als StandBy
  on  Steckdose ist eingeschaltet, der Stromverbrauch ist größer als StandBy
  ready  der Stromverbrauch ist über die angegebene Zeit kleiner als StandBy, Steckdose wird ausgeschaltet, wenn Ready_on nicht gesetzt ist
  off  Steckdose wurde manuel ausgeschaltet oder Status ready wurde bestätigt
  ooo  Steckdose ist unter eingetragener IP nicht erreichbar
 
amp  aktuell gemessene Stromstärke in Amperé
 
watt  aktuell gemessene Leistung in Watt
 
switch  aktueller Zustand des Schalters
 
master, limit, rule: werden zwar abgefragt und angezeigt, die Bedeutung und Format ist aber bisher unklar
 
start, delay: werden nicht abgefragt und daher nicht angezeigt, auch deren Bedeutung und Format ist unklar
 
Befehle
  set <name> on|1
 
Einschalten (Status = start)
 
  set <name> off|0


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






==Ansteuerung==
==Ansteuerung==
Die Ansteuerung und Abfrage der SOP112 erfolgt über die TCP/IP und kann mittels Browser oder entsprechenden Schnittstellen erfolgen.


Exemplarisch mit curl:
Exemplarisch mit curl:


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


Der PL501 Adapter verbindet das lokale Netzwerk (Ethernet) mit dem PowerLAN. Die SOP112-Steckdosen holen sich eine IP-Adresse vom lokalen DHCP-Server. Über diese IP-Adresse kann die Dose direkt via HTTP angesprochen werden.


Ü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 Seriennummer aufgedruckt,
Der Power Plug, also der schaltbare Adapter, hat eine Serien Nummer aufgedruckt,
z.B. so etwas wie SW10400100123
z.B. so etwas wie SW10400100123
Sendet man per Browser
Sendet man per Browser


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


wird die Steckdose eingeschaltet
wird die Steckdose eingeschaltet


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


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


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


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


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


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


==Steuerung aus fhem heraus==
Weitere Abfragen und das Setzen von Parametern ist möglich, so z.B.: das Ändern des in der APP angezeigten Namens, die Einschaltdauer u.a.m.
 
Die entsprechende Syntax ist aber noch nicht ermittelt worden.
* {{Link2Forum|Topic=30501|Message=375406|LinkText=Beschreibung verwenden der Steckdose aus fhem}}
 
==Perl Schnipsel==
 
Schalten der Dosen:
<pre>
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();
}
</pre>
 
 
Auslesen der Daten: (Pre)
<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")};
}
}
}
</pre>
Das Auslesen von "Start" ergibt eine (mir kryptische) Zeichenkombi, die ich einfach mal nicht abspeichere. Wenn es einen Sinn ergibt, einfach ent-auskommentieren




== Links ==
== Links ==
* {{Link2Forum|Topic=30501.0|LinkText=Forenthread}}
* {{Link2Forum|Topic=30501.0|LinkText=Forenthread}}
 
* {{Link2Forum|Topic=30501|Message=383894|LinkText=Download Modul}} (für angemeldete Benutzer)
* [https://www.manualslib.de/manual/272082/Elv-Sop112.html ELV Schaltsteckdose SOP112 mit PowerLAN Adapter], Manualslib.de


[[Kategorie:IP Components]]
[[Kategorie:IP Components]]
[[Kategorie:Energieverbrauchsmessung]]
[[Kategorie:Schalter (Empfänger)]]

Aktuelle Version vom 16. Februar 2021, 16:57 Uhr

ELV Powerline Schaltsteckdose SOP112

SOP112
Zweck / Funktion
Schalten der ELV Steckdose SOP112
Allgemein
Typ Inoffiziell
Details
Dokumentation Thema
Support (Forum) Sonstige Systeme
Modulname 54_SOP112.pm
Ersteller Per,JoergOstertag
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Die ELV Powerline Schaltsteckdose SOP112 gab es bei ELV.

 Artikelnummer 11 74 92 – Startset PowerLan-Adaper PL501 + 2 Steckdosen SOP112
 Artikelnummer 11 74 97 – Erweiterung 1 Steckdose SOP112

Die Steckdose wird über PowerLAN mit dem Hausnetzwerk verbunden. Zum Einbinden ins LAN wird der im Set enthaltene PowerLAN-Adapter verwendet werden. Es kann ein PowerLAN-Adapter für mehrere Steckdosen verwendet werden. Jede Steckdose bekommt (über DHCP) eine eigene IP-Adresse und kann dann darüber angesprochen werden. Die Steckdosen können im Lokalen Netzwerk über http-Requests mit json kodierten Parametern gesteuert und abgefragt werden. Ergänzend 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.

Die SOP112 haben eine Seriennummer aufgedruckt, bisher gab es aber noch keine Notwendigkeit, diese zu verwenden.

Stromverbrauch

Die SOP112 benötigt etwas über 2 Watt, die PL501 etwas unter 2 Watt. Bei 0,30 €/kWh sind das ~22 € pro Jahr und Gerät. Die Homematic Zwischenstecker HM-LC-Sw1-Pl liegen bei ~1 Watt, die GHoma-Dosen lassen mein "Messgerät" (eine SOP112) nicht ausschlagen.

Installation

Das Modul aus dem Forum laden: Download Modul und in das FHEM Modul-Verzeichnis (/opt/fhem/FHEM/) kopieren.

Json Library installieren:

 sudo aptitude install libjson-perl

Konfigurieren(Bsp.):

 define doseSop1 SOP112 BC:2B:D7:00:71:24 192.168.0.101

Anwendung

Define

 define <name> SOP112 <MAC> <IP>

IP, unter welcher die SOP112 angesprochen wird. Solange die Erkennung anhand der MAC noch nicht existiert, ist dies ein Pflichtparameter!

  attr <name> IconPrefix <Prefix>

Prefix für die Icons Prefix.on.png, Prefix.off.png, Prefix.start.png, Prefix.ready.png, Prefix.ooo.png. Diese Werte werden bei Änderung automatisiert in "devStateIcon" geschrieben, können dort aber anschließend übersteuert werden. Wird in IconPrefix UND devStateIcon nichts eingetragen, werden nur die Status on und off mit den Standardsymbolen angezeigt, die anderen Status werden als Text dargestellt.

  attr <name> Ready <Watt>

Standby-Leistung in Watt, welche das Modul zum Umschalten von start -> on sowie von on -> ready über- bzw. unterschritten wird. Wird dieser Parameter nicht angegeben, erfolgt keine automatische Abschaltung und Ready_CMD wird nicht ausgeführt. 0 (Null) ist ein gültiger Parameter!

  attr <name> Ready_Time <sec>

Zeit in Sekunden, welche die Standby-Leistung unterschritten sein muss, um von on zu ready umzuschalten. Ist der Parameter leer, wird sofort (nach Rückmeldung der Steckdose!) bei Unterschreiten der Standby-Leistung der Status ready eingenommen.

  attr <name> Ready_CMD <command>

Befehl, welcher mit Erreichen des Ready-Status ausgeführt wird. Dabei gilt die normale FHEM-Syntax, der String wird intern der Perl-Funktion fhem() übergeben.

  attr <name> Ready_on 0|off|1|on

Wird ready erreicht, wird SOP112 normalerweise ausgeschaltet. Mit Ready_on = 1 bleibt sie eingeschaltet, Ready_CMD wird dennoch abgesendet.

  attr <name> sn Seriennummer

Lt. Forumsbeitrag sendet die App die Seriennummer bei den Anfragen mit, ein Unterschied zu Befehlen ohne oder mit falscher Seriennummer konnte bisher nicht festgestellt werden. Für Dokumentationszwecke und evtl. spätere Funktionen kann sie aber bereichts übergeben werden.

Readings

status

  start   Steckdose ist eingeschaltet, der Stromverbrauch ist nicht größer als StandBy
  on   Steckdose ist eingeschaltet, der Stromverbrauch ist größer als StandBy
  ready   der Stromverbrauch ist über die angegebene Zeit kleiner als StandBy, Steckdose wird ausgeschaltet, wenn Ready_on nicht gesetzt ist
  off   Steckdose wurde manuel ausgeschaltet oder Status ready wurde bestätigt
  ooo   Steckdose ist unter eingetragener IP nicht erreichbar

amp aktuell gemessene Stromstärke in Amperé

watt aktuell gemessene Leistung in Watt

switch aktueller Zustand des Schalters

master, limit, rule: werden zwar abgefragt und angezeigt, die Bedeutung und Format ist aber bisher unklar

start, delay: werden nicht abgefragt und daher nicht angezeigt, auch deren Bedeutung und Format ist unklar

Befehle

  set <name> on|1

Einschalten (Status = start)

  set <name> off|0

Ausschalten (Status = off)


Ansteuerung

Die Ansteuerung und Abfrage der SOP112 erfolgt über die TCP/IP und kann mittels Browser oder entsprechenden Schnittstellen erfolgen.

Exemplarisch mit curl:

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


Der PL501 Adapter verbindet das lokale Netzwerk (Ethernet) mit dem PowerLAN. Die SOP112-Steckdosen holen sich eine IP-Adresse vom lokalen DHCP-Server. Über diese IP-Adresse kann die Dose direkt via HTTP angesprochen werden.

Der Power Plug, also der schaltbare Adapter, hat eine Seriennummer 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.

Weitere Abfragen und das Setzen von Parametern ist möglich, so z.B.: das Ändern des in der APP angezeigten Namens, die Einschaltdauer u.a.m. Die entsprechende Syntax ist aber noch nicht ermittelt worden.


Links