ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

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

Moderator: Co-Administratoren

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von mfreye » 13.07.2009, 20:43

Hallo buempi.
Da hast du dir ja ein gewaltiges Projekt vorgenommen!
Naja, ein großer Teil ist ja schon fertig und mal schauen wie lange es noch Dauern wird ;) Aber erst müssen die Fische ein neues zu Hause bkommen, sonst gibs Ärger mit der Freundin :)

Ich hätte vermutlich einen anderen Weg beschritten und aus Visual-Basic heraus die Steuerbefehle über ExecStudioCo.exe an Homeputer weitergegeben. Aber deine Variante funktioniert sicher auch. Homeputer muss einfach für jeden in Frage kommenden Aktor jede Minute ein kleines PHP-Skript ausführen. Das sollte die Performance nicht allzu stark beeinträchtigen.
Das hätte aber zur folge das Access zwingen 24Stunden läuft und das wollte ich verhindern. Wollte auch nicht jede Minute die Datei lesen, sonden die Werte für den entsprechen Tag einlesen und dann in homestudio zwischenspeichern. Das sollte doch gehen oder?

Toll, was du mir alles zutraust! - Leider kenne ich mich mit VB nur so weit aus, wie es nötig ist, um aufgezeichnete Skripts in Word oder Excel zu "verfeinern". Auch sind wir hier ja nicht in einem VB-Forum...
Ja wäre bei Dir durch ausmöglich und man sieht liege ich ja auch nicht ganz falsch! Ja habe auch schon in einem VB Forum geschrieben.

Mit folgenden Änderungen funktioniert es bei mir:
Ja so wie in deiner Änderung habe ich das auch in etwa gelöst, aber ich habe es halt nicht ganz verstanden, warum es so ist.

Gemäss Hilfetext müsste eigentlich das "False" verhindern, dass schreibgeschützte Verzeichnisse gelöscht werden. Warum das nicht funktioniert, durchschaue ich auch nicht.

Du könnte.....
Ne geschützt Verzeichnisse will ich nicht löschen.
Eigentlich könnte ich einfacher die Datei(en) kopieren, aber dann muss meine festplatte abreiten und wenn ich diese nur verschiebe (bleiben die ja da wo sie sind). Das ganz passiert mit den Filmen auf der DreamBox, diese werden dann nach x Tagen gelöscht.

Das Skript kann übrigens deshalb nur als Unterprogramm aufgerufen werden, weil die Funktion sich selber aufruft! Ist übrigens ganz raffiniert ausgedacht! Die Verzeichnisse werden so "von hinten her" gelöscht. Normalweise werden ja Verzeichnisbäume von oben nach unten durchforstet. Hast du nun ein Verzeichnis, welches nur ein leeres Unterverzeichnis enthält, ist es ja zunächst nicht leer. Also wird es nicht gelöscht. Nachdem nun das leere Unterverze
Ja da hatte eine ne echt geile Lösung, wenn man sonst schaut wie viel Code man braucht und umständlich es dann ist.

Zu deiner Frage betreffend Verwendung der Contronics-DLL in Visual-Basic: Ich ......
Ja mal schauen, aber erst mal die Grundfunktionen zum laufen bringen und die sollen per INI laufen.


PS Werde bestimmt noch (viele) Fragen haben....

mfg
mfreye

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

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von buempi » 13.07.2009, 21:45

Hallo Maik
mfreye hat geschrieben:Wollte auch nicht jede Minute die Datei lesen, sonden die Werte für den entsprechen Tag einlesen und dann in homestudio zwischenspeichern. Das sollte doch gehen oder?
Du müsstest ein PHP-Skript erstellen, welches z.B. um 00:00:00 Uhr die INI-Datei nach Sektionen für jede Minute (1440 - alle 5 Minuten würde wohl auch genügen) durchforstet. Du müsstest für Uhrzeit, Modus und Temperatur eine genügende Anzahl Variablen definieren. Dann müsste Homeputer jede Minute alle Uhrzeit-Variablen durchschauen und - wenn eine zutrifft - die entsprechenden Modus/Temperatur-Variablen übernehmen. - Sollte funktionieren...

