Schaltsteckdose SOP112 und FHEM bzw. Alternativen?

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

Vorheriges Thema - Nächstes Thema

Per

Kleiner Nachtrag:
Zitat von: Per am 16 Dezember 2015, 16:30:51Noch 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.
So, inzwischen gemessen: 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. Die beiden letzteren haben auch keinen extra Server-Adapter, ermöglichen aber auch keine Leistungsmessung. Ein realistischer Vergleichspartner wäre eher der Funkschalter mit Leistungsmessung HM-ES-PMSw1-Pl (130248), die habe ich aber nicht.

hori


jnewton957

#17
Zitat von: Per am 03 Januar 2016, 20:44:09
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.

Habe ich da einen Rechen-/Gedankenfehler ?
2 Watt * 24 h * 365 Tage =  17520 Watt ==> 17,5 kwh *0,3 € / kWh = 5,25 € / Jahr


Ja- das ist grundsätzlich doppelt so viel wie bei DECT200 oder anderen Steckdosen. Dafür aber eben kein Wifi oder 433 MHz und somit oderdentliche Reichweite.

Da di ja gerade recht günstig angeboten werden (29 € Starterset und 15 € pro weitere Dose), ist das schon eine eine gute Sache - zumal ja auch mit Energiemessung.

Das FHEM - Modul gibt es ja schon. Danke dafür.

Wie lauten denn der ausfürhrliche fhem.cfg defines und entsprechede defines/redings für das Auslesen/Anzeigen und steuern der Dosen ??

Grüße
Jörg
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

Per

