FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 26.06.2008, 10:23

Zielsysteme:
- alle USB-betriebenen FHZ's, die über homeputer Standard (mitgelieferte Software) oder homeputer Studio betrieben werden

Aufgaben:
- spezielle FS20-Funkbefehle aussenden, die mit der homeputer-Software nicht möglich sind (z.B. Ausschalten mit Zeitangabe...)
- zentrale Empfängertimerprogrammierung vom PC aus
- Sensoren abgleichen (HMS100 T, HMS100 TF und KS300)
- Logging des gesamten Telegrammverkehrs zwischen PC und FHZ
- Logging der HMS und KS300 Sensorwerte zur Auswertung/Weiterverarbeitung in eigenen Programmen
- Verkürzen der Anstartzeit der homeputer-Software, indem der "Programm starten 4 - 3 - 2- 1"-Loop abgekürzt wird
- KS300-Daten ordentlich empfangen - Einbindung des ELV Wetterdatenempfängers USB-WDE1 in Homeputer

Funktionsprinzip:
DLL, die sich zwischen FHZ-Software und USB-Treiber klinkt, und dabei die Sende- bzw. Empfangsdaten mitschreiben bzw. manipulieren kann.

zugehörige Link's:
- Alles über Sensorabgleich (der "Ur-Thread" zu diesem Thema)
- Vorgehensweise zum Abgleichen der Sensoren
- Rolladensteuerung - WAF-freundlich
- Philosophie Adressvergabe FS20-Module
- Nutzung des Timers von homeputer aus
- Weiterverarbeitung der mitgeloggten Sensorwerte für ein Minidiagramm
- Verbesserung des Empfanges der Wetterstation KS300 - endlich eine Lösung!

Versionsinformation:
Version 03
- Korrektur bei Eingang von Windsignalen mit über 100 km/h
- jetzt compiliert im Release-Mode (keine zusätzlichen WinzigWeich-Debug-DLLs mehr nötig)
- Startloop beim automatischen Start des letzten Projektes wird unterdrückt
Version 04
- kleinere Fehlerkorrekturen (bei der "Timerprogrammierung" wurde die Befehlswiederholung nicht abgeschaltet)
- Möglichkeit geschaffen, den HMS-Sensoren Namen zu geben, die dann als Dateinamen für die Log-Dateien verwendet werden (siehe Abschnitt [Namen] in der fs20.ini)
Version 05
- es gibt einen neuen "Direkt-Sende"-Befehl DllParameterSetzen: es wird zwar nichts gesendet, aber die Einstellungen der FS20.INI werden bei laufendem Betrieb neu übernommen
- es gibt endlich die Möglichkeit, die entstehenden LOG-Files in der Größe einzuschränken
- neue Schalter in der FS20.INI:
EliminateStartLoop=1 : . . . . . . . . . . . . 4-3-2-1 - Start-Loop wird abgekürzt. Mit EliminateStartLoop=0 zählt die Schleife wieder normal.
FS20Log_Days2LimitFileSize=14 : . . . . . Anzahl der Tage, die in der FS20.LOG aufgezeichnet werden. Limitierung wird deaktiviert mit dem Wert 0
SensorLogs_Days2LimitFileSize=31 : . . . Anzahl der Tage, die in den Sensor-LOG's aufgezeichnet werden. Limitierung wird deaktiviert mit dem Wert 0

Version 06
- kleinere Fehlerkorrekturen (Problem behoben, wenn während der Laufzeit Homeputer's "aktuelles Verzeichnis" verändert wurde)
- Abarbeitung von schnell aufeinanderfolgenden Direktsendebefehlen ist jetzt möglich (FIFO-Prinzip)
Version 07
- HMS-Adressverwaltung in der fs20.ini zur einfacheren Handhabung von Adressänderungen von HMS Sensoren nach Batteriewechsel
- Einbindung des ELV Wetterdatenempfängers USB-WDE1 ermöglicht, zum sicheren Empfang der KS300 Wetterdaten
- Verbesserung der Empfangswahrscheinlichkeit der Direktsendebefehle: bei aktiver Sendungswiederholung werden alle Befehle "zwei mal doppelt" gesendet (4 Sendungen statt bisher 2)
NEU: Version 08 (Zusammenfassung der Versionen 07a bis 07c)
- Unterstützung aller vom WDE1 empfangbaren Sensoren
- FS20-Standard-Einschalt-Befehl "EinAlterWert" hinzugefügt
- minütliche Übermittlung der Computerzeit an die FHT's kann unterdrückt werden (falls keine FHT's in Verwendung sind)

Download (ausführliche Infos in der readme.txt):

Sensorabgleich_V03.zip
noch älter: ZIP-Datei mit C++ Quellcode
(71.39 KiB) 86-mal heruntergeladen


Sensorabgleich_V04.zip
älter: ZIP-Datei mit C++ Quellcode
(72.26 KiB) 21-mal heruntergeladen


Sensorabgleich_V05.zip
alt: ZIP-Datei mit C++ Quellcode
(74.32 KiB) 50-mal heruntergeladen


Sensorabgleich_V06.zip
alt: ZIP-Datei mit C++ Quellcode
(75.73 KiB) 39-mal heruntergeladen


Sensorabgleich_V07.zip
alt: ZIP-Datei mit C++ Quellcode
(81.23 KiB) 37-mal heruntergeladen

Sensorabgleich_V08.zip
ZIP-Datei mit C++ Quellcode
(85.36 KiB) 701-mal heruntergeladen
Gruss und viel Spass damit
Thomas
Zuletzt geändert von tsa am 28.09.2009, 14:38, insgesamt 8-mal geändert.

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 20.10.2008, 15:58

20.10.2008 - Neue Version 04 verfügbar...

(siehe oben)

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von Sanys » 29.10.2008, 20:31

Hallo Thomas,

3 Fragen zu den Direktsendebefehlen: Kann man die abgeschaltete Startloop auch wieder einschalten? Oder den Start auf anderem Weg verhindern? Ich hätte das gerne auf meinem "Entwicklungs"-Laptop so, sonst muß ich immer erst warten, bis die Steuerung läuft und dann wieder beenden.

2te Frage: Sehe ich es richtig, daß Änderungen in der ini nur beim vollständigen Neustart der Studiosoftware gelesen werden, und nicht mehr im Betrieb? Wenn ja, gäbe es eine Möglichkeit, die Logfunktion im laufenden Betrieb ein und auszuschalten?

3te Frage: Auf meinem Laptop mit der 80812-Version und den modifizierten DLLs klappt alles (hier hängt auch keine FHZ dran), auf dem arbeitsrechner geht mit der 80325 alles bestens, mit der neuesten bekomme ich einen Fehler in einem Makro, das von einem HMS100 TF ausgelöst wird. Der Fehler läßt Studio leider abstürzen. Hattest Du so etwas schon? (Fehlermeldung weiß ich nicht mehr, werde es aber demnächst nochmal versuchen. Bin nur leider viel unterwegs und der Rechner zu Hause soll funktionieren).


Ansonsten ganz großes Lob für Deine Direktsendebefehle und auch die Ideen zur Adressverteilung. Da habe ich einiges umgesetzt, leider noch nicht ganz fertig. Ich werde berichten.


Viele Grüße

sanys
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 30.10.2008, 10:45

Hallo Sanys,

danke für Dein Lob :)
Zu Hause höre ich immer nur: "Muß das schon wieder sein... - Kannst Du nicht mal...
Aber das geht wohl vielen so. Seit wann können Frauen die Errungenschaften der Technik würdigen? :D

Nun zu Deinen Fragen - lass mich mal nachdenken...

1.) Der Autostart wird verhindert, wenn Du in den "Allgemeinen Einstellungen" die Option letztes "Programm automatisch starten" abwählst. Da diese Einstellung nicht im Projekt (SPG) gespeichert wird - sondern in der homeputerStudio.INI für jeden PC separat, gab es da für mich keinen Handlungsbedarf. Es wäre aber kein Problem, die Start-Loop-Verhinderung als Schalter in der FS20.INI zu hinterlegen. Müsstest Dich nur noch mal äußern.

2.) FAST RICHTIG - es reicht das Projekt zu stoppen und neu zu starten. Willst Du dies geändert haben? Wann soll die INI neu gelesen werden?
- Bei jedem Direktsende-Befehl?
- Soll ein spezieller Befehl für das erneute Einlesen kreiert werden?
- Sollen spezielle Befehle für das temporäre aus- /einschalten der Loggings geschaffen werden?

3.) Das einzige Problem was ich mal hatte war, dass die Abgleicheinstellungen des entsprechenden Sensors in der FS20.INI eine Division durch Null - und damit einen Absturz zur Folge hatten, sobald der Sensorwert "reinkam". Dieses Problem habe ich aber eigentlich behoben. In so einem Falle wird der Sensorabgleich für diesen Sensor einfach abgeschaltet und ein LOG-Eintrag in die FS20.LOG geschrieben: "Kalibrierfunktion für HMS... abgeschaltet: fehlerhafte Wertepaare (Wert1_Ist GLEICH Wert2_Ist)!"
Ich kann mir nicht vorstellen, dass es an der modifizieren DLL liegt, bei mir läuft's auch bestens mit der Version 80812. Tausch zum Test doch mal die DLL einfach zurück und "gugge ma", was dann passiert...

Bis gleich
Thomas

PS: Hast Du kein Visual-Studio 6.0? (Da könntest Du gleich alles selber machen) :lol:

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von Sanys » 30.10.2008, 11:47

Hi Thomas,

Danke für Deine Nachricht.
Zu Hause höre ich immer nur: "Muß das schon wieder sein... - Kannst Du nicht mal...
Aber das geht wohl vielen so. Seit wann können Frauen die Errungenschaften der Technik würdigen? :D
Ja ja, das kenne ich. Ich muß da auch immer gaaanz vorsichtig weiterentwickeln, damit die Neuigkeiten "angenommen" werden. Manchmal gehts aber auch ganz schnell, wie gerade bei der Rollosteuerung. Die 3 Fenster im Wohnzimmer hatten jeder seinen eigenen Schalter neben dem Fenster, jetzt gibt es 2 TC6, einer steuert alle 3, einer 2 Rollos und die Markise. Und siehe da, "Frau" ist begeistert, eben mal alle von einem Schalter aus zu bedienen. Dann steht ja der Automatisierung auch nichts mehr im Wege........

So, nun zum Thema zurück:
- Autostart verhinderung gerne als Schalter in der ini
- daraus folgt ein eigener Befehl um die ini neu zu lesen. Dann ginge das alles im laufenden Betrieb

Ich habe eine Ansicht "System" in meiner Steuerung. Von dort werden Dinge, die das "System" als solches betreffen, geschaltet und "gemonitored". Z.B. Schalter ob die verschiedenen Klima-Werte in die Datenbank geschrieben werden, Lesen meiner INI-Datei für die Steuerung, Ein Wartungsknopf, der z.B. das Versenden von Alarmmails verhindert, wenn ich einen Rauchmelder teste (mit Rauch) etc. Da würde es gut passen, eine Schaltfläche einzubauen: DirectSend-INI neu lesen.

Zum letzten Problem komme ich erst nächste Woche. Wie gesagt, der Rechner soll laufen, und längere Tests will ich da nicht unbedingt machen. Die 80325 läuft problemlos, und ich denke es liegt am Makro (also = selbst schuld). Wenn ich es dann aber raus habe woran es liegt gebe ich Bescheid.


Danke schon mal

sanys

(Stephan)


P.S. Visual Studio habe ich hier irgendwo rumliegen (gabs bei der ct), aber beim besten Willen keine Zeit, mich da auch noch reinzufummeln. Studio, php, html, jpgraph, Autohotkey, PureBasic etc reichen mir im Moment, die Langeweile zu vertreiben ;-)
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 06.11.2008, 00:30

05.11.2008 - Neue Version 05 verfügbar...

(siehe oben)

Die Version berücksichtigt auch Sanys' Wünsche...

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von Sanys » 09.11.2008, 19:51

Hallo Thomas,

vielen Dank für die neue Version. Ich habe sie auf dem Laptop schon mal installiert, in den nächsten Tagen ist der Arbeitsrechner dran (ohne Schnittstelle machts ja auch keinen Sinn).
Aber die Funktionen sind jetzt genau so wie ich es mir vorgestellt habe. So kann ich im laufenden Betrieb die ini ändern und dann neu einlesen. Mir geht es da hauptsächlich um die Logfunktionen. Die brauche ich eher nur wenn mal etwas nicht klappt, oder um neue Funktionen zu testen.


Gute Arbeit, weiter so!

Viele Grüße

sanys
(Stephan)
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 12.11.2008, 08:46

Sanys hat geschrieben:...bekomme ich einen Fehler in einem Makro, das von einem HMS100 TF ausgelöst wird. Der Fehler läßt Studio leider abstürzen. Hattest Du so etwas schon?
Zwei Fragen:
Hast Du schon was gefunden?
Hast Du die Minidiagramme in Verwendung?

Gestern hatte ich bei mir so etwas, als ich zwei neue HMS100 TF einbauen wollte (die endlich geliefert wurden).
Der Fehler lag in einer fehlenden Überprüfung innerhalb der "MiniDiagramm.php", ob das Öffnen der LOG-Datei auch geklappt hat...
Doof - nich? :P

Gruss
Thomas

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von Sanys » 12.11.2008, 21:01

Hallo Thomas,

so, nun habe ich die neue Version Deiner Directsendebefehle auf dem Arbeitsrechner installiert. Mit der Studioversion 80325 läuft alles, mit der Version 80812 gibts wieder den Fehler.
So sieht er aus:
11-12 Error mit 80812.jpg
und das steht im FS20Log:
12.11.2008 16:09:56 Sendung 81 09 04 73 02 01 01 c9 93 02 11
12.11.2008 16:09:57 Sendung 81 09 04 71 02 01 01 c9 93 00 11
12.11.2008 16:10:04 Sendung 81 0a c9 9d 02 01 61 08 0b 0c 10 0a
12.11.2008 16:10:38 Empfang 81 0b 04 59 83 09 83 01 55 0d 82 29 3c
12.11.2008 16:10:38 Empfang 81 0c 04 20 09 09 a0 01 55 0d 7e 00 67 26
12.11.2008 16:11:04 Sendung 81 0a c9 9e 02 01 61 08 0b 0c 10 0b
12.11.2008 16:11:13 Empfang 81 0b 04 37 83 09 83 01 02 37 82 29 43
12.11.2008 16:12:04 Sendung 81 0a c9 9f 02 01 61 08 0b 0c 10 0c
12.11.2008 16:12:31 Empfang 81 0e 04 ae 05 10 a0 01 c3 cf 00 00 00 94 71 61
12.11.2008 16:12:31 HMS100TF_50127: 19.4°C 61.7%
12.11.2008 16:13:40 Fehler: Ringpuffer leer
12.11.2008 16:13:40 Fehler: Ringpuffer-Überlauf
12.11.2008 16:13:40 Fehler: Ringpuffer leer
12.11.2008 16:13:40 Fehler: Ringpuffer-Überlauf
12.11.2008 16:13:40 Fehler: Ringpuffer leer
12.11.2008 16:13:40 Fehler: Ringpuffer-Überlauf
12.11.2008 16:13:40 Fehler: Ringpuffer leer
12.11.2008 16:13:40 Fehler: Ringpuffer-Überlauf
12.11.2008 16:13:40 Fehler: Ringpuffer leer
12.11.2008 16:13:40 Fehler: Ringpuffer-Überlauf
12.11.2008 16:13:40 Fehler: Ringpuffer leer
12.11.2008 16:13:40 Fehler: Ringpuffer-Überlauf
12.11.2008 16:13:40 Fehler: Ringpuffer leer
12.11.2008 16:13:40 Fehler: Ringpuffer-Überlauf
12.11.2008 16:14:28 DLL-Initialisierung ######################
12.11.2008 16:14:29 Sendung 81 06 c9 2c 02 01 1f 0a
12.11.2008 16:14:30 Empfang 81 0c c9 47 01 02 1f 05 96 01 b6 14 01 be
Wenn der Fehler auftaucht bleibt Studio stehen, beim Klick auf OK wird es beendet.


Der Fehler kam, nachdem der HMS100 TF gesendet hat.
In den Makros dieses HMS100TF wird bei Empfang des Feuchtewerts ein weiteres Makro gestartet, welches den Taupunkt berechnet (mittels php) und die Werte in diversen Variablen bereitstellt oder anzeigt. Mehr ist nicht.
Ich hatte den php-Teil nochmals überprüft, etwas entrümpelt und auch außerhalb von Studio getestet, ohne Befund. Wie gesagt, mit der Version 80325 gibts ja auch keine Probleme.

Was da nun schiefgeht kann ich nicht sagen. Es wurden ja Änderungen bzgl. Makro-Timeouts und php-Fehlern seitens contronics eingebaut. Auch hier kann ich mir keinen Reim drauf machen.
Es ist auch sichergestellt, daß keine leeren strings irgendwo entstehen.
Ohne FHZ am Laptop läuft Studio auch ohne Probleme (klar weil ja die von Dir geänderten Dateien auch gar nicht "mitspielen".

Eines fiel mir noch auf, was ich aber nochmal genau testen möchte und dann zusammenschreiben:
php in Studio produziert auch Fehler, wenn einer php-Variablen ein Studio-Wert zugewiesen wird und dieser Studio-Wert ein leerer String ist! Also nicht nur anders herum, wie bisher immer besprochen. Desweiteren wird eine ordentliche Wandlung des Dezimal-Kommas aus Studio in den Dezimal-Punkt in php und zurück vorgenommen, wenn die Variablendefinitionen richtig sind, d.h. in Studio muß die Variable vom Typ Zahl sein und als Startwert ein 0,0 eingetragen sein (oder auch mehr Nuller hinter dem Komma). Dann scheint php die Variable als Float zu übernehmen und wandelt sie genauso wieder zurück. Bei Sensoren (wie dem HMS100 TF) sollte auch ein Startwert mit Komma drinstehen. Dann gibt es auch bei Übergabe einer 0 kein Problem. Sonst könnte es sein, dass wenn das Objekt genau 0 ist, ohne Kommas, und dieser Wert wird einer php-Variable übergeben (erstmalig), dass diese Variable dann ein String ist und damit für php "leer" oder nicht gesetzt, was wiederum zu den bekannten Problemen führt.
Da bin ich aber noch nicht ganz durch, wie das alles zusammenhängt.

Soviel erst mal, vielleicht findest Du ja etwas.

Ach ja, die Minidiagramme verwende ich nicht.


Viele Grüße


sanys

(Stephan)
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: FS20-Direktsendebefehle, Timerprogrammierung, Sensorabgleich

Beitrag von tsa » 13.11.2008, 13:57

Hallo Stephan,

...MERKWÜRDIG... :?

Einen Ringpuffer-Fehler hatte ich bisher nur äusserst selten und nie mit solchen Auswirkungen. Er trat bisher immer nur auf, wenn ein "verstümmeltes" Telegramm über den USB-Port reinkam in dem das Längenbyte mehr Daten ankündigte, als dann tatsächlich ankamen. Dann war es aber immer ein Puffer-Leer-Fehler! In dem Fall wurde das Telegramm dann einfach UNINTERPRETIERT zum PC weitergereicht - sollte doch die FHZ-Software sich selbst damit herumschlagen... :)

Bei Dir handelt es sich aber definitiv um einen Überlauf-Fehler!!! (Beim Überlauf-Fehler kommt immer vorher fälschlicherweise die Leer-Meldung mit...)
Grund: bisher hatte ich die Ringpuffer-Funktionen zugegebenermassen etwas stiefmütterlich behandelt, weil alle nur aus EINEM Thread der FHZ-Software aufgerufen werden können - dachte ich jedenfalls.

Aber warum der Puffer überläuft??? Die Puffergröße war zugegebenermassen mit 200 Byte sehr klein bemessen (aber immer noch viel größer als ein einziges Telegramm!) Sollten bei Dir SEEHR viele Telegramme SEEHR schnell innerhalb kürzester Zeit reinkommen??? Äußerst merkwürdig!

Wie dem auch sei, ich habe:
1. die Ringpuffer-Routinen "verschlimmbessert", sie sind nun sogar multithread-fähig (obwohl das definitiv nicht benötigt wird)
2. die Puffergröße verzehnfacht (vielleicht hast Du ja wirklich hunderte Komponenten, die dann alle gleichzeitig senden :lol:)

Hier eine neue DLL: sie ist nur rein ideell erprobt - sollte aber funktionieren (ich hab keine FHZ hier und komme demzufolge nicht gleich zum testen). Probiers einfach mal aus.
Ich bin gespannt, was Dein "FT" nun macht, wenn er den Rechner nicht mehr zum Absturz bringen kann... :wink:

Gruss
Thomas
Zuletzt geändert von tsa am 17.11.2008, 11:10, insgesamt 1-mal geändert.

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“