IPswitch-SG

Das folgende Skript ermöglicht das Lesen der Eingänge des IPswitch-SG Gerät.
Infos / Hersteller: SMS-GUARD, Überwachen und Schalten mit dem Handy per SMS - europaweit, SMS Alarm, GSM Alarm, m2m, Warnsystem für Privathandys, Warnsystem für Notfälle

//Hier die IP-Adresse des Geräts eintragen und per Excute das Skript ausführen //um die Installation zu vollziehen. Es wird automatisch ein Timer angelegt, //der alle 5 Minuten das Gerät abfragt.
$ip = "192.168.2.82";

//Ab hier nichts mehr ändern
$object = IPS_GetObject($IPS_SELF);
$parentID = $object['ParentID'];

//Installer
if ($IPS_SENDER == "Execute") {
   IPS_SetHidden($IPS_SELF, true);
   IPS_SetName($IPS_SELF, "Auslese-Skript");
   $parentObject = IPS_GetObject($parentID);
   if ($parentObject['ObjectType'] !== 1)
   {
       $instanceID = IPS_CreateInstance("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
       IPS_SetParent($instanceID, $parentID);
       $parentID = $instanceID;
       IPS_SetParent($IPS_SELF, $parentID);
       IPS_SetName($instanceID, "IPSwitchSG");
   }
   IPS_SetScriptTimer($IPS_SELF, 300);
}

$data = file_get_contents("http://$ip/csv.html");
$lines = explode(",", strip_tags($data));

SetValue(CreateVariableByName($parentID, "iC1", 0), $lines[1] > 0);
SetValue(CreateVariableByName($parentID, "iC2", 0), $lines[2] > 0);
SetValue(CreateVariableByName($parentID, "iC3", 0), $lines[3] > 0);
SetValue(CreateVariableByName($parentID, "iE1", 0), $lines[4] > 0);
SetValue(CreateVariableByName($parentID, "iE2", 0), $lines[5] > 0);
SetValue(CreateVariableByName($parentID, "iTi Exceed", 0), $lines[6] > 0);
SetValue(CreateVariableByName($parentID, "iTe Exceed", 0), $lines[7] > 0);
SetValue(CreateVariableByName($parentID, "i10V Exceed", 0), $lines[8] > 0);
SetValue(CreateVariableByName($parentID, "iTi", 2, "~Temperature"), str_replace(".", ",", $lines[9]));
SetValue(CreateVariableByName($parentID, "iTe", 2, "~Temperature"), str_replace(".", ",", $lines[10]));
SetValue(CreateVariableByName($parentID, "i10V", 2), str_replace(".", ",", $lines[11]));
SetValue(CreateVariableByName($parentID, "oC1", 0), $lines[12] > 0);
SetValue(CreateVariableByName($parentID, "oC2", 0), $lines[13] > 0);
SetValue(CreateVariableByName($parentID, "oE1", 0), $lines[14] > 0);
SetValue(CreateVariableByName($parentID, "oE2", 0), $lines[15] > 0);

$data = file_get_contents("http://$ip/cnt.html");
$pos = strpos($data, "iC1= ");
SetValue(CreateVariableByName($parentID, "iCnt1", 1), substr($data, $pos+5, strpos($data, ",", $pos)-$pos-5));
$pos = strpos($data, "iC2= ");
SetValue(CreateVariableByName($parentID, "iCnt2", 1), substr($data, $pos+5, strpos($data, " <", $pos)-$pos-5));
$pos = strpos($data, "iC3= ");
SetValue(CreateVariableByName($parentID, "iCnt3", 1), substr($data, $pos+5, strpos($data, " <", $pos)-$pos-5));

 function CreateVariableByName($id, $name, $type, $profile = "") {
  global $IPS_SELF;
  $vid = @IPS_GetVariableIDByName($name, $id);
  if($vid === false) {
   $vid = IPS_CreateVariable($type);
   IPS_SetParent($vid, $id);
   IPS_SetName($vid, $name);
   IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
   if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
  }
  return $vid;
 }

Zum Schalten können folgende Befehle verwendet werden:
(bitte die IP-Adresse anpassen)

//Zum Schalten können diese Befehle kopiert werden
file_get_contents("http://192.168.2.82/?oCA=1"); //oC1 AN
file_get_contents("http://192.168.2.82/?oCA=0"); //oC1 AUS

file_get_contents("http://192.168.2.82/?oC1=1"); //oC2 AN
file_get_contents("http://192.168.2.82/?oC1=0"); //oC2 AUS

file_get_contents("http://192.168.2.82/?oE1=1"); //oE1 AN
file_get_contents("http://192.168.2.82/?oE1=0"); //oE1 AUS

file_get_contents("http://192.168.2.82/?oE2=1"); //oE1 AN
file_get_contents("http://192.168.2.82/?oE2=0"); //oE1 AUS

file_get_contents("http://192.168.2.82/?res1"); //Reset CNT1
file_get_contents("http://192.168.2.82/?res2"); //Reset CNT2
file_get_contents("http://192.168.2.82/?res3"); //Reset CNT3

MST

oC1 wird jetzt korrekt eingelesen.

paresy

Falls jemand den SG-1 hat/einsetzt hier eine kleine erweiterung des abfragescripts von MST.

im abfragescript anstelle der zeilen:

SetValue(CreateVariableByName($parentID, "iTi Intern", 2, "~Temperature"), str_replace(".", ",", $lines[9]));
SetValue(CreateVariableByName($parentID, "iTe Panel", 2, "~Temperature"), str_replace(".", ",", $lines[10]));

diese einsetzen:


SetValue(CreateVariableByName($parentID, "iT 0", 2, "~Temperature"), str_replace(".", ",", $lines[16]));
SetValue(CreateVariableByName($parentID, "iT 1", 2, "~Temperature"), str_replace(".", ",", $lines[17]));
SetValue(CreateVariableByName($parentID, "iT 2", 2, "~Temperature"), str_replace(".", ",", $lines[18]));
SetValue(CreateVariableByName($parentID, "iT 3", 2, "~Temperature"), str_replace(".", ",", $lines[19]));
SetValue(CreateVariableByName($parentID, "iT 4", 2, "~Temperature"), str_replace(".", ",", $lines[20]));
SetValue(CreateVariableByName($parentID, "iT 5", 2, "~Temperature"), str_replace(".", ",", $lines[21]));
SetValue(CreateVariableByName($parentID, "iT 6", 2, "~Temperature"), str_replace(".", ",", $lines[22]));
SetValue(CreateVariableByName($parentID, "iT 7", 2, "~Temperature"), str_replace(".", ",", $lines[23]));

damit werden alle 8 1-Wire Sensoren abgefragt und angelegt.

Soweit ich es bis jetzt getestet habe gehen nur Sensoren mit dem Family-code 10.xx.xx…
Sensoren aus der 28er familie werden zwar erkannt, aber nicht ausgelesen.

flyship

Hallo flyship,

an das IPswitch-SG1 kannst du jeden 1-Wire DS18S20 Temperatursensor in parasitär Modus betrieben werden.

Grüße
Andrge

hi andrge,

Stimmt, das hab ich unterschlagen.

geht im Parasitären Modus aber nur bis ~90°C.

Da ich aber den SG-1 als Solar-Backup für den IPS-Rechner (wegen Windows, nicht wegen IPS!) nutze hab ich das erst gar nicht getestet.

In den Kollektoren hab ich im Sommer so zwischen 100°C - 115°C.
Ich weiß, ist sehr knapp für die 1wire-sensoren.
Mal sehen wie lange die das noch mitmachen.
Zwei Jahre halten sie jetzt schon.

Flyship

Hallo Flyship,

hier ist ein PT1000 Temperatursensor sicherlich die bessere Wahl, die gehen ohne Probleme bis 200°C, wird aber nicht direkt von der SG1 unterstützt.

Grüße
andrge

Hallo zusammen,
hat schon mal jemand ein Script für den IPswitch-add-Eingänge geschrieben?
Hab mir so ein Teil zugelegt. Ist eine gute Alternative um 8 Stromzähler via S0 auszuwerten, zu loggen und zu visualisieren.
Leider habe ich bisher kein Script oder Modul für die Einbindung in IPS gefunden. Habe als Newbie versucht das Script für den IPswitch-SG anzupassen und bin leider gescheitert. Einzelne html-Seiten auf die verwiesen wird gibt es beim „IPswitch-add-Eingänge“ wohl nicht.
Kann mir bitte jemand helfen? Oder muss ich das über einen wwwReader lösen?
Danke für Euere Antworten,

Hallo zusammen,
hab jetzt mal selber angefangen. Es geht noch immer um den IPSwitchAddE.
PHP-Code aus dem Forum zum auslesen von Webseiten. Werte Wh->KWh durch Berechnung an IPS-Standard-Variablen-Profile angepasst. Leider hab ich noch nicht verstanden wie ich auf der Webseite des Teils unter ./Set8.html den Wert z (Zählerstand) so eingebe dass er mir dann auch den eingegebenen Wert anzeigt. Eingegeben: 5407200 (als Wh), Anzeige 38490 (als Wh). Imp = 800/KWh. Daher hab ich den Zählerstand auf 0 gelassen und im Script den aktuellen Zählerstand addiert.

<?

$ip = "192.168.178.100";
$data = file_get_contents("http://$ip/csv.html");
$lines = explode(",", strip_tags($data));

$ZaehlerStand = ($lines[16]+5411200)/1000;
$AktVerbr = $lines[25]/1000;

SetValue(16528 /*[Test\Test_IP-Switch\IPSwitchAddE01\IPSwitchAddE01_iC16_AVerbr]*/ , $AktVerbr);
SetValue(47331 /*[Test\Test_IP-Switch\IPSwitchAddE01\IPSwitchAddE01_iC16_ZS]*/, $ZaehlerStand);

?>

Bin ich denn der erste der diese Hardware nutzt?
Wenn nein wäre ich dankbar wenn ihr Eure Erfahrungen und Lösungen mit mir teilen würdet.
Danke und

Hallo Wolfgang,

ich bin auch gerade auf das IPswitch-addE gestoßen und finde es sehr interessant, überlege mir ob ich es mir kaufe. Bist du denn schon weiter gekommen um eine sinvolle Auswertung hinzubekommen?

Interessieren würde mich vorallem ob ich mir damit in IPSymcon den aktuellen verbrauch anzeigen lassen kann und mit dem Datenlogging sinvolle Langzeitdaten speichern kann?

Vielen herzlichen Dank für Deine Antwort

Gruß Robert

Hallo Robert,
funktioniert eigentlich fast alles wie erwartet. Das mit dem Zählerstand hat folgendes auf sich: Hier kann man (sollte man können) den aktuellen Zählerstand eines Bestandszählers eingeben, so dass der IP-Switch von dort aus weiter zählt. Das funktioniert aber leider nur bis zu einem Wert von 5300000. Danach liefert das Ding irgend welche Werte. Nach einigen Mails mit dem Hersteller (war echt bemüht) räumte dieser ein, dass dies wohl noch ein Bug sei. Hab das ganze dann mit IPS umgerechnet um einen Vergleichswert zu erhalten.
!! Hab eben noch mal die Zählerstandwerte angeschaut (mach ich eher selten). Auch im laufenden Betrieb fällt der Zählerstand bei 5500 KWh zurück auf 0. Bin mit dem Hersteller bereits wieder in Kontakt.
Habe derzeit nur 3 Stromzähler angeschlossen, da ich Tests mit teueren geeichten und billigst ungeeichten fahre und mit der Beschaffung weiterer Zähler das Ergebnis abwarten will. Werden aber wohl die Billigen werden. Bisher sieht es so aus, dass der aktuelle Verbrauch beider Zähler meist identisch ist. Eine eingebaute Fehlerquelle ist, dass ich den Billigen hinter den Geeichten gehängt habe, so dass beim Geeichten der Eigenstomverbrauch des Billigen dazu kommt. Hab das jetzt seit 22. Jan am laufen und eine Zählerstandsdifferenz von 130 Watt (der Geeichte hat mehr) bei einem Gesamtvolumen von knapp 114 KWh.

Hab mit der Installation von hinten angefangen, also Anschluss 16 abwärts.
so sieht die ./csv.html aus:

IPswitch csv m2-21c,0,0,0,0,0,0,0,0,0,0,0,0,0,103547,113878,53579,0,0,0,0,0,73,73,114,

Hier das komplette Script:

$ip = "192.168.178.100";
$data = file_get_contents("http://$ip/csv.html");
//$data = file_get_contents("http://$ip/csv.html/?Password=Pass&sb.html");

$lines = explode(",", strip_tags($data));
//print_r($lines); //zeigt in welchen Zeilen was steht.

$iC16_ZaehlerStand = ($lines[16]+153600)/1000;//SwissNox DSZ ungeeicht
$iC16_AktVerbr = $lines[25]/1000;

$iC15_ZaehlerStand = ($lines[15])/1000;//Eltako WSZ geeicht
$iC15_AktVerbr = $lines[24]/1000;

$iC14_ZaehlerStand = ($lines[14]+10200)/1000;//B + G WSZ ungeeicht
$iC14_AktVerbr = $lines[23]/1000;

//Heizungsteuerung incl. Pumpen und Durchlauferhitzer
SetValue(16528 /*[Verbrauche\Strom\IP-Switch_AddE_01\IPSwitchAddE01\IPSwitchAddE01_iC16_AVerbr]*/ , $iC16_AktVerbr);
SetValue(47331 /*[Verbrauche\Strom\IP-Switch_AddE_01\IPSwitchAddE01\IPSwitchAddE01_iC16_ZS]*/, $iC16_ZaehlerStand);

//IT-Verteiler mit geeichtem Eltako Stromzähler
SetValue(51934 /*[Verbrauche\Strom\IP-Switch_AddE_01\IPSwitchAddE01\IPSwitchAddE01_iC15_AVerbr]*/ , $iC15_AktVerbr);
SetValue(51657 /*[Verbrauche\Strom\IP-Switch_AddE_01\IPSwitchAddE01\IPSwitchAddE01_iC15_Zs]*/ , $iC15_ZaehlerStand);

//IT-Verteiler mit ungeeichtem B+G Stromzähler
SetValue(19625 /*[Verbrauche\Strom\IP-Switch_AddE_01\IPSwitchAddE01\IPSwitchAddE01_iC14_AVerbr]*/ , $iC14_AktVerbr);
SetValue(43992 /*[Verbrauche\Strom\IP-Switch_AddE_01\IPSwitchAddE01\IPSwitch_AddE01_iC14_ZS]*/ , $iC14_ZaehlerStand);

Die Zeile mit dem Passwort ist irrelevant, da die csv.html auch ohne pw ausgelesen werden kann. Leider. ssl ist auch nicht möglich.
Habe kein Online-Logging.

Fazit: Das Teil ist für den Preis und die 8 S0-Zähler die es auswerten kann ok. Einziges Mango ist die Sache mit dem max. Zählerstand.
!!Hab eben eine Antwort vom Hersteller bekommen. Bei neuen soll das Problem anscheinend behoben sein.!!

ja, da gibt es inzwischen eine Lösung als Firmware-Update. Da die Neu-Programmierung hier Arbeitszeit verursacht, kostet das Update 20.-- pauschal zzgl. Mwst. + Versand.
Oder halt einen neuen bestellen…

Die Integration in IPS scheint mir (als PHP-Laie) einfach.

Weitere Fragen? Gerne.

Hallo Wolfgang,

vielen Dank für die ausführliche Antwort, ich glaube anhand Deiner Anleitung sollte ich das hinbekommen :slight_smile: Nun habe ich noch eine Frage, das 8S0 teil kostet ja etwas über 100€, was kosten denn die einzelnen phasen zähler? Was ich im shop so gesehen hatte lag bei => 50€ pro stück, das hat mich irgendwie etwas geschockt … was nimmst Du denn da für welche her?

Vielen Dank und Gruß
Robert

Hallo Robert,
freut mich wenn ich auch mal jemandem helfen konnte …
Ich verwende wenn ich Qualitativ hochwertiges und genaues möchte, wenn möglich Eltako. Ist zwar teuer, aber ich bin der Meinung gute Ware und guter Service dürfen kosten. Und wenn ich die Kohle dafür nicht hab, dann spar ich eben 1-2-3 Monate länger für das was ich wirklich will, statt mich auf faule Kompromisse einzulassen und mich später dann doch darüber zu ärgern. Hab schon einiges an Lehrgeld bezahlt. Schluss mit philosophieren …
Der vorhin erwähnte geeichte ist ein Eltako mit Rollenzählwerk und S0 ‚Eltako Wechselstromzähler WSZ12B-32A‘ für 71€.
Der Billigzähler ist ein B+G ‚B+G DRS-155B‘ für 18€. Sollen anscheinend Eltako-Clone aus China von verschiedenen Herstellern sein.

Wenn Du noch keine Entscheidung getroffen hast…
Schau dir mal Digital-Strom an. Vielleicht wär das was für dich. Integration in IPS ist am laufen/fertig (weiss den aktuellen Stand nicht) aber es gibt schon einige Meldungen hier im Forum. DS kann auch den Strom einer Phase zählen und ermöglicht Dir aber weitere Möglichkeiten. Kostet auch ein bissl mehr als 18€.

Hallo Wolfgang,

vielen Dank nochmal für Deine Antwort. Ich bin gerade sehr unschlüssig was ich machen soll, jetzt bin ich auf dieses ALL3690 gestoßen, mit dem ich nichtmal in die Verkabelung eingreifen müsste, jetzt weis ich natürlich nicht ob mir das vielleicht sogar lieber ist :slight_smile:

Hast Du wirklich alles mit Einzelphasen messern gemacht? ich habe gesehen das es auch drei-phasen Messer gibt oder geben die über S0 nur einen Gesamtwert aus?

Danke für Deine Hilfe!

Gruß Robert

Hallo Robert,
ja ich habe, wo ich einzelne Phasen habe auch WSZ (WechselStromZähler) (oder alternativ DigitalStrom) geplant. Aber die zählen ja alle nur den Gesamtstrom einer Phase. Um explizit einzelne Verbraucher zu messen wäre an Steckdosen z.B. PlugWise eine kabellose preisgünstige Alternative (auch schaltbar (mit FunkSchaltern (mit Batterie)), weiteres Zubehör erhältlich). Aber Vorsicht, alle Strommesser haben einen Eigenverbrauch. Wenn Du also 50 Messetellen mit einem Eigenverbrauch von 0.3W hast … Es gibt auch von Eltako UP-FunkstromMesser die (z.T. auch schaltbar(Sensoren und Schalter BatterieLos!)) in ein EnOcean Funknetzwerk eingebunden werden können.
Die DSZ (DrehStromZähler) haben nur einen S0 und liefern immer nur die Summe der drei Phasen.
Nein ich bin kein Elektriker.
Die Allnet-Alternative hatte ich mir auch schon angeschaut. Ist aber nicht günstiger als ein IP-SwitchAdd + 4 ungeichte WSZ und mehr kann das auch nicht. Wenn du Platz im Zählerschrank hast würd ich …
Ich steh auf Ordnung. D.H. ich baue so viel wie möglich in einen Verteiler auf die Hutschiene. Dort kann ich dann ordentlich und übersichtlich verkabeln. Und mit der DigitalStom-Alternative kannst Du erst mal zählen und hältst dir die evtl. späteren Schaltungen offen.

Hallo Wolfgang,

vielen Dank für Deine Tips, ich hab es jetzt ganz anders gemacht und mit den 868-LAN Adapter von IP-Symcon bestellt samt 2 der 4fach S0 eingangszähler und 6 von diesen, wie Du sie nennst, billigen China-nachbauten an Hutschinen-Phansenzählern mit S0 Ausgang. Ich hoffe das dass alles noch vor dem langen Wochenende oder zumindest am Samstag bei mir ankommt, das ich das gleich verbauen kann :slight_smile:

Hast Du vielleicht eine Idee oder Ahnung, wie man sich die Aktuelle Last ausgeben kann? Also damit ich sehe, das ich im moment z.B. 500Watt verbrauche, ich bekomme ja „nur“ die 1000Impulse pro kWh … Vielleicht hast du mir ja noch einen Tipp.

Vielen dank nochmal für die ausführlichen Antworten.

Gruß Robert

Hallo Robert,
ich gehe davon aus dass Du das EKM-868 meinst. Steht in der Doku. Du kannst ein fertiges Variablen-Profil verwenden oder dir selbst eins „basteln“.

An sonsten kannst du mit PHP auch rechnen. Ich habe z.b. in o.g. Script die vom IP-Switch (in IP-Switch schon umgerechneten Impulse in Watt) erhaltenen Watt in KWh umgerechnet und bei einem Zähler noch zu vergleichszwecken den differierenden Startwert addiert.

An sonsten viel Spaß beim „basteln“ und einrichten.

und für die Zukunft…
Erst mal die Doku (die haben die Suchfunktion verbessert), das Wiki, das Forum oder Google bemühen. Dort werden viele Anfängerfragen beantwortet. Und die Mods und Admins sind es, wie aus einigen Antworten ersichtlich, leid ständig die selben Fragen zu beantworten.
Tipps: Versuchs erst mal selber mit o.g. Hilfestellungen (aber nicht zu lange und nicht verzweifeln). Wenn Dus nicht hinbekommst such die ein PASSENDES Forum. Formuliere deine Fragen möglichst präziese, was, wann, wo … Häng bei bedarf Screeshots oder Dateien an, füge Code ein, schreibe was Du bisher versucht hast, …
Je besser Deine Fragen gestellt sind umso schneller und passender bekommst Du Antworten von echt netten und kompetenten Typen hier und keiner verschwendet seine wertvolle Zeit um weiter zu entwickeln oder anderen zu helfen.

Viel Erfolg und

Hi,

ich habe den SG.1 und würde gerne damit meine Abus Terxon Alarmanlage scharf bzw. unscharf schalten.

Hat jemand Ahnung, wie ich das ganze verkabeln bzw. konfigurieren müsste?

CCTV1 (Zone) würde ich dann mit oC1 verbinden oder?

Hallo,

wie ist denn der aktuelle Stand der Einbindung? Hat jemand schon die Messung des Stromverbrauchs über die csv.html im IPS eingebunden?

Lassen sich über das IPS dann auch graphen darstellen?

Wie schaut es denn aus, wenn bei einem Stromausfall die Werte „genullt“ werden? Ist das bei der Verbrauchserfassung berücksichtigt?

Grüße

Du solltest weniger Ungeduld an den Tag legen, erst einmal etwas im Forum lesen und Dich mit der Software IPS beschäftigen.

Wenn Du einen Zugriff auf das Gerät bekommst und die Daten auslesen kannst (und so schaut es für mich aus, wenn ich das lese) dann sind sie in IPS und können gelogged werden. Das heißt, dass diese erstmal in der IPS-eigenen Datenbank sind. Damit sind sie auch bei Stromausfall gesichert. Diese Daten können z.B. über den IPS WebFront mit IPS-eigenen Mitteln problemlos grafisch dargestellt werden.
Was Du nun mit den Daten machst, ist rein Deine Sache.
IPS ist eine Softwareschnittstelle. D.h. Du legst mit dem entsprechenden php-Code fest, was mit den Daten passieren soll.

Aber keine Angst, hier tummeln sich viele helfende Hände bei Problemen. Nur Eigeninitiative wird vorausgesetzt.

Habe nun Geduld und auch viel mehr Durchblick in den letzten Tagen gewinnen können… :slight_smile:

Habe eine konkrete Frage an die IPSwitch Sg.1 Anwender - schaltet ihr über die beiden Output Kontakte (oC1 und oC2)?

Ich habe es nun hinbekommen, meine Alarmanlage über das SG.1 zu steuern.

Sprich wenn ich oC1 schalte, wird ein Impuls erzeugt. Dies mache ich über das Webfrontend des SG.1.

-> oC1= OFF: oC1 on

Wenn ich dann direkt im Anschluss auf OFF schalte

-> oC1= ON: oC1 off

wird die Alarmanlage entweder scharf oder un scharf geschaltet. Somit simuliere ich quasi einen Schlüsselschalter (Impuls) über das SG.1

Mein konkrete Frage nun hierzu:

Ist es möglich, dem SG.1 zu sagen, sende über oC1 einen Impuls und gehe dann wieder auf OFF oder muss ich manuell 1x ON und 1X OFF auslösen?

Mit Symcon könnte ich dies ja problemlos tun, wenn ich es aber schon am SG.1 einstellen kann, wäre das ja besser.

Viele Grüße