Zitat von: jnewton957 am 10 Januar 2016, 18:30:43
Habe ich da einen Rechen-/Gedankenfehler ?
Oder eher ich ? :( Dafür habe ich es im Kopf gerechnet  :P

Zitat von: jnewton957 am 10 Januar 2016, 18:30:43Wie lauten denn der ausfürhrliche fhem.cfg defines und entsprechede defines/redings für das Auslesen/Anzeigen und steuern der Dosen ??

z.Zt.:
define [Device] SOP112 [MAC] [IP]

set [Device] (on|off)
Wobei "on" intern auf "start" setzt und erst bei Überschreiten der u.a. StandBy-Leistung "on" gesetzt wird.

für die Bilder, welche angezeigt werden sollen (xyz.on.png, xyz.off.png, xyz.start.png, xyz.ready.png, xyz.ooo.png)
attr [Device] IconPrefix xyz
wird aber intern "nur" automatisiert in "devStateIcon" geschrieben, kann also jederzeit übersteuert werden.

attr [Device] Ready 5.5
Leistung in Watt, unterhalb derer StandBy erkannt wird (Start -> on und on -> ready), z.Zt. (noch) ohne zeitlichen Faktor.
attr [Device] Ready_CMD set irgendwen irgendwas
Fhem-Code, welcher bei Erreichen des Ready-Status ausgeführt wird (nebenbei wird auch noch die Dose ausgeschaltet).

Readings:
switch: Zustand (1 -> ein; 0 -> aus)
amp: Stromstärke in Ampere
watt: Leistung in Watt
master,limit,rule: keine Ahnung
start,delay: ebenso, sind aber z.Zt. auskommentiert. Wenn jemand Format und Sinn (ebenso für master, limit,rule) erkennt, kann man das ja schnell wieder reinnehmen.


Nochwas: das Modul war ja speziell für meine Bedürfnisse geschrieben, ein Update der readings findet daher schon im Modul nur bei Änderungen statt.

Was vergessen? Bestimmt :D Einfach nochmal nachfragen!

hjjk

Hab mal mal Modul 54_SOP112.pm ausprobiert.
Ich konnte es erst nutzen nachdem ich noch  libjson-perl installiert habe.
Daach funktionierte alles soweit recht gut bei mir.
Ich bin allerdings der Meinung das die Angabe der MAC Adresse überflüssig/redundant ist.
Wird auch nach der Initialisierung nicht mehr verwendet.
Hab den entsprechenden Code bei mir auskommentiert und scheinbar funktioniert alles weiterhin.

Die modifizierte Version hab ich mal "angehängt".

Per

#20
Zitat von: hjjk am 11 Januar 2016, 15:48:45nachdem ich noch  libjson-perl installiert habe.
Hm, ich habe noch die alte (meine) Version im Einsatz, die geht ohne.
Der Wiki-Eintrag ist diesbezüglich aktualisiert wurden.

Zitat von: hjjk am 11 Januar 2016, 15:48:45
Ich bin allerdings der Meinung das die Angabe der MAC Adresse überflüssig/redundant ist.
Wird auch nach der Initialisierung nicht mehr verwendet.
Hab den entsprechenden Code bei mir auskommentiert und scheinbar funktioniert alles weiterhin.
Ja, die MAC wird (leider noch) nicht genutzt. In der ersten Version war die IP auch noch ein Attribut (Attr).
Leider ist es mir nicht möglich, aus der MAC die IP zu ermitteln. Aber in vorausschauender Weitsicht :D bzgl. der Kompatibilität habe den Parameter mit übernommen.
Die Seriennummer könnte man zwar auch nehmen, aber die hat gar keinen Einfluss, zumindest ist mir keiner aufgefallen.

Per

Im Wiki-Eintrag stehen schon ein paar Parameter, welche noch nicht in der downloadbaren Version nutzbar sind.

Zitat von: Per am 11 Januar 2016, 21:05:16Leider ist es mir nicht möglich, aus der MAC die IP zu ermitteln.
Habe mal ARPING installiert, aber das arbeitet irgendwie nicht zuverlässig. Ob fping mit seiner Netzlast besser ist, teste ich mal diese Woche noch.

hjjk

Jetzt hab ich mich einige Tage mit Per's und Joerg Ostertag's SOP112 Modul beschäftigt (Wer ist nun eigentlich der Author ?).
Als fhem Modul Neuling hab ich einige Dinge nicht so recht nachvollziehen können :-(
Z.B. wie das mit den Attributen Ready, Ready_CMD und Ready_Time funktioniert, wobei Ready_Time gar nicht wirklich implementiert ist :-(
Ich habe dann für mich mal eine Überarbeitung gestartet, habe dabei mit den grundlegenden Dingen gestartet (kis - keep it simple).
Ich benutze nur die die Kommandos "200" zum schalten und "511" zur Status abfrage. Alles andere habe ich weg gelassen da ich keinen weiteren Nutzen bei den restlichen Kommandos sehe.
Ebenso unterstütze ich auch nicht die Ready und Ready_CMD Attribute. Vielleicht später einmal, aber ich denke die Funktionalität kann man auch mit fhem Mitteln, z.B. notify erreichen.
Des weiteren habe ich die Werte für watt in "power" und die Werte für amp in "current" umgesetzt bevor sie in die readings geschrieben werden. Das hat den Vorteil das die vorhanden SVG Plot Filter genutzt werden können und man so leichter eine Grafik erstellen kann.
Zusätzlich kann man in der fhem Konfig einen Optionalen "Polling Intervall" Wert eingeben um so das Abfrage Intervall anpassen zu können.
In meinen Code sind noch einige Log 3 Statements als Debugging Ausgabe enthalten :-(
Des weiteren habe ich die JSON Abhängigkeiten entfernt im dem ich eine eigene String-Konvertierungs-Routine nutze. Kann man bestimmt besser machen, aber für einen ersten Schuss gehts erstmal.
Zum Schluss habe ich auch mit einer html-Dokumentation innerhalb des Moduls bekommen. Ist aber noch ganz rudimentär ;-)
Bevor ich in verlängerte WE gehe trau mich und hänge meinen Code an, für alle die sich das gern ansehen wollen.

hjjk

Noch ein Nachtrag zu meinem Kommentar.
Hier sind als Beispiel meine Einträge aus der fhem.cfg

define Spuelmaschine SOP112 192.168.3.99 60
attr Spuelmaschine icon scene_dishwasher
attr Spuelmaschine room Kueche
#
define FileLog_Spuelmaschine FileLog ./log/Spuelmaschine-%Y.log Spuelmaschine
attr FileLog_Spuelmaschine logtype text
#
define Graph_Spuelmaschine SVG FileLog_Spuelmaschine:power4:CURRENT
attr Graph_Spuelmaschine group SOP112
attr Graph_Spuelmaschine label "Spuelmaschine Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr Graph_Spuelmaschine room Plots

Per

Zitat von: hjjk am 14 Januar 2016, 14:20:44kis - keep it simple
Ja, viele Wege führen nach Rom.
Mein Anliegen war, nicht mit tausenden ;) notify, at und dummy arbeiten zu müssen.
Und das habe ich, mit den mir zur Verfügung stehenden Mitteln und Wissen, erledigt.

OK, jetzt kann DOIF auch mit RegEx arbeiten, als ich mit proggen angefangen hatte aber noch nicht. Sonst hätte ich das vllt. auch anders gemacht. Aber jetzt ist es mal drin, wem es nicht gefällt, dem stehen inzwichen schon zwei weitere Varianten zur Verfügung, steht ja im Quelltext da.
Und viele Köche verderben hier den Brei nicht, sondern liefern neue Ideen.
Zitat von: hjjk am 14 Januar 2016, 14:20:44eigene String-Konvertierungs-Routine
z.B. werde ich mir mal anschauen ;).

Per

#25
Neues, aber noch nichts von der MAC2IP-Seite (wg. der Plattformabhängigkeit überlege ich da noch), sondern von der "Anti-kis-Front" :D.

Neben dem Abschalten nach Erreichen des Standby-Zustandes auch mit zeitlicher Verzögerung ("Ready_Time") und nur-Fertig-Melden ohne Abschalten ("Ready_on") habe ich auch die schon länger geplante Änderung des Abfrage-Intervalls ("Intervall") realisiert. Neu jetzt auch eine prozentuale Abhängigkeit der Meldungen von der Änderung ("Event_Update_Prozent"), bsp: erst bei 10% Änderung (= Voreinstellung) der Leistung wird "watt" eventrelevant geändert, alles andere wird nur mit readingsSingleUpdate(x,y,z, 0 ) eingetragen. Damit wird der Eventlog nicht vollgeschrieben, wenn es nur kleine Schwankungen gibt, die "Ready"-Auswertung erfolgt aber dennoch.

Leider konnte ich mich noch nicht mit "json" befassen, deshalb kann ich "rule" (cmd=514, siehe auch unten) noch nicht auswerten. Für "start" indes habe ich es hinbekommen, allerdings wieder deaktiviert, weil ich mit den Werten nichs anfangen kann.

Der Rückgabewert von "rule" ist
{"response":514,"code":200,"data":{"rule":[{"rname":"Rule","en":0,"port":[1],"day":[1,1,1,1,1,1,1],"time":["04:01","04:00"]}]}}
Ohne "json" habe ich keine Lust, die Klammerebenen aufzulösen.
Obriges Beispiel steht übrigens für ein kurzzeitiges Ausschalten (genaugenommen ein laaaanges Einschalten) jeden Tag. Diese Regeln braucht man eigentlich bei FHEM nicht, weil es FHEM eh viel besser/bequemer kann. Ich lass es aber als backup drin, werte es aber nicht aus und ändere es nicht. Zur Not mache ich das über die Android-App.
Für die Auswertung des Stromverbrauches wäre eine funtionierende Abfrage schon wichtiger, aber ob sich das hinter "start" verbirgt, weiss ich nicht.

Von hjjk habe ich mal den html-Doku-Anfang übernommen.

Weitere Planung: den Teil MAC2IP, wobei beim Attr. IP neben der IP selbst der Wert "auto" stehen darf, nur dann versucht das Modul selbst die IP zu ermitteln. Damit kann ich auch IPs in anderen Teilnetzen angeben, ohne dass die Automatik das wieder "zerstört". Außerdem bin ich so noch besser abwärtskompatibel.
"json" ist erstmal auf der Prio-Liste ganz weit runter gerutscht, da ich "rule" nicht brauche und die anderen bisher bekannten Rückgaben auch so decodiert werden können.

PS: habe den Code noch etwas optimiert, ändert aber nix am Funtionsumfang.
PPS: nen Komma vergessen  :-X

Per

Zitat von: andiw am 01 August 2015, 11:03:26ich lasse mich regelmäßig erinnern dass die Wäsche fertig gewaschen ist, solange bis ich die Maschine ausgeschaltet habe:
Nette Idee, hab ich wieder was zu tun :D

Per

So, aktueller Zwischenstand:
Die im define angegebene MAC dient z.Zt. nur der genauen Zuordung und wird intern nicht ausgewertet.
Einziger Pflichtparameter (attr) ist die IP.
KIS: Solange kein anderes Attribut eingegeben wird, verhält sich das Objekt wie eine normale Steckdose mit "on" und "off" (und "ooo" für Out of Order, sprich irgendwas stimmt nicht, was kann das Modul nicht feststellen, meist ist es Offline, weil nicht eingesteckt :D).
Die anderen Attribute können, müssen aber nicht angegeben werden:

IconPrefix: Prefix vor den Iconnamen, um verschiedene Geräte zu unterscheiden (Standard = "" => die bekannte Glühlampe für on und off, Rest als Text, wenn nix anderes da ist)
Intervall: Abfrageintervall in Sekunden (Standard = 60s)
ready: Leistung (Watt)  welche unterschritten werden muss, um als ready erkannt zu werden. Gilt aber auch als Startsignal (Standard = 0 Watt)
readyCmd: Fhem-Befehl, welcher bei Erreichen des ready-Status ausgeführt werden soll. Da sich dahinter ein normales fhem() befindet, gilt auch dessen Syntax.
readyCmdIntervall: in welchen Abständen (Sekunden) soll readyCmd wiederholt werden, bis die Bestätigung (off) erfolgt (Standard = 0 = nie)
readyTime: wie lange (Sekunden) soll die StandBy-Leistung unterschritten bleiben, bevor Status ready eingenommen wird (Standard = 0s)
readyOn:1,0: soll die Dose nach Unterschreiten der StandBy-Leistung nicht automatisch abschalten (Standard ist nein=>0)
SN: Seriennummer, ist nur ein Kommentarfeld
EventUpdateProzent: ab wieviel Prozent Änderung im Stromfluss oder in der Leistungsaufnahme wird ein Event erzeugt. Über Menü 0, 1, 5, 10, 20 oder 50% auswählbar, mittels attr-Befehl beliebig (Standard = 10%)
Leider musste ich die Groß-Kleinschreibung der attr nochmal ändern, um einheitlich zu sein.

Die Aufrufe "512", "514" und "515" sind im Programm auskommentiert, wer diese Readings (master, limit, rule, start und delay) braucht (und was draus machen kann), kann sie sich durch Löschen der # (Zeilen 152ff) freischalten. Dafür extra Code und Attribute schalten fand ich übertrieben.

hjgode

Hallo per

erst einmal vielen, vielen Dank für das Modul.

Leider 1: es gibt wohl keine SOP112 Steckdosen mehr von ELV. Habe nur ein Set ergattern können.

Leider 2: der Code hat einen Fehler bzgl. SetExtensions. Beim Aufruf von "set SOP112xy on-till <time>" kommt immer "unknown argument" oder so. Da mir 'on-till' für die sunset Aussenbeleuchtung  Steuerung wichtig ist, habe ich den Code angepasst.

Hier mein Patch:
diff 54_SOP112.pm 54_SOP112_20160202.pm
110,113c110,111
< my $myList = join(" ", %SOP112_sets);
< ###     return SetExtensions($hash, $myList, $name, $cmd, @a) if(!defined($cmd));
<      return SetExtensions($hash, $myList, @a) if(!defined($cmd));
< ### return SetExtensions($hash, join(" ", sort keys %SOP112_sets), $a[1]) if(!defined($cmd));
---
> return SetExtensions($hash, join(" ", sort keys %SOP112_sets), $a[1])
> if(!defined($cmd));


Der Vollständigkeit halber hab ich das geänderte Modul mal angehängt.

Vielen Dank noch mal

Josef
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

Per

Zitat von: hjgode am 21 Mai 2016, 07:41:00Leider 2: der Code hat einen Fehler bzgl. SetExtensions.
Nee, ist kein Fehler. Wie du am Diff siehst, war SetExtensions anfangs drin. Aber weil ich es nicht brauche, es das Set-PullDown füllt und weil ich die Arbeitsweise nicht kenne, also auch nicht weiß, ob es Quereffekte gibt, habe ich es auskommentiert.
Kannst ja mal berichten, ob es mit SetExtensions sauber läuft.