In diesem Thread hatte ich ja schon angekündigt mein X10 Script zu posten.
Also hier ist es.
Manche haben ja das Problem, daß das CM11 nicht mehr reagiert und nur 0xA5 sendet. Laut der Protokollbeschreibung will das CM11 damit Markos anfordern. In diesem Script wird auch ein leeres Makro gesendet. Da mein CM11 jedoch sowas noch nicht gemacht hat konnte ich die Funktion leider nicht testen.
Das Script ist jedoch haupsächlich dazu da mit X10 Geräten zu kommunizieren.
Wie es eingebaut und benutzt wird steht im Script.
Vorab schon mal Sorry für den langen Text :o
Und denkt dran das ganze ist noch Alpha. Die einfachen Sachen wie ON und OFF sollten aber laufen. Das Script ist aber noch lange nicht durchgetestet.
Da das Script auch etwas länger ist hab ich es mal als Anhang gepostet.
Viel Spaß damit…
geändert von MST: weiter unten gibt es ein neueres Skript.
vielen Dank für Dein Skript.
Bei mir hat soweit alles geklappt. Das „Open“ Icon hat noch keine Funktion. Wir werden es „grauen“. Es funktioniert mit „New“, wenn vorher das Skript in den Ordner kopiert wurde.
Es gab eine Fehlermeldung / Zeile 379 – mit $TX_DATA[0] = ““; in 123 war sie verschwunden
Mein Gerät sendet leider weiterhin A5. Die „elseif“ scheint nicht ausgefügt zu werden. Ich werde heute abend weiter testen.
SetValueString($TX_BUFFER, GetValueString($TX_BUFFER)); //Das Senden nochmal neu Triggern.
Da kommt doch das $TX_DATA gar nicht vor
Wie sah die Fehlermeldung denn aus?
Kann ja höchstens sein, das die Sendepuffervariable noch nicht angelegt war.
Beim 0xA5 Problem:
Kommt auch die Log Meldung nicht?
Ob die Antwort richtig ist weiß ich nicht. Aber er sollte schon erkennen, daß er 0xA5 empfängt.
vielleicht kommt da noch was anderes mit als 0xA5.
hast du auch „Overwrite Variable“ angehackt in den Properties? Hatte mal ein ähnliches Problem.
Ansonsten schick mir doch mal einen Teil deines log-files.
Vielleicht hilft es ja etwas.
Kann man da eigentlich auch die Debug-Ausgabe der COM-Port Instanz reinkriegen?
vielen Dank erstmal für Dein Skript. Habe nun auch etwas getestet. Bei mir will’s nicht. Nach dem ersten starten des Skripts kommt bei mir fast im Sekundentakt folgendes:
wie es aussieht reagiert das CM11 einfach nicht auf das Makro.
Der ausgegebene Fehler kommt daher, das die LogMessage den gesendeten Befehl ausgeben will. Den gibt es bei einem Makro natürlich nicht.
Daher kam wahrscheinlich auch die meldung von Steiner.
Du kannst die Zeile einfach so ändern:
Wie es aussieht kann 0xA5 auch bedeuten, daß das CM11 nach einem Netzausfall die Uhrzeit neugesetzt haben möchte (RESET).
Tolle Protokolldefinition ein Wert für zwei Sachen :mad:
Naja ich hab mal versucht solch ein Uhrzeittelegramm zu basteln.
Komplizierter kann man sowas nicht aufbauen. Die hätten doch bestimmt noch 2 Byte mehr Platz gehabt :eek:
Mein CM11 scheint es jedenfalls zu fressen. Solch ein Uhrzeittelegramm darf man dann zu jeder Zeit senden.
Es kann aber auch sein, das das CM11 wegen Störungen auf der Leitung ständig einen Powerfail bekommt.
Schaut euch mal diesen Thread im Newsnet an.
Ich hab auch mal die $TX_BUFFER Behandlung erweitert. Leerzeilen sollten jetzt keine Fehler mehr hervorrufen.
also, mit der alten Version klappt es auch nicht (gleicher Fehler wie bei steiner). Bei der neuen finde ich Interessant, das die Antwort nach dem senden des Uhrzeittelegramms sich immer verändert (meist steigt der Wert um 4). Ich denke nicht, daß es am Stromkreis o.ä. liegt, da das CM11, sobald ich ActiveHome starten, einwandfrei schaltet (selbe Steckdose, selber Rechner, selber COM-Port…alles gleich).
Ich habe mal den Traffic am ComPort mitgehorcht und der sieht beim Starten von ActiveHome (also da, wo es funktioniert) wie folgt aus (siehe erste Grafik).
Leider verstehe ich wohl zu wenig davon, daß es mir helfen könnte, aber vielleicht fällt Dir etwas auf, daß meinem CM11 beim Betrieb unter IPS noch fehlt, wenn Du Dir den log von ActiveHome mal ansiehst.
Das ist die einzige Kommunikation zwischen Rechner und CM11 während des Startens von ActiveHome (die nächste kommt erst beim ersten Schaltvorgang). Im Grunde genommen müssten ich doch hier die Lösung finden …
Das zweite Log (zweite Grafik) ist dann die mitgetracete Kommunikation auf dem COM-Port beim Start von IP-Symcon…Hab ich mal zum Vergleichen mit drangehängt.
Danke schonmal
rob.
EDIT:
Hab gerade bemerkt, dam man bei den Logs nicht gut erkennen kann, wo das eine aufhört und das andere anfängt:
Also ab der Zeile „GetStatus 0 2800“ beginnt das Log, das beim Starten von IP-Symcon erstellt wird.
Alles vorher ist der Start von ActiveHome.
ActiveHome sendet direkt nach öffnen des COM-Ports ein „Status Request“ (0x8B).
Daraufhin antwortet das CM11 auch mit solch einem Protokoll.
Ist nur komisch, das das CM11 überhaupt auf solch ein Protokoll reagiert.
Testweise kannst du ja mal Über ein Script dieses 0x8b senden.
Also mein Script deaktivieren. Und dieses Script ausführen:
COMPort_SendText(12345, chr(0x8b));
Das wird noch keine Besserung bringen, weil dann die Bestätigung fehlt, aber man würde schon mal sehen ob dein CM11 überhaupt antwortet.
Ich glaube langsam, das es an den Einstellungen der seriellen Schnittstelle liegt. ActiveHome setzt das Handshake auf „None“. IPSymcron aber auf „CTS DTR“. Vielleicht mal in der COM Instanz die Flow Control auf „None“ stellen.
Auch wird bei ActiveHome das DTR Signal gesetzt bei IPS wird es zurückgesetzt. Da weiss ich aber nicht, wie ich das aus dem Script herraus ändern kann.
Mach mal bitte den 0x8B Test. Vielleicht sind wir dann ja schlauer.
EDIT: Da ist noch was komisch. Das Uhrzeittelegramm sollte 7 Byte haben. Hat bei Dir aber nur 6 Byte.
Füge doch bitte mal in Zeile 437 folgendes ein:
… und noch wichtig: eigene ID des COM Port Modul im Skript eintragen und es kann Probleme
mit „USB > Seriell Wandlern“ geben, die über einen HUB betrieben werden.
@Steiner:
Kann es sein, das durch die COM Einstellungen ein Zeichen verschluckt wird?
Kannst du bei dir auch mal einen Mitschrieb der Schnittstelle machen. da sollten 7 Bytes rübergehen.
So ein Mist, …es lag tatsächlich an der „Flow Control“ - Einstellung des Com-Ports. Ich hatte bei meinen ersten Tests mit steiners Skript da dran rumgespielt und die Flow-Control Einstellung stand auf „Hardware“. Ich hab sie jetzt umgestellt auf „None“ und schon „klackts“ hier bestens !!!
Hab danach das ganze auch nochmal über nen Seriell–>USB Adapter probiert (Keyspan)…und auch damit funktionierts problemlos.
Somit kann ich nun endlich alle meine Geräte über eine Oberfläche steuern
Nochmals vielen Dank an McFly und das IPSymcon-Team (die es geschafft haben, daß ich mir tatsächlich wieder nen Windows-Rechner ins Haus geholt habe) für die Super-Unterstützung !!!
EDIT: @McFly: Das mit dem 7. Byte beim Uhrzeittelegramm war mein Fehler. Ich hatte bei den Tests gestern Abend ein bißchen in Deinem Skript rumgespielt und das komplette Uhrzeittelegramm mal auskommentiert, um dort das 0x8b zu senden. Beim einkommentieren habe ich dann die letzte Zeile vergessen … Hab’s gerade eben wieder einkommentiert und jetzt werden auch wieder 7 Bytes übertragen (funktionierte aber vorher auch schon mit nur 6 Bytes)…