Du musst erst, z.B. in einem zyklisch getriggerten Skript, mal den Master Teil des Telegramms senden:
<?
$instance = 28634 /*[Serial Port eBus]*/;
// $instance = 33464 /*[Serial Port eBus Schwede]*/;
function hex2str($hex)
{
$str="";
for($i=0;$i<strlen($hex);$i+=2)
{
$str.=chr(hexdec(substr($hex,$i,2)));
}
return $str;
}
// *** Groß- bzw. Kleinschreibung ist nicht relevant ***
$data = hex2str("FF350902031601020F00"); //dies hier ist mein Service 0902
COMPort_SendText ($instance, $data);
?>
Deine Komponente antwortet dann mit dem komplletten Slave Paket, bei mir:
FF350902031601020F000002B400
Auswerten kannst Du dann auf data[n] wobei n die richtige(n) Stelle(n) im Antwort (Slave) Telegramm sind. (Hier im Beispiel 11 und 12) Versuch das mal im Debug nachzuvollziehen.
Ein anderer User hat doch das Master telegramm selber mal in einem Post vor ein paar Wochen geschrieben:
10 26 B5 09 03 0D 7C 00 0B
Sende das doch mal auf den Bus und schaue ob:
Lt. Vaillant Protokoll:
0x0D = Kennzeichnung für Daten für Temp Sensoren
0x7c = Ein nicht näher beschriebener Sensor (Doku geht nur von 01-05)
0x00 = Parameter 2, nicht dokumentiert, hier null
10 26 B5 09 03 0D 7C 00 0B 00 01 xx CRC 00
zurückkommen. Bei xx stehen Deine Nutzdaten. Hier ein Datenbyte. Welcher Datentyp das ist ? -> keine Ahnung.
Ob der Empfänger/Service bei deiner Heizung passt? -> Auch keine Ahnung?
Wenn Du aber jetzt ein Paket mit anderen Parametern senden willst, dann muss noch die CRC Summe generiert werden, das ist nicht implemetiert. Versuche doch erst mal alle Pakete/Services zu identifizieren die als Broadcast laufen, bzw. solche die durch Steuerung der Heizung,Reglers,etc getriggert werden. Dann siehst Du doch, wie ein Mastertelegramm aussieht, bzw. wer der Empfänger ist und auch welche Prüfsumme es hat.
Das ist eigentlich der Hauptteil der Aufgabe, die Telegramme/Services/Datentypen zu identifizieren…
@Horst: Hatten wir CRC nich mal drin? Oder sind wir nicht fertig geworden?
Habe jetzt auch einen eBus Adapter am laufen (besten Dank an dieser Stelle nochmals an Helmut) und beginne jetzt das Ganze in IPS zu integrieren.
Mein Hauptproblem ist zur Zeit aber, dass das Ding zwar nur mit 2400 Baud arbeitet, damit aber trotzdem meinen verwendeten Atom Rechner an seine Grenzen bringt.
Dadurch, dass es im Protokol kein Start und End Bytes für Messages gibt, kann man den IPS Splitter nicht wirklich performant einsetzen und man muß jedes einzelne Zeichen per Script bearbeiten.
Wie habt Ihr das gelöst – oder einfach so potente Rechner ?
Meine zweite Frage – hat wer bereits eine Anbindung an eine Wolf Therme realisiert und kann mir die Scripts zwecks Weiterentwicklung zur Verfügung stellen.
Also das die Maschine total ausgelastet wird ist bei mir das gleiche sobald die Schnittstelle geöffnet ist, meiner ist zwar kein Atom sondern ein P4, aber das dürfte nicht soviel ausmachen.
An für sich müsste man es so regeln dass nicht der ganze Verkehr dauernd mitgelogt wird, meine Vaillant Therme scheint so gesprächig zu sein dass es einfach zuviel ist.
Leider bin ich bisher auch noch nicht weitergekommen, so 100% schlau werde ich aus dem ganzen nicht wirklich.
hab mal gerade mein altes Oszi angeworfen - da ist kein Unterschied zu sehen, ob der Adapter dran hängt oder nicht.
Es geht alle paar Millisekunden das Synchronisierungs Zeichen „AA“ über die Leitung und alle paar Sekunden ein Datenpaket.
Das Problem sind nur die Synch Impulse - es wird mit denen in IPS zwar nichts gemacht, trotzdem muß jedes mal ein Script gestartet werden - macht eingige hundert Script Aufrufe pro Sekunde !!!
Man muß wohl diese Sync Zeichen bereits vorher herausfiltern - eventuell mit einem eigenen Modul (in Delphi) - meine bisherigen Erfahrungen in Delphi waren ja leider nicht sehr erbaulich …
Ich denke schon, dass ein eigenes Modul hier die Rechenleistung extrem senken würde, ein Delphi Code ist mit den paar Byte sicher nicht überfordert.
Der Delphi Code könnte die „AA“ Zeichen bereits herausfiltern und nur mehr die Datenpakete in eine Variable schreiben. Danach kann man die Werte ohne Probleme mit einem PHP Code weiterverarbeiten…
Bei mir nicht, ich hab zwar einen Core i7 860, aber selbst mit IPS (mit eBus) und Mediaportal beim zeitgleichen HD Streaming komme ich nur auf ca 20% durchschnittliche Auslastung.
Unde das PHP skript macht ja nichts anderes, als sofort in Zeile 7 die
Ja, gut, überleg mal welche Performance im Vergleich dein System zu nem P4 oder nem Atom bringt, da wundert es keineswegs dass keinerlei Auslastung vorhanden ist.
Konnte meine Performance Probleme jetzt mit einem eigenen Modul in den Griff bekommen. Das Modul filtert die Messages aus dem Datenstrom und schreibt diese in eine Variable. Von dort könne sie mit einem PHP Script weiterverarbeitet werden.
Ich konnte jetzt schon mal die Daten, die über das Standard Protokoll meiner WOLF Therme gesendet werden auswerten.
Was die Auslastung meines Atom Rechners betrifft, bin ich jetzt wieder mit der totalen Auslastungirgendwo zwischen 5 und 15%…
Also ich habe jetzt mal was auf den Bus gesendet, die Therme scheint auch zu antworten, allerdings kommt dasselbe retour nur mit einem FF hinten dran. Schätze mal ich habe ein CRC Problem oder?
Kann mir einer von euch einen Tip geben wie das zu berechnen ist? Oder vielleicht passen wir das Sendeskript einfach an…