Schaltsteckdose SOP112 und FHEM bzw. Alternativen?

Begonnen von nog76, 16 Dezember 2014, 11:44:50

Vorheriges Thema - Nächstes Thema

nog76

Hi,

hat es jemand schon geschafft, diese ELV Schaltsteckdosen unter FHEM zu nutzen:

http://www.elv.de/elv-spar-set-mit-2x-schaltsteckdose-sop112-und-1x-powerline-adapter.html

Laut Beschreibung funktioniert das System nur per App und der "Cloud"-Lösung von ELV.
Es müsste doch aber auch irgendwie möglich sein, auch direkt an die Daten zu kommen und die Dosen zu schalten?

Vom UseCase wären die Steckdosen ideal, um eine Überwachung z.B. einer Waschmaschine im Keller zu realisieren. Oft reichen hier die normalen Funk-Lösungen (WLAN, DECT, Homematic) nicht mehr aus, während die Anbindung via Powerline funktioniert.
Da das Waschhaus in einem offen Raum im Mehrfamilienhaus liegt, würde ich auch ungern mit normalen Powerline-Adaptern mein LAN in die "Öffentlichkeit" legen.
Kennt jemand Alternativen?

VG,
Chris

Doggiebert

Ich befürchte, Du kriegst da schon ohne FHEM keine Verbindung her; lt. Bedienunganleitung und lt. Forenbeitrag auf der Seite wird das Ding wohl nicht bis in den Waschraum kommunizieren können.

Das scheint ein Revogi Zukauf zu sein --> http://www.revogi.com/, und wenn ich da schon sowas lese:
ZitatThanks to Revogi's Proprietary Revogi technology, you just download the Apps to your Smartphone and get wireless control of your home devices!
, vermute ich mal, dass die ihr Protokoll nicht offenlegen wollen. Kannst ja mal bei denen nachfragen, ob sie Dir die Specs zuschicken, und dann versuchen, das nachzubilden.

Also eher schlechte Karten...
SW: FHEM 5.5, Raspian, XBMC, Testinstallation auf Win7
HW: Raspi B, 32GB SD, enocean Pi, RFXTRX433E, BSC - MwC-32, Onkyo TX-NR709, Samsung UE55F8090, Jung LS-Eno, permundo SmartPlug, KDG-FB 6490cable (ohne FHEM)

Wzut

Zitat von: nog76 am 16 Dezember 2014, 11:44:50
Oft reichen hier die normalen Funk-Lösungen (WLAN, DECT, Homematic) nicht mehr aus
ob oft oder selten ist doch wurscht, entscheident ist doch ob du an deinerWM WLAN oder DECT Empfang hast oder nicht.
Lässt sich ja leicht mit dem Smartphone  bzw. DECT Telefon feststellen :) und wenn es denn WLAN sein soll/darf :
http://forum.fhem.de/index.php/topic,29541.0.html
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

nog76

Zitat von: Wzut am 16 Dezember 2014, 17:53:28
ob oft oder selten ist doch wurscht, entscheident ist doch ob du an deinerWM WLAN oder DECT Empfang hast oder nicht.
Lässt sich ja leicht mit dem Smartphone  bzw. DECT Telefon feststellen :) und wenn es denn WLAN sein soll/darf :
http://forum.fhem.de/index.php/topic,29541.0.html

Ne, bei mir ist es genauso, dass ich weder WLAN noch DECT oder Homematic Empfang habe - schon durchprobiert ;-)
Habe auch mal bei ELV nachgefragt - sie haben nur geantwortet, dass die Steuerung per Smartphone möglich und es keine HTTP-Schnittstelle gibt.

Somit die Frage in den Raum - wer kennt eine Schaltsteckdose mit Energiemessung, die man per Powerline anbinden kann?

juppzupp


nog76

Zitat von: juppzupp am 16 Dezember 2014, 19:21:47
Avm 546e?

Hatte ich mir auch angeschaut. Aber ich brauche das WLAN dann nicht im Waschraum - irgendwie zuviel des Guten ...

juppzupp


Markus M.

Kein großes Problem:
Kaufen, App runterladen, Telefon über Proxy ohne SSL verbinden und dann den Datenverkehr mitschneiden.
Das Ergebnis dann in ein FHEM Modul verpacken. Fertig!
Das Problem an der Sache ist, dass es irgendwer machen muss ;)


Sent from my iPhone using Tapatalk
Aktuell weder Smarthome noch FHEM vorhanden

hjjk

Also ich hab seit heute so ein Teil und hab bisher folgendes herausgefunden.

Dem PL501 Adapter wird in meinem Netz per dhcp die IP-Adresse 192.168.3.82 zugewiesen
Der Power Plug, also der schaltbare Adapter, hat eine Serien Nummer aufgedruckt,
z.B. so etwas wie SW10400100123
Sende ich per Browser
http://192.168.3.82/?cmd=200&json={"sn":"SWP1040001000123","port":0,"state":1}
wird die Steckdose eingeschaltet
mit
http://192.168.3.82/?cmd=200&json={"sn":"SWP1040001000123","port":0,"state":0}
entsprechend ausgeschaltet.

