CUL/CUN Auslesescript für EM1000 System

Nachfolgend ein kleines Script zum Auslesen der Meldungen von EM1000-Sensoren, die von einem CUL bzw. CUN bereitgestellt worden sind. Für CUL(USB) muss eine ComPort-Instance, für CUN(Netzwerk) eine Clientsocket-Instance bzw. bei Nutzung des USB-Anschlusses auch eine Comport-Instanz mit einer RegVar-Instance verbunden werden. Die Regvar-Instance bekommte das folgende Script als Ziel. Alles andere geht automatisch. Wahrscheinlich muss dann noch die Stromzählerkonstante für den EM-WZ angepasst werden, default sind 150U/kwh.

Das Script kann man sicherlich auch noch optimieren und erweitern. Es zeigt ganz gut den dynamischen Umgang mit Variablen in Hierarchien. Für die Lizenz-Kalkulation: jeder Sensor benötigt hier 10 Variablen.

Prinzipiell ist es möglich, gleich auch noch die anderen übertragenen Datensätze wie FS20,HMS,FHT usw. mit einer zusätzlichen If-Bedingung im gleichen Script auswerten zu lassen.

Tommi

<edit 26.09.10> Das Script wurde um die Dekodierung von FS20, HMS,WS300 und FHT-Daten erweitert. Auf Grund der Größe kann man es jetzt von meiner Webseite(s.u.) laden.</edit>
<edit 15.07.2013> Jetzt auch mit Unterstützung der günstigen FHT TFK ohne FHT80B und Ansteuerung der FS20-Schalter</edit>

Jetzt auch mit mehr Doku auf tdressler.net.

Tommi

hi yulock,