Eine andere Frage ist allerdings, ob deine Heizung das Auf und Ab überhaupt mitmacht. Um mein Haus um 3-4° aufzuheizen oder abzukühlen benötige ich - je nach Aussentemperatur - mehr als einen ganzen Tag! Ein Raumregler ist kein Dimmer, wo der Erfolg immer gleich eintritt!
mfreye hat geschrieben:Ja so wie in deiner Änderung habe ich das auch in etwa gelöst, aber ich habe es halt nicht ganz verstanden, warum es so ist.
... warum lässt du mich dann zuerst in die falsche Richtung rennen? - Mit
mfreye hat geschrieben:wenn es am Quellordner angekommen ist kommt es zu einem Fehler
Viele Grüsse
Bümpi

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von mfreye » 14.07.2009, 18:42

Hallo bümpi,
Du müsstest ein PHP-Skript erstellen, welches z.B. um 00:00:00 Uhr die INI-Datei nach Sektionen für jede Minute (1440 - alle 5 Minuten würde wohl auch genügen) durchforstet. Du müsstest für Uhrzeit, Modus und Temperatur eine genügende Anzahl Variablen definieren. Dann müsste Homeputer jede Minute alle Uhrzeit-Variablen durchschauen und - wenn eine zutrifft - die entsprechenden Modus/Temperatur-Variablen übernehmen. - Sollte funktionieren...
Ja genauso hört es sich gut an, dann braucht homestudio auch nicht jede Minute ran.
Eine andere Frage ist allerdings, ob deine Heizung das Auf und Ab überhaupt mitmacht. Um mein Haus um 3-4° aufzuheizen oder abzukühlen benötige ich - je nach Aussentemperatur - mehr als einen ganzen Tag! Ein Raumregler ist kein Dimmer, wo der Erfolg immer gleich eintritt!
Tja, bei uns leider schon. Haben einen Altbau und keine Isolierten Wände :( Da kann man das dann schon regeln, leider. Aber der Vorteil ist auch der, das wenn ich die Temperatur herunter setzte die Vebtile zu machen, dann habe ich in den Leitungen (hier auch kaum Isoliert) keine Verluste mehr. Habe das ganze jetzt zwei Jahre am laufen und sind von knapp 5000Liter Öl, auf 3000Liter herunter gekommen, was schon recht gut ist und mit 3000 Liter kann ich gut leben, auch wenn das Öl mal wieder 1Euro kostet.
... warum lässt du mich dann zuerst in die falsche Richtung rennen? - Mit
Nein, würde ich nicht machen. Das ist mir erst nachts eingefallen und bevor ich wieder schreiben konnte, hattest Du schon geantwortet! Würde ich nie machen, sorry!

Werde mal schreiben wenn ich weiter bin, wenn es jemanden interessiert.

MfG
mfreye

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von mfreye » 17.10.2009, 08:50

Hallo!

Leider hatte ich bis jetzt nicht viel Zeit für mein Projekt, aber jetzt habe ich wieder etwas gemacht, aber ich habe mit dem PHP Teil noch Probleme.

Hier die Textdatei aus der gelesen wird:

Code: Alles auswählen

--------------------------------------------------------------------------------
Titel:                   Weckzeiten
Path:                    Z:\HomeStudio\HomeStudio_Einstellungsverwaltung\INI\
File:                    Weckzeiten.ini

Erstellungsdatum:        16.10.2009
Erstellungsuhrzeit:      20:30:36
Benutzername (Maschine): Home Server 91

Copyright:               (C) 2009 Maik Freye
--------------------------------------------------------------------------------


[17.10.2009]
   WeckerUhrzeitNachttischSchl1 = "08:14:00"
   WeckerUhrzeitDeckenSchl1 = "07:14:00"
   WeckerUhrzeitDeckenFlur1 = "07:16:00"
   WeckerUhrzeit4FREI1 = "00:00:00"
   WeckerUhrzeit5FREI1 = "00:00:00"

[18.10.2009]
   WeckerUhrzeitNachttischSchl1 = "00:00:00"
   WeckerUhrzeitDeckenSchl1 = "00:00:00"
   WeckerUhrzeitDeckenFlur1 = "00:00:00"
   WeckerUhrzeit4FREI1 = "00:00:00"
   WeckerUhrzeit5FREI1 = "00:00:00"

[19.10.2009]
   WeckerUhrzeitNachttischSchl1 = "07:12:00"
   WeckerUhrzeitDeckenSchl1 = "07:14:00"
   WeckerUhrzeitDeckenFlur1 = "07:16:00"
   WeckerUhrzeit4FREI1 = "00:00:00"
   WeckerUhrzeit5FREI1 = "00:00:00"
Hier der Code in Homeputer:

Code: Alles auswählen

** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
** Automodus JOB - Stand 24.04.2009
** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
** Werte aus INI Datei (Allgemeine Einstellungen) einlesen

<?
// Allgemeine Einstellungen.ini lesen:
$ini_array = parse_ini_file ("Z:\\HomeStudio\\HomeStudio_Einstellungsverwaltung\\INI\\Weckzeiten.ini", TRUE);

// Datum und Uhrzeit festlegen
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);

