# Wetterdaten aus iCal-Datei auslesen



## Andy082 (24 Juli 2011)

Hallo zusammen...    wieder einmal.


Da die FH gerade pausiert, das Wetter zu wünschen lässt und ich neben dem Hören alter Scorpionsscheiben noch etwas Zeit zum Herumprobieren aufbringen kann, erlaube ich mir die Community mit meinen Fragen zu löchern.

Geplant wäre:
aus einer von einem Internetanbieter bereitgestellten iCal (*.ics*)-Datei die aktuellen Wetterdaten aus dem Internet in meine 750-841 von Wago zu saugen. Dort suche ich nach entsprechenden Stringfolgen und kann mir so die Wetterdaten der nächsten 5 Tage in ein Array kopieren.

woran's nun im Ansatz bereits scheitert:
versuche ich die Datei am Server per SysFileOpen lesend (!) zu öffnen, erhalte ich immer eine 0 als Rückgabewert, also Fehler.
Es besteht jedoch voller Schreib- und Lesezugriff.
Meine Frage daher, kann ich das so einfach wie beschrieben überhaupt umsetzen? Und wäre zum bloßen Auslesen der Daten SysFileStreamFOpen nicht einfacher anzuwenden?

Das Helpfile von Codesys ist hier ja leider etwas dürftig.
Gibt's vielleicht irgendwo Beispiele in welche man sich einlesen könnte?

mfg,
Andy


----------



## Andy082 (24 Juli 2011)

Abend.

Bin doch auf der Herstellerseite von Codesys sogleich mal fündig geworden und muss zugeben, dass dieses Programm ja fast wie maßgeschneidert ist für mich. Nur den Speicher werde ich dann noch dynamisch allokieren, damit's tatsächlich nach was aussieht.

Mein Problem, dass sich die Datei per SysFileOpen scheinbar nicht öffnen lässt bleibt aber unverändert. Zumindest stehen in meinem Textarray keinerlei Daten, egal was ich ein lese und von wo.


```
FilePath:= '38.102.136.104/auto/ical/global/stations/11152.ics';

IF bRead THEN
 tStartTime:= TIME();
 hFile:= SysFileOpen(FileName:= FilePath, Mode:= 'r'); (*open file*)
 IF hFile = 16#FFFFFFFF THEN (*error - invalid handle*)
  bError := TRUE;
  bRead := FALSE;
  RETURN;
 END_IF
 (*initialisation*)
 pText:= ADR(aTexts);
 dwTextPos:= 0;
 (*read data block by block*)
 WHILE TRUE DO
  iBytesRead:= DWORD_TO_INT(SysFileRead(File:= hFile, Buffer:= ADR(aBuffer), Size:= 500)); (*read data into buffer*)
  IF iBytesRead = 0 THEN
   EXIT;
  END_IF
  (*copy data to string array*)
  FOR iBytePos:= 0 TO iBytesRead - 1 DO
   IF aBuffer[iBytePos] <> 16#0A THEN
    SysMemCpy(dwDest:= pText + dwTextPos, dwSrc:= ADR(aBuffer[iBytePos]), dwCount:= 1); (*copy single character*)
    dwTextPos:= dwTextPos + 1;
   ELSE
    SysMemSet(dwDest:= pText + dwTextPos, bCharacter:= 0, dwCount:= 1); (*set string end*)
    dwTextPos:= 0;
    pText:= pText + SIZEOF(aTexts[0]); (*next string*)
   END_IF
  END_FOR
 END_WHILE
 (*finished*)
 SysFileClose(File:= hFile); (*close file*)
 bRead:= FALSE; (*reading finished*)
 tUsedTime:= TIME() - tStartTime;
END_IF
```
 
Hätte eventuell jemand noch einen Ansatzpunkt für mich?
Wäre über jede Hilfe dankbar!


mfg,
Andy


----------



## Oberchefe (24 Juli 2011)

sysfileopen ist da der falsche Ansatz. Für's Laden aus'm Netz benötigst Du das http oder ftp Protokoll. Sysfileopen ist für Zugriffe auf das Dateisystem. Falls ftp geht gibt's eine Lib von Wago, ansonsten mal bei Oscat schauen.


----------



## Andy082 (24 Juli 2011)

Besten Dank für den Tip.

Hatte zwar bereits in der Oscat herumgeblättert (klein ist die ja nimma... ) und dabei ganz vergessen, dass diese je bereits in einzelne "Teile" aufgesplittet wurde.

Im Network-Part wurde ich dann fündig....
Neben einer Funktion zum Datenempfang mittels http hab ich auch gleich noch eine Funktion entdeckt, welche bereits das macht, was ich gerne programmieren würde.
Hier wird der RSS-Feed von Yahoo-Weather angezapft und die Daten in einem fertigen Array abgelegt.
Ist für mich ja nahezu perfekt.....