Mit
http://192.168.3.82/?cmd=511&json={"sn":"SWP1040001000123"7D}
kann man scheinbar den Status abfragen.
Ich erhalte als Antwort
{"response":511,"code":200,"data":{"watt":["0.00"],"amp":["0.0"],"switch":[0]}}

Ich hoffe das hilft weiter.





Per

Schade, dass das hier eingeschlafen ist, bei ELV sind die Preise für das System gerade im Keller (30€ für SOP 112 + PL501, 15 € für jede weitere SOP 112).
Nebenbei habe ich schon raubekommen, dass die sn nicht mitgeschickt werden muss, die Syntax beschränkt sich auf:

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

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

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

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

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

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

Aufruf geht mit (natürlich mit den passenden Parametern)
{GetFileFromURL "http://192.168.xxx.yyy/?cmd=200&json={%22port%22:0,%22state%22:1}"}
recht leicht, denke aber, für die Auswertung (Verbrauch und so) wäre ein Modul besser. Leider bin ich da nicht wirklich der Richtige dafür.
Ich werde mir erstmal paar Notifys dafür schreiben, um wenigstens schalten zu können.

Zitat von: hjjk am 09 Januar 2015, 18:38:25Dem PL501 Adapter wird in meinem Netz per dhcp die IP-Adresse 192.168.3.82 zugewiesen
Natürlich bekommt nicht das (oder der oder die?) PL 501 die IP, sondern das SOP 112.

Per

So, habe jetzt zwei Perl-Funktionen geschrieben, welche das Setzen und Abfragen übernehmen, letzteres durch einen Timer aufgerufen.
Ich weiss, es geht besser (Modul), aber nicht von mir. Ich hatte schon mit Perl selbst ausreichend Probleme.

Noch was Grundsätzliches dazu:
Ich unterscheide zwischen dem Gerät (SOPDummy) "Name.SOP" und der zugehörigen Steckdose (SOP) "Name.SOP112"
Die Steckdose bekommt folgende Userattribute:
attr .*.SOP112 userattr Type IP Ready
IP - letzte Stelle der IP, der Rest ist in den Perl-Funktionen "hardcodiert".
Ready - zu unterschreitender Strom, wenn Gerät fertig (0 für Dauerbetrieb)
Type - SOP112 -> für die foreach-Schleife)

Das Gerät bekommt
attr xxx webCmd start:stop -> zur Unterscheidung von on und off
attr xxx devStateIcon off:off:start start:start:stop on:on:stop ready:ready:stop ooo:.ooo:start
Durch Start wird die Steckdose eingeschaltet, durch den Stromverbrauch > Standby geht das Gerät in on. ooo ist out of order - meist offline, ready ist Standby nach Betrieb, also Waschmaschine fertig oder so.

Dazu global der Timer für die Abfrage
define SOP.timer at +*00:01 {SOP_reading}
und die Notify für den Status
define SOP112 notify (.*.SOP112:(off|on)) {SOP_set ($NAME,$EVENT)}
define SOP112.start notify (.*.SOP:(start|stop)) {SOP_set ($NAME."SOP112",$EVENT)}

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:
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.

Da Perl nicht meine "Muttersprache" ist, sind da durchaus Optimierungen (Regular Expression!) möglich und erwünscht. Vllt. fühlt sich ja jemand berufen, diesen Anfang für ein eigenes Projekt zu nutzen.

Noch was zur Hardware: die Dosen selbst (den Powerlan-AP habe ich noch nicht gemessen) benötigen 2 Watt für den Eigenbedarf. Das finde ich nicht wenig, eine Universallösung sind diese Dosen trotz des gerade günstigen Preises damit nicht.

Per

#11
Habe mir ein Modul geschrieben. Nicht schön, aber es tut, was es soll.
Vorallem sind alle Daten an einem Ort, ich muss nicht mehr vor und nach der Definition der Dummys eingreifen (Userattr u.a.) und die Eventlist wird nicht mehr vollgemüllt.

JoergOstertag

#12
@Per: gibt es das Modul irgendwo zum herunterladen?

Ich hab mal eine Wiki Seite zu den Steckdosen angefangen:
http://www.fhemwiki.de/wiki/ELV_Powerline_Schaltsteckdose_SOP112

Per

Zitat von: JoergOstertag am 30 Dezember 2015, 21:02:05
@Per: gibt es das Modul irgendwo zum herunterladen?
Nein, ich könnte es aber einstellen oder irgendwohin laden. Oder den Text schicken (PN?).

JoergOstertag

Dank Per gibt es nun ein Fhem Modul zur Steuerung der Steckdose.