Suche Unterstützung

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

anna87
Beiträge: 17
Registriert: 12.01.2009, 17:01

Re: Suche Unterstützung

Beitrag von anna87 » 08.02.2009, 11:49

Hallo Bümpi,

war wieder einer super Idee!! Es werden jetzt mehrere Meldungen ausgegeben. Jedoch werden diese nicht gelöscht. Wenn ich den Fehler behebe bleibt er in der Ausgabe stehen.

LG
Anna

Andreas
Beiträge: 219
Registriert: 30.08.2008, 00:48

Re: Suche Unterstützung

Beitrag von Andreas » 08.02.2009, 13:04

Hallo Anna!

Die Meldungen werden natürlich nicht gelöscht. Wenn sie auftreten, werden sie einfach dem von Dir definierten Zeichenobjekt zugewiesen. Du kannst ein löschen auch nicht manuell programmieren, da das Zeichenobjekt nicht getriggert wird, wenn eine Servicemeldung auf der Zentrale "verschwindet".

Bümpi: natürlich kann man auch direkt alles in das Makro setzen, es gibt keine Endlosschleife (es löst sich nicht selber aus, mache ich überall so ohne Probleme)

Makro Batteriemeldung, Typ Zeichen
Ausführen bei Änderung setzen

Batteriemeldung := LINKERTEIL(Datum,5) + " " + Uhr + " " + Batteriemeldung + "<<"

Da es so immer größer wird, sollte man es z.B. täglich/wöchentlich/... löschen (Batteriemeldung := ""), einen Button "CLS" zum Löschen erzeugen oder nur wie bei Dir 5 Meldungen anzeigen.

Gruß
Andreas

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Suche Unterstützung

Beitrag von buempi » 08.02.2009, 13:59

@Andreas: Das Objekt "Batteriemeldung" wird doch von Homeputer beim Eintreffen einer neuen Meldung ÜBERSCHRIEBEN. Es enthält also bei der Ausführung des Makros nichts anderes mehr, als die allerletzte Meldung? Da nützt es doch auch nichts, wenn ich hinten noch zwei << anfüge? Dein Makro bringt auch nur EINE Zeile, einfach vorne ergänzt mit Tag, Monat und Uhrzeit. Denn dadurch, dass du (verkürzt) Batteriemeldung:=Batteriemeldung schreibst, holst du doch alte Meldungen nicht wieder irgendwo hervor...

Wenn ein Zeichenobjekt im Objekt-Makro selbst verändert wird, führt das in Homeputer für die FHZ bei aktiviertem "Ausführen bei Änderung" dazu, dass das Makro ununterbrochen erneut ausgeführt wird. Nach wenigen Augenblicken würde dann die Anzeige so aussehen:

08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:00 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 08.02 13:55:01 SensorX

Ist das in Homeputer CL nicht so?

@Anna: Ja, das stimmt. Die Anzeige ist jetzt eigentlich wie ein Protokoll konzipiert. Fehler werden zwar angezeigt, aber deren Behebung nicht, weil ja auch Homeputer keine Meldung "Fehler behoben" bringt. Man kann das Löschen also nicht automatisieren.

Aber so als "Übung" könnten wir das Ganze natürlich schon noch ausbauen! Du aktivierst "Ausführen bei Eingabe" (NICHT bei Änderung) und ergänzst das Makro wie folgt:

Code: Alles auswählen

// Eingabe 0 löscht alle Medungen
wenn Batteriemeldungen = 0 dann
   Meldung1 := ""
   Meldung2 := ""
   Meldung3 := ""
   Meldung4 := ""
   Meldung5 := ""
   gehezu MeldungAnzeigen
endewenn

wenn Batteriemeldungen = 1 dann
   Meldung1 := ""
   gehezu MeldungAnzeigen
endewenn

wenn Batteriemeldungen = 2 dann
   Meldung2 := Meldung1
   Meldung1 := ""
   gehezu MeldungAnzeigen
endewenn

wenn Batteriemeldungen = 3 dann
   Meldung3 := Meldung2
   Meldung2 := Meldung1
   Meldung1 := ""
   gehezu MeldungAnzeigen
endewenn

wenn Batteriemeldungen = 4 dann
   Meldung4 := Meldung3
   Meldung3 := Meldung2
   Meldung2 := Meldung1
   Meldung1 := ""
   gehezu MeldungAnzeigen
endewenn

wenn Batteriemeldungen = 5 dann
   Meldung5 := Meldung4
   Meldung4 := Meldung3
   Meldung3 := Meldung2
   Meldung2 := Meldung1
   Meldung1 := ""
   gehezu MeldungAnzeigen
endewenn


// Es ist eine Fehlermeldung eingetroffen
Meldung1 := Meldung2
Meldung2 := Meldung3
Meldung3 := Meldung4
Meldung4 := Meldung5
Meldung5 := Zeit + " " + Batteriemeldungen

MeldungAnzeigen:
Batteriemeldungen := Meldung1 + "<<"
Batteriemeldungen := Batteriemeldungen + Meldung2 + "<<"
Batteriemeldungen := Batteriemeldungen + Meldung3 + "<<"
Batteriemeldungen := Batteriemeldungen + Meldung4 + "<<"
Batteriemeldungen := Batteriemeldungen + Meldung5
So kannst du das Objekt anklicken und eine Zahl zwischen 0 und 5 eintragen. Null löscht alle Meldungen. Sonst wird nur die ausgewählte Meldung gelöscht, und die anderen werden ohne Lücke nach unten verschoben. Wenn du die einzutragende Zahl bestimmen willst, musst du unten anfangen und rückwärts zählen. Die letzte angezeigte Meldung ist immer die 5.

Viele Grüsse
Bümpi

MHE
Beiträge: 87
Registriert: 13.06.2008, 11:46
Wohnort: Deutschland

Re: Suche Unterstützung

Beitrag von MHE » 08.02.2009, 17:50

Hallo Anna,

dieses Projekt hat ja Ausmasse angenommen :D
Zum manuellen "Übersteuern" mache ich follgendes - statt Schalter - ein Schieberegler bis 30 - diesen Schieberegler im Macro abfragen - wenn Schieberegler >0 dann setzte Thermostat auf Wert Schieberegler. Soll alles wieder automatisch laufen - na dann Schieberegler auf Null - fand ich für Touchscreen einfach besser.
Gruss
Michael

anna87
Beiträge: 17
Registriert: 12.01.2009, 17:01

Re: Suche Unterstützung

Beitrag von anna87 » 08.02.2009, 22:28

@Bümpi
Du bist ein Schatz! Vielen Dank so funktioniert es. Und es war gleichzeitig eine schöne Übung, was man nicht alles machen kann :-).

@Michael
Mit dem Schieberegler ist keine schlechte Idee, wobei der vorhandene nicht wirklich am Touchscreen nutzbar ist. Ich habe mir einen Schalter eingereichtet und wenn dieser "an" ist kann ich im Raum das Thermostat bedienen.

@all
Ich bin auf einige Fehler in den oben aufgeführten Beispielen gestossen. Hier dazu meine Anmerkungen falls es jemand nachbauen möchte:

==> wenn Zeit zwischen - geht bei mir nicht - es muss Uhrzeit heisen
==> Tag geht bei mit auch nicht nur Wochentag

Euch allen noch mal vielen Dank! Habe heute alles erstellt. Touchscreen und Zeitsteuerung laufen. Mal sehen was die nächsten Wünsche werden :-)...

LG
Anna

Andreas
Beiträge: 219
Registriert: 30.08.2008, 00:48

Re: Suche Unterstützung

Beitrag von Andreas » 09.02.2009, 10:57

Hallo Bümpi!

Wie gesagt, ich benutze das mehrfach. Ausführen bei Änderung kann aktiviert sein und man kann dem Objekt neuen Text zuweisen!! Es ruft sich dann trotzdem nicht selbst endlos auf.
Zur Batteriemeldung sind mir leider trotzdem einige Fehler unterlaufen. Man sollte eben nicht auf die Schnelle aus dem Gedächniss etwas hinschreiben.

Natürlich muß man eine Hilfsvariable setzen, und diese dann zuweisen, also so ähnlich:

varLog vom Typ Zeichen

varLog := varLog + MeldungBatterie
MeldungBatterie := varLog


Ausführen bei Änderung sollte bei diesem Beispiel hier nicht aktiv sein (die Meldungen kommen aber trotzdem rein). Dies macht ja auch Sinn, da es auch identische Servicemeldungen hintereinander geben könnte (also keine Änderung im Text). Somit ist das wie "Ausführen bei Empfang".

Es sei jetzt mal dahingestellt, ob das Ganze in sich schlüssig von Contronics programmiert wurde oder nicht - aber es funktioniert.

Gruß
Andreas

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Suche Unterstützung

Beitrag von buempi » 10.02.2009, 16:27

Hallo Anna

Mir ist noch eine Idee gekommen, mit der wir das Spiel / die Übung noch etwas weiterführen könnten:

Am Touchscreen ist es ja nicht so einfach, Zahlen einzugeben. Du könntest ein Objekt vom Typ Knopf anlegen. Dann definierst du eine Variable "Zaehler" vom Typ Zahl und Startwert 0 und trägst folgendes Makro ein:

Code: Alles auswählen

// Variable Zaehler, Typ Zahl, Startwert 0

Zaehler := Zaehler + 1
warte("00:00:01")

wenn Zaehler < 6 dann
   Batteriemeldungen := Zaehler
sonst
   Batteriemeldungen := 0
endewenn

starte(Batteriemeldungen)
Zaehler := 0
So kannst du durch mehrmaliges Antippen des Knopfes die zu löschende Meldung auswählen. Tippst du 6x oder öfter, werden alle Meldungen gelöscht. Null mal tippen kann man ja nicht :lol:

Viele Grüsse
Bümpi

anna87
Beiträge: 17
Registriert: 12.01.2009, 17:01

Re: Suche Unterstützung

Beitrag von anna87 » 11.02.2009, 23:38

Hallo Bümpi,

wieder eine super Idee von Dir! Die Wartezeit musste ich etwas erhöhen, sonst bekomme ich nicht mehr als 4 Klicks hin. Was mir nicht so gefällt ist das mit dem Knopf, geht das auch noch anders? Den Knopf kann ich schlecht visualisieren und der zerstört mein Design :-). Mit eine Schalter geht es nicht... Aber vielleicht hast Du noch eine Idee.

Ich habe nun die nächsten Schritte versucht, bin aber gleich wieder an meine Grenzen gestossen. Eine Webcam kann man scheinbar nur mit hohem Aufwand in die Visualisierung einbinden (habe die Beiträge dazu gelesen, aber nicht wirklich was verstanden :-( ). Da ich keine Lösung gefunden habe, wollte ich mir wenigstens erst mal einen Button anlegen der die Seite im Browser aufruft. Ist mir aber auch nicht gelungen.

Ich habe es mit Knopf und Schalter versucht. In den Makrobereich habe ich folgendes geschreiben:
STARTWIN("C:\Programme\intern~1\iexplore.exe http://kamera/control/userimage.html") ==> Ausführen bei Eingabe
Geht aber nicht. Wenn ich "C:\Programme\intern~1\iexplore.exe http://kamera/control/userimage.html" in eine DOS-Box schreibe geht die Kamera ohne Probleme auf. Mache ich da was falsch?

LG
Anna

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Suche Unterstützung

Beitrag von buempi » 12.02.2009, 08:28

Hallo Anna

Es spielt ja im konkreten Fall keine Rolle, aber ich verstehe nicht, warum du eine längere Wartezeit brauchst. Du hast nach jedem Tippen eine Sekunde Zeit fürs nächste. Egal ob du 4x oder 100x drauf tippst.

Auch mit einem Schalter muss es gehen. Hast du vielleicht "Ausführen bei Eingabe" deaktiviert? Oder in den Visualisierungs-Definitionen "Keine Eingabe" angehakt? Sonst aktiviere auch noch "Ausführen bei Änderung". Oder probiere es mit einem Taster. Bei diesen Objekten könntest du für beide Zustände das gleiche Bitmap hinterlegen und es so besser deinem Design anpassen. Das Makro kannst du 1:1 übernehmen.

Beim STARTWIN()-Befehl hast du die Syntax gemäss Homeputer-CL-Hilfe nicht ganz richtig eingehalten (Komma vergessen):

Code: Alles auswählen

// STARTWIN("Pfad\Programm,<Parameter>,<Arbeitsverzeichnis>")

// also (alles auf 1 Zeile!)
STARTWIN("C:\Programme\internet explorer\iexplore.exe, http://kamera/control/userimage.html,C:\Programme\internet explorer")
Sicherheitshalber solltest du das Verzeichnis "Internet Explorer" ausschreiben (nicht den 8.3-Namen verwenden). Das Arbeitsverzeichnis ist vermutlich optional. Es schadet aber sicher nicht, wenn du es trotzdem angibst.

Sollte es auch so nicht funktionieren, schreibst du die Kommandozeile in eine Batch-Datei und startest diese aus Homeputer heraus.

Dass es den Befehl STARTWIN() in Homeputer CL überhaupt gibt, überrascht mich. Das Programm läuft doch eigentlich auf der CCU (meines Wissens unter Linux?). Und das kann dann ein Windows-Programm auf dem Visualisierungs-Rechner anstossen? Und erst noch über den ganz gewöhnlichen Pfad dieses Rechners? Und was passiert, wenn der Rechner gar nicht läuft? Kennt da jemand, der eine HomeMatic besitzt, die Zusammenhänge vielleicht? - Würde mich interessieren, einfach so ...

Viele Grüsse
Bümpi

PS: Ich vermute mal ziemlich stark, dass da noch weitere Ausbauwünsche kommen. Du hast ja nicht mit dem WAF zu kämpfen. :D Dann wäre es wohl besser, wenn du bei einem neuen Thema auch einen neuen Thread mit entsprechendem Titel eröffnest. Das kann anderen helfen, die später mal vor einem ähnlichen Problem stehen und im Forum Hilfe suchen.

anna87
Beiträge: 17
Registriert: 12.01.2009, 17:01

Re: Suche Unterstützung

Beitrag von anna87 » 12.02.2009, 18:09

Hallo Bümpi,

das vergessene Komma war der Fehler. Der Programmaufruf geht ohne Probleme.
Du hast ja nicht mit dem WAF zu kämpfen.
Der ist gut :-)!!!!!! Vielleicht geh ich an die Sache ja etwas anders ran... Ich denke es ist oft nicht die Angst vor der Technik nur schlechte und ungenügende Erklärungen wie sie zu handhaben ist.

LG
Anna

Antworten

Zurück zu „homeputer CL“