----------



## Andy082 (31 Juli 2011)

Abend.

Ich muss den Threat nochmals zum Leben erwecken.

Hat eventuell schon jemand die Funktion Yahoo_Weather inkl. allen weiteren benötigten Funktionen aus der OSCAT_Network-Lib extrahiert?

Ich hab's nun mehrfach versucht und seh da irgendwie kein Ende.

Es wird auf viele Funktionsblöcke der OSCAT_basic zugegriffen.
Kopiere ich diese in eine eigene "abgespeckte" Lib dann braucht's zum ausführen dieser Funktion noch weitere Funktionen und dann noch welche, und noch welche, und noch ein paar und am Ende blick ich nicht mehr ganz durch und hab eine Kombination aus den beiden Libs im beinahe vollen Umfang erstellt.

Vielleicht könnte mir hier jemand kurz unter die Arme greifen.


lg,
Andy


----------



## Blockmove (31 Juli 2011)

Du kannst bei den Optionen fürs Übersetzen angeben, dass nur benutze Bausteine übersetzt werden. Damit landen nur die benötigten Baustein aus den OSCAT-Libs in deinem Projekt.

Gruß
Dieter


----------



## Andy082 (31 Juli 2011)

Danke für den Tip, aber ich habe dies bereits versucht und der Button ist und bleibt ausgegraut....

Keine Chance bestimmte Libs, Funktionen, etc auszuschliessen.


Ich verwende den von Wago mitgelieferten CodesysCompiler 2.3.9.7.

lg


----------



## gravieren (31 Juli 2011)

Hi


Vorab:  
Aktuelle Firmware installieren  --> FW17
(Auf aktuelle Targets achten  Target "841  FW 12..." )

Aktuellen Compiler installieren --> 2.3.9.30

Oder die Wago 2.3.9.25 mit aktuellen Wago-Targets


Gruß Karl


----------



## Andy082 (31 Juli 2011)

Wie komm ich zu der aktuellen Software?

Bekomm ich die direkt bei 3S?

Ich könnte ja meinen Wago-Vertreter mal an den Beinen greifen, schütteln und kucken was rausfällt, denn auf die CD mit den aktuellen Targets warte ich nach seinem letzten Besuch vor einem Jahr bis heute. 

Aber zumindest hab ich die Wago/Beckhoff-Geschichte mit dem "wer-hats-erfunden-Effekt" erzählt bekommen... 

FW wird's wohl bei Wago geben, oder?
Wenn ich die Beschriftung meines Controllers richtig interpretiere: FW-Stand 02 (lt. WebOberfläche "Firmware revision 02.07.01 (00)"), was wohl die WebVisu im "DiaDesign" erklärt.

lg,
Andy


----------



## gravieren (1 August 2011)

Hi



> Wie komm ich zu der aktuellen Software?
> Bekomm ich die direkt bei 3S?


Ja, kostenlos hier registrieren
http://www.3s-software.com/index.shtml?de_contact





> Ich könnte ja meinen Wago-Vertreter mal an den Beinen greifen, schütteln  und kucken was rausfällt, denn auf die CD mit den aktuellen Targets  warte ich nach seinem letzten Besuch vor einem Jahr bis heute.


Ja, das geht auch.  *ROFL*



> Aber zumindest hab ich die Wago/Beckhoff-Geschichte mit dem "wer->hats-erfunden-Effekt" erzählt bekommen... :grin:


Kenn ich nicht.
Er zähl mal.



> FW wird's wohl bei Wago geben, oder?


Ja, einfach mal eine nette E-Mail an den Wago-Service senden.
Bitte die Daten/Aufschrift deine Controllers mit senden.
(Ob der Hardware-Stand ausreichend ist zum hochrüsten)




> Wenn ich die Beschriftung meines Controllers richtig interpretiere:  FW-Stand 02 (lt. WebOberfläche "Firmware revision 02.07.01 (00)"), was  wohl die WebVisu im "DiaDesign" erklärt.


Kann sein.


Tip:
Den Wago-Service nach der aktuellen Software und Firmware fragen.
(Ich denke, dass du nachweisen kannst, die Software gekauft zu haben)
(Ich denke, einfach "versichern/überzeugen" kein Problem)


Somit hast du die Version 2.3.9.35 mit der FW 17

Das geht meist innerhalb eines Tages.

Gruß Karl


----------



## Andy082 (1 August 2011)

Morgen.

Da ich durch meinen Arbeitgeber ja offizieller Kunde bei Wago bin und dort for einiger Zeit (~4Jahre) die Software mit einem Starterparket erworben hab, sollte das Ganze kein Problem sein.

Zu der Geschichte mit dem "wer-hat's erfunden-Effekt"....
Wie bekannt sein dürfte haben Wago & Beckhoff das I/O-System ja gemeinsam entwickelt, irgendwann kam die Auftrennung und jeder hat sich mit der Zeit in eine andere Richtung entwickelt.

Der Vertreter sah das nicht ganz so....
Seiner Ansicht nach wurde das System mit etwas Mithilfe von Beckhoff erfunden und bei der Auftrennung alles "geklaut", dunkle Geldflüsse, etc....
Beinahe reif für einen Krimi.
Vorallem konnte er mich damit bis zu seinem Satz "...also, was kann ich machen, dass Sie etwas mehr bei uns einkaufen" fesseln. 

Es soll auch Berichte von Beckhoff-Vertretern geben, die von einem wahren Guerillakrieg durch Wago-Vertreter auf so mancher Messe berichten. 
Oder, was mir auch gut Gefällt...
Der Verkauf bei Wago sei insgeheim Erfinder der Keilerei.

Aber bitte......... ....alles nur Höhrensagen!!! 

Nun zum Thema...
Ich schreib mal geschwind den Support an.
Vorab mal danke!

lg,
Andy


----------



## Blockmove (1 August 2011)

Andy082 schrieb:


> Danke für den Tip, aber ich habe dies bereits versucht und der Button ist und bleibt ausgegraut....
> 
> Keine Chance bestimmte Libs, Funktionen, etc auszuschliessen.
> 
> ...



Damit das Ausschliessen funktioniert müssen bestimmte Vorraussetzungen erfüllt sein. Bemüh mal dazu die Suchfunktion im OSCAT-Forum. Ich hab hier einen Controller mit Firmware 11 und es klappt. Mit der alten "All-In-One" OSCAT-Lib war es zwangsläufig notwendig, da sonst die max. Bausteinanzahl überschritten war.

Gruß
Dieter


----------



## Andy082 (1 August 2011)

Abend.

Also der Tip mit dem Update war ja wirklich Gold wert....

Leider kann ich nur ein "Danke" abgeben.

Mail an den Support, und 2h später war der Link zu Software und FirmwareUpdate da.

Hab jetzt die FW19 geladen und die WebVisu des Controllers geht ab wie "a Zapferl" (<- in Österreich, der Deutsche würde sagen "wie ein Zäpfchen").

Also echt der Wahnsinn.
Und die neue CodesysVersion stellt auch noch einige Dinge bereit die ich für meine HMI echt vermisst habe. (Texteingabe mit Zeilensprung...)

bG,
Andy


----------



## Andy082 (1 August 2011)

Blockmove schrieb:


> Damit das Ausschliessen funktioniert müssen bestimmte Vorraussetzungen erfüllt sein. Bemüh mal dazu die Suchfunktion im OSCAT-Forum. Ich hab hier einen Controller mit Firmware 11 und es klappt. Mit der alten "All-In-One" OSCAT-Lib war es zwangsläufig notwendig, da sonst die max. Bausteinanzahl überschritten war.
> 
> Gruß
> Dieter


 
Aja, was den ausgegrauten Button betrifft....

Projekt erfolgreich übersetzen, dann in die Optionen und erst dann kann der Bttn "Unbenutzte ausschliessen" verwendet werden.


lg,
Andy


----------



## Andy082 (1 August 2011)

Ähm...

Ich hätte da, wenn auch nicht ganz zum Thema passend, noch eine andere Frage.

Nach meinem FW-Update funktioniert mein Mailprogramm (WagoLibMail_02) nicht mehr, da ich den SMTP-Port 25 an meinem Controller nicht mehr freigeben kann.

Gibt's da irgendwie eine Lösung oder ein "Work-Arround" oder überseh ich vor lauter Euphorie über mein "Controller-Zäpfchen" was....?


----------



## WAGO (3 August 2011)

Hallo Andy,

zunächst einmal Danke für das "2h-Lob". Wir bemühen uns, Euch stets schnell zu helfen.
Der SMTP-Port ist standardmäßig freigegeben, eine explizite Freigabe ist  nicht nötig. Das sieht nur bei den Ports für SNMP und SNTP anders aus.
Daher sollte deine Anwendung ohne Probleme funktionieren. Bitte überpüfe  doch einmal, ob Du auch die neuste Version der Bibliothek einsetzt. Die  aktuelle Version gibt es unter http://www.wago.com/wagoweb/documentation/navigate/nm9mpl_d.htm

Bei weiteren Fragen kannst Du uns gerne auch direkt kontaktieren!


----------