keine Ahnung, was du für geld ausgeben willst :rolleyes:
Ich habe bei mir ein XS1 von ezcontrol im Einsatz.
(Kostet in der Basisversion 189€, du brauchst noch zusätzlich die Empfangen-Option für 65€, Script-Option nicht nötig, kann ja meines Wissens IPS :smiley:

Prima Teil, dass verschiedenste FS20 aber auch Funkmodule anderer Hersteller anfunken und empfangen kann, sowohl 443 Mhz als auch 866 Mhz (alles auf der Herstellerseite ersichtlich, z.B. auch ein ein Funksteckdosenset für 13,95 €, was prima funzt, aber auch Tempsensor (gibts bei Conrad derzeit für 5 (!!) €,Regen, Windsensoren etc. alles für einen akzeptablen Preis, nur halt die etwas teureren Anschaffungskosten). Mit überschaubarem Aufwand kann das Teil auch im IPS genutzt werden. Im Shop gibts dort auch ein Funkmodul zum Auslesen herkömmlicher Stromzähler.

Marc

Hallo Mrcry,

hier geht es um ein Script für die busware.de-Produkte CUN und CUL. Aber wenn Du es schon ansprichst…

Ich finde das XS1 völlig überzogen. Schon das T-10 war kein Sonderangebot. Nachdem sich die Firma mehrere Jahre quasi tot gestellt hatte kommen sie nun mit diesem Gerät aus der Versenkung, bei dem man auf den Grundpreis fürs Senden fast alles extra bezahlen darf. Der Grundpreis für alles zusammen wäre ja gerade noch OK, aber für den Preis habe ich ja schon einen Mini-PC mit IPS zu stehen. Und ich bin nach den Erfahrungen mit dem T10 extrem skeptisch, was den zukünftigen Support angeht.

Das CUL (=USB)kostet in der einfachsten Form 39Eur(+opt. Gehäuse 5Eur), das CUN(Netzwerk+SD-Card) 74Eur (+Gehäuse) . Es kann zwar nur eine Frequenz (entweder 433 oder 868Mhz (beim Kauf angeben), aber die Firmware liegt im Sourcecode vor, da arbeiten einige Freiwillige dran, (Ezcontrol dagegen besteht wohl nur aus 2 Personen) und man kann zur Not auch noch selber seine Wünsche einpassen.

Tommi

Sorry tommi,
diese Antwort sollte nicht hier landen…
Habe es nochmal korrekt unter http://www.ip-symcon.de/forum/f23/stromzaehler-scheibe-11328/ abgelegt.

Aber ich will trotzdem nochmal meinen Senf dazugeben:
Als Senior Member wirst Du Dich sicher mit den Marktpreisen von diesen Dingen gut auskennen. Mag demnach auch sein, dass das XS1 etwas preislich überzogen ist. Unabhängig davon kam ich, trotz meiner derzeit noch überschaubaren Erfahrung mit IPS, Funk und Bus, mit dem Teil und dessen Einbindung in IPS relativ schnell zurecht. Auf der Herstellerseite sind die Dinge recht gut kommentiert. Die Sache CUL/CUN hat für mich etwas mehr mit Gefrickel & Bastelarbeit zu tun. Gut, dafür hätte ich am Ende vielleicht 100 € gespart…

Bitte aber nicht falsch verstehen: Trotz der kurzen Zeit, die ich erst dabei bin, haben mir viele nette Leute schon prima weiterhelfen können :slight_smile:

[HONIGUMDENBARTSCHMIEREN ON]
Du gehörst bestimmt auch dazu :wink:
[/HONIGUMDENBARTSCHMIEREN OFF]

Ich habe das Script um die Dekodierung dieser Satztypen erweitert.
Doku und Download wieder hier: CUN/CUL-Parser.

Tommi

Hi tommi,

sehr schönes Script. Da werde ich wohl doch meine bisherigen Ansätze wieder in die Tonne treten und auf das was Du bislang gemacht hast umschwenken.

Ich muss nur die Historie der geloggten Values noch hinüberretten. Gibts dafür eigentlich eine Best Practice?

Ich meine Var mit ID x wird dur interne Umstellung durch Var mit ID y ersetzt. Fachlich sind beide aber das gleiche. Also soll y die Historie von y übernehmen.

Gruß Steve

Mit der History habe ich mich noch nicht beschäftigt.
Aber ich denke, es wird einfacher sein, den Baum anlegen zu lassen und anschliessend die neu angelegten Variablen gegen die alten Variablen mit der gleichen Funktion auszutauschen und deren Namen auf die vom Script erwarteten Namen anzupassen. Damit bleibt die Variablen-ID für die History gleich.

Tommi

So, jetzt habe ich das CUN geflasht und per Hyperterminal die IP-Adresse geändert und den DCHP-Server abgeschaltet. Ist ansprechbar.
Dann nach tommis Vorgaben ins IPS eingebunden.
Ergebnis: nix kam an. Senden war möglich.

Was tun. Cun wieder über Hyperterminal angesprochen und X21 gesendet.
-Könnte man noch ein Script entwickeln, dass beim IPS-Neustart oder zu anderen Bedingungen
die notwendigen Grundeinstellungen an das CUN sendet?-

Seitdem gehts.

Aber von den EM1010 und HMS-Aktoren kommt noch nichts an. WS ist noch unvollständig.
Muss hier irgendetwas am CUN eingestellt werden?

Ein FHT kommt an, aber mit Fehlermeldung.
Das zweite FHT ist nicht zu sehen.

Jetzt versuch ich mich so durchzuarbeiten.

@tommi
besten Dank für deine Arbeit.
Die logs werden im Script-Ordner erstellt. Ist das so gewollt?

Hallo Rainer,

Die logs werden im Script-Ordner erstellt. Ist das so gewollt?

Eigentlich nicht. Ich hatte bisher erwartet, das die Files ohne Directory-Angabe im IPS-Hauptverzeichnis erstellt werden. Ist wohl mal geändert worden… Aber genau deswegen habe ich die Dateinamen ganz nach oben ins Script gelegt, damit man sich den Namen leicht ändern kann,z.B. den gewünschten Pfad mit hinzufügen. Die Logs kann man auch ganz abschalten, ist eigentlich nur Traffic/Debug-Ausgabe.

Aber von den EM1010 und HMS-Aktoren kommt noch nichts an. WS ist noch unvollständig.
Muss hier irgendetwas am CUN eingestellt werden?

Ich verwende das CUN mit FW 1.39 und Modus X01. Versuche es mal mit dieser Einstellung. Da das Script mit den RegEx den Record genau prüft, wird es „unpassende“ Records wegwerfen. Ich muss das in meiner Beschreibung noch ergänzen.
Hier ein Vergleich der Ausgaben(gemacht mit Putty übers Netzwerk in der Einstellung RAW auf Port 2323 „->“ bedeutet Kommentar von mir ):

V ->Version abfragen
V 1.39 CUN
X ->Abfrage Modus
01 900 -> CUN ist im X01 modus
->Daten
E01015BA5570600EF01
T102400A6C2
K41304176
H661A81510100
T0A4700A600

X21 ->hier X21 Modus setzen
Records haben jetzt das Byte für RSSI mehr
->Daten
E0205B3982116001800F2
T102400A6C204
H6E7705011C0010
T0A4700A60017
T0A474269D419
T0A4743690019

Tommi

Ich habe mit X01 das CUN am Laufen. Es empfängt alle Sensoren. Der Baum der Konsole explodiert mit neuen Zweigen.

Eben gerade IPS neu gestartet und nix kommt vom CUN.
Anscheinend muss beim Neustart des CUN der Auftrag Reports zu senden (X01) wieder gesendet werden.
Ich habe die Instanz geschlossen, über Hyperteminal verbunden und „X01“ gesendet. Dann die Instanz wieder geöffnet.

Da gibt es sicher eine einfachere Möglichkeit. Ich stehe auf der Leitung.

Wie mache ich das am sinnvollsten? [Edit2] Wäre RegVar_SendText(12345,„X01“); der richtige Weg? [/Edit]

Edit:

Meine Logs landen jetzt in dem Log-Verzeichnis. Ich habe mit GetKernelDir() den Pfad hinzugefügt.

Ich habe eine neue Version auf meine Webseite ( CUN/CUL-Parser ) gestellt, welche die genannten Probleme eleminieren sollte. Dazu habe ich einen Eventhandler erstellt, welcher bei Aktivierung der Instance die Parameter selber setzt. Zusätzlich kann man die Signalstärke pro Sender in dB erfahren (Variable „Signal“, ggfls manuell erstellen oder den ganzen Baum neu erstellen lassen).
Die Hinweise zur Konfiguration wurden erweitert.

Tommi

So, jetzt habe ich alle Geräte mit der Variablen „Signal“ ausgestattet.
Der Empfang der Geräte ist recht stark.

Aber ich habe auch einen Geist. Hat nichts mit der Erweiterung zu tun.
Kennung T4414B90106 oder T4414B9xxxx, x steht für div. Werte.
Aber immer T + 10 Stellen. B9 sollte eigentlich die Ventiladresse sein.
Ich hab jetzt alles durchgesucht und nichts gefunden. Ist aber kein Wunder bei meinem Gerätedurcheinander. Steiners USB-868-Anwendungen kann ich von der Zeitmarke her ausschliessen.

[Edit] Kaum den Beitrag verfasst, schon den „Geist“ gefunden. Auf dem Dachboden lag noch ein Tür/Fenster-Melder mit alten Batterien. Das wars.
Müsste noch in dein Script eingebaut werden. [/Edit]

Dann hatte ich noch ein Script, mit dem ich den Tagesverbrauch des EM-Zählers berechnet habe unterhalb des Sensors angeordnet. Dies verursachte eine Fehlermeldung Variable nicht vorhanden, obwohl es ein Script war. Verschoben ->ok.

Die Eventsteuerung löst mein Startproblem.

Ich habe gerade wieder eine neue Version online gestellt.
Änderungen:

  1. Anzeige TFK.

Kennung T4414B90106 oder T4414B9xxxx, x steht für div. Werte.
Aber immer T + 10 Stellen. B9 sollte eigentlich die Ventiladresse sein.

Da bin ich mir nicht Sicher. B9 ist normalerweise der Opcode, aber dieser wurde bisher nicht erwähnt. Ich hoffe, das er konstant ist und dieses als TFK-Indikator eingebaut. Spannend wird es nur, wenn es mehrere TFK an einem FHT gibt. Da bin ich auf Euer Feedback angewiesen, da ich keine FHT-TFK habe.
2. Korrektur

Dann hatte ich noch ein Script, mit dem ich den Tagesverbrauch des EM-Zählers berechnet habe unterhalb des Sensors angeordnet. Dies verursachte eine Fehlermeldung Variable nicht vorhanden, obwohl es ein Script war.

Es wird jetzt der Objekttyp auf Variable geprüft.
3. Mehrere Ventilantriebe
Die Position mehrerer Ventilantriebe wird durch automatisch angelegte zusätzliche ‚Position‘-Variablen angezeigt (ungetestet, ich habe nur einen Antrieb pro FHT)

Tommi

Hab die Version 0.4 mal reingezogen.
Bei der Empfang fürs TFK kommt folgende Fehlermeldung:

<b>Warning</b>:  Missing argument 3 for getVid(), called in C:\Programme\IP-Symcon\scripts\59894.ips.php on line 586 and defined in 
<b>C:\Programme\IP-Symcon\scripts\59894.ips.php</b> on line <b>988</b><br />
<br />
<b>Warning</b>:  Could not convert variant of type (String) into type (Boolean) in 
<b>C:\Programme\IP-Symcon\scripts\59894.ips.php</b> on line <b>588</b><br />

Ich habe auch nur einen FHT-TFK.

jaja, das kommt davon, wenn man in letzter Sekunde die Funktionsparameter ändert. :rolleyes: Bitte noch einmal neu Downloaden und die alte TFK-Variable entsorgen.

Tommi

Die Fehler sind weg.
Danke dir.

Ich habe meine Logging Vorgaben wie folgt geändert, um die Logs im Verzeichnis „C:\Programme\IP-Symcon\logs“ zu haben:

//logging
$logPfad = (IPS_GetKernelDir(). "logs\\");
//echo $logPfad;
$cullog=$logPfad . "cul.log";
$emlog=$logPfad . "culem.log";
$fs20log=$logPfad . "culfs20.log";
$fhtlog=$logPfad . "culfht.log";
$wslog=$logPfad . "culws.log";
$hmslog=$logPfad . "culhms.log";

Vielleicht kannst Du das ja mal bei einer der nächsten Versionen einbauen.

Hallo,

im Script scheint auch ein kleiner Bug zu sein.

Wenn ein Stromsensor (Sensor 5-8) 0,0 KW sendet, steht in der Actual Variable 655,36 KW.

Finde ich ein wenig viel für 0,0 KW.

Könnte im nächsten Release vielleicht auch korrigiert werden.

Ansonsten erstklassiges Script.

Im übrigen habe ich mein CUL an der CCU angeschlossen und werte die Web-Seite des CUx-Daemon auf der CCU mit diesem Script aus. Das Script ist dazu nur wenig geändert. Somit habe ich in der CCU und IPS die Daten.
Somit kann ich auch von der CCU FS20 Geräte schalten und auswerten.

Gruß

MCS-51

Wenn ein Stromsensor (Sensor 5-8) 0,0 KW sendet, steht in der Actual Variable 655,36 KW.
Könnte im nächsten Release vielleicht auch korrigiert werden.

Ich brauche dafür den betreffenden Datensatz.
Ich selber habe das Problem nicht. Die Zahl sieht auch aus wie FFFF(hex) statt 0000.

Tommi

Hi,

gerne.

E020608000000000000
E020609000000000000
E02060B000000000000

Gruß

MCS-51