// Standartwerte setzen, wenn Fehler in der Auswerte Datei
if ($ini_array){

$V_Automodus_Job_NachtischlampeEIN = $ini_array[$datum][WeckerUhrzeitNachttischSchl1];

} else {

$V_Automodus_Job_NachtischlampeEIN = "07:13:00";

}

?>

** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
** Programmanfang

wenn SE_Auto_JOB eingeschaltet dann

** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
** Nachtischlampe Schlafzimmer einschalten


wenn uhrzeit = NachtischlampeEIN dann

** Variable setzen
   EM_DI_NA_1214.EIN_JOB einschalten

** Anweisung ausführen im EM
   starte(EM_DI_NA_1214)

endewenn

** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
** Programmende

endewenn
Es passiert garnichts, keine Fehlermeldung aber auch das Licht wird nicht eingeschaltet.

Jemand ne Idee, mache ich etwas beim Datum falsch? Ich glaube das es an den . liegt im Datum oder am : in der Uhrzeit. Kann man das iregndwie anderes machen. Zu Not nehme ich den . und : heraus.

MfG
MFreye

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von mfreye » 17.10.2009, 09:01

OK habe leider in der PHP Anweisung eine Zeile weg gelassen.

Code: Alles auswählen

$timestamp = time();
Aber der eigentliche Fehler ist das ich kein ; Zeichen vor der Überschrift gesetzt habe :oops:

Gruß

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von mfreye » 09.11.2009, 20:23

Hallo zusammen!

Kann mir jemand sagen was ich falsch mach?

hier mal der Code von homeputer

Code: Alles auswählen

** Daten aus INI Dateien jetzt lesen

** Um 0Uhr nicht ausführen oder wenn SE_Auto_Wecker ausgeschaltet
   wenn uhrzeit = "00:00:00" und SE_Auto_WECKER ausgeschaltet dann
   gehezu programm_verlassen
   endewenn

<?

// Uhrzeit und Datum jetzt zuweisen
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);
$zeichen = "-";
$datumuhrzeit = "$datum$zeichen$uhrzeit";

// INI Datei lesen und Werte übergeben in ini_array
$ini_array = parse_ini_file ("Z:\\HomeStudio\\HomeStudio_Einstellungsverwaltung\\INI\\Weckzeiten.ini", TRUE);

// Jetzt Daten aus INI Datei lesen und Werte zuweisen, ggf. einen Standardwert setzen wenn ein Fehler vorliegt
if ($ini_array){

// Werte jetzt Variabeln zuweisen
$V_INI_Wecker_NachttischSchl1 = $ini_array[$datum][WeckerUhrzeitWeckerzeit11];
$V_INI_Wecker_DeckenSchl1 = $ini_array[$datum][WeckerUhrzeitWeckerzeit21];
$V_INI_Wecker_DeckenFlur1 = $ini_array[$datum][WeckerUhrzeitWeckerzeit31];

} else {

// ggf. Standardwert zuweisen
$V_INI_lesen_NachttischSchl1 = "07:25:00";
$V_INI_lesen_DeckenSchl1 = "07:25:00";
$V_INI_lesen_DeckenFlur1 = "07:25:00";

}

?>


** ggf. jetzt Befehle ausführen

** Flurbeleuchtung einschalten
   wenn uhrzeit =# DeckenFlur1 dann
   EM_DI_FL_2111.EIN_WECKER einschalten
   starte(EM_DI_FL_2111)
   endewenn

** Nachtischlampe Schlafzimmer einschalten
   wenn uhrzeit =# NachttischSchl1 dann
   EM_DI_NA_1214.EIN_WECKER einschalten
   starte(EM_DI_NA_1214)
   endewenn

** Deckenlampe 1 Schlafzimmer einschalten
   wenn uhrzeit =# DeckenSchl1 dann
   EM_SC_DE_1211.EIN_WECKER einschalten
   starte(EM_SC_DE_1211)
   endewenn



programm_verlassen:
und hier die INI Datei

Code: Alles auswählen

;--------------------------------------------------------------------------------
;Titel:                   Weckzeiten
;Path:                    Z:\HomeStudio\HomeStudio_Einstellungsverwaltung\INI\
;File:                    Weckzeiten.ini
;
;Erstellungsdatum:        08.11.2009
;Erstellungsuhrzeit:      09:23:32
;Benutzername (Maschine): Home Server 91
;
;Copyright:               (C) 2009 Maik Freye
;--------------------------------------------------------------------------------


[08.11.2009]
   WeckerUhrzeitWeckerzeit11 = "10:00:00"
   WeckerUhrzeitWeckerzeit21 = "10:00:00"
   WeckerUhrzeitWeckerzeit31 = "10:00:00"
   WeckerUhrzeitWeckerzeit41 = "00:00:00"
   WeckerUhrzeitWeckerzeit51 = "00:00:00"

[09.11.2009]
   WeckerUhrzeitWeckerzeit11 = "19:01:**"
   WeckerUhrzeitWeckerzeit21 = "07:16:00"
   WeckerUhrzeitWeckerzeit31 = "07:17:00"
   WeckerUhrzeitWeckerzeit41 = "00:00:00"
   WeckerUhrzeitWeckerzeit51 = "00:00:00"
Ich wollte Uhrzeit ** verwenden, aber das geht nicht, auch nicht wenn ich " weglasse.

Gebe ich das ganze direkt im Code ein, geht es?!

MfG
MFreye

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

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von buempi » 10.11.2009, 09:13

Hallo MFreye

Ich habe es bei mir nachgestellt. Es funktioniert tadellos. Hast du vielleicht für die Variablen den Typ Uhr verwendet? Sie müssen vom Typ Zeichen sein!

Hier ist mir noch was aufgefallen:

Code: Alles auswählen

** Um 0Uhr nicht ausführen oder wenn SE_Auto_Wecker ausgeschaltet
   wenn uhrzeit = "00:00:00" und SE_Auto_WECKER ausgeschaltet dann
   gehezu programm_verlassen
   endewenn
Gilt nun ODER wie im Kommentar oder UND wie in der WENN-Bedingung? Da nach "programm_verlassen:" ja nicht mehr kommt, kannst du das auch vereinfachen, indem du nur "verlassen" verwendest. Dann wird das Makro einfach abgebrochen.

Viele Grüsse
Bümpi

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von mfreye » 10.11.2009, 15:50

Hallo buempi!
Hast du vielleicht für die Variablen den Typ Uhr verwendet? Sie müssen vom Typ Zeichen sein!
Ja :oops:
Gilt nun ODER wie im Kommentar oder UND wie in der WENN-Bedingung? Da nach "programm_verlassen:" ja nicht mehr kommt, kannst du das auch vereinfachen, indem du nur "verlassen" verwendest. Dann wird das Makro einfach abgebrochen.
Ja, es gilt nur ODER. Habe ich geändert.

Danke!!!

MfG
Maik

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von mfreye » 07.12.2009, 20:40

Hallo zusammen,

ich komme mal wieder nicht weiter :oops:

Ich möchte folgendes erreichen. Zu bestimmten Zeiten soll die Aquaiumlampe an und ausgehen, dabei möchte ich die Helligkeit und die Geschwindigkeit (mehr als 0-16) vorgeben.

Dazu habe ich die folgende INI:

Code: Alles auswählen

;--------------------------------------------------------------------------------
;Titel:                   Weckzeiten
;Path:                    Z:\HomeStudio\HomeStudio_Einstellungsverwaltung\INI\
;File:                    Aquarium.ini
;
;Erstellungsdatum:        07.12.2009
;Erstellungsuhrzeit:      19:49:29 (manuell)
;Benutzername (Maschine): Home Server 91
;
;Copyright:               (C) 2009 Maik Freye
;--------------------------------------------------------------------------------


[Beleuchtung_07:00:00]
   Helligkeit1 = "16"
   Geschwindigkeit1 = "100"

[Beleuchtung_11:00:00]
   Helligkeit1 = "4"
   Geschwindigkeit1 = "100"

[Beleuchtung_13:00:00]
   Helligkeit1 = "16"
   Geschwindigkeit1 = "100"

[Beleuchtung_17:00:00]
   Helligkeit1 = "4"
   Geschwindigkeit1 = "100"

[Beleuchtung_20:00:00]
   Helligkeit1 = "0"
   Geschwindigkeit1 = "100"
Jetzt die erste Frage, wenn ich in homestudio das Ausführen des Makros auf eine Minute setzte, wird dieses dann zuverläßig erkannt (der Makro könnte ja ne Sekunde später ausgeführt werden). Bie den Lampen (Wecker.ini) konnte ich ja mit "07:12:**" arbeiten. Sonst würde es ja so gehen.

Folgendes Makro habe ich:

Code: Alles auswählen

wenn uhrzeit =# "00:00:**" ausgeschaltet dann
 verlassen
endewenn

** PHP Teil
<?

// Uhrzeit und Datum jetzt zuweisen
$timestamp = time();
$uhrzeit = date("H:i:s",$timestamp);
$zeichen = "Beleuchtung-";
$zeichenuhrzeit = "$zeichen$uhrzeit";

// INI Datei lesen und Werte zuweisen
$ini_array = parse_ini_file ("Z:\\HomeStudio\\HomeStudio_Einstellungsverwaltung\\INI\\Aquarium.ini", TRUE);

// Jetzt gelesene Daten aus der INI Datei zuweisen
$V_INI_Wecker_Helligkeit1 = $ini_array[$zeichenuhrzeit][Helligkeit1];
$V_INI_Wecker_Geschwindigkeit1 = $ini_array[$zeichenuhrzeit][Geschwindigkeit1];

?>
$zeichenuhrzeit = "$zeichen$uhrzeit"; --> Irgendiwe geht das so nicht
$zeichenuhrzeit = $zeichen,$uhrzeit; --> und so auch nicht

Aber evt. gibt es ja noch ne bessere Möglichkeit? Bümpi ? :P

Später soll dann ein Makro im Dimmer gestartet werden, der die Zeit durch 16 teilt und bei erreichen der Stufe dann abbricht.

Danke für Eure Hilfe!!!

MfG
MFreye

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

Re: ini-Datei auslesen, Parameter an Studio-Anwendung übergeben

Beitrag von Sanys » 08.12.2009, 09:11

Hallo Mike,

Zeichenketten verbinden in php geht mit . (Punkt)

Die Zeile muss also lauten:

Code: Alles auswählen

$zeichenuhrzeit = $zeichen.$uhrzeit;
wenn ich in homestudio das Ausführen des Makros auf eine Minute setzte, wird dieses dann zuverläßig erkannt
Mach doch einfach den Vergleich mit Uhrzeit5 (wenn Uhrzeit5 = xyz...). Leider ist die Funktion immer noch nicht in der Hilfe angekommen, aber eine Forensuche danach klärt Dich auf.


Viel Erfolg



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 ;-)

Antworten

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