-> Hier kostenlos registrieren
Guten Morgen
,
ich bin wieder mal jemand der eine Wettervorhersage braucht. Ich habe schon einiges darüber gefunden und mit einer Runtime z.b. auf einem PanelPC funktioniert auch alles.
Aber was ich bis jetzt nicht gefunden habe ist das ganze auf einem COMFORT PANEL. Dieses kann laut Recherche nämlich keine ActiveX Steuerelemente und auch so ist man beim VBscripting ziemlich eingeschränkt.
Bei den meisten Varianten gibt es oft 2 Scripte, eins zum abholen der Wetterdaten von z.b. weather365.net o.Ä., und eins zum einlesen in die Steuerung.
Zum abholen
Set xmlhttp=CreateObject("MSXML2.ServerXMLHTTP.3.0") diese Zeile wird immer angemeckert, ok das Comfort Panel kann das wohl nicht. Dann hab ich einen kleinen PC an das Panel gehängt und lass diesen das Script ausführen, das funktioniert auch soweit.
Zum einlesen verwende ich dann dieses Script
Hat auf einem PanelPC wunderbar funktioniert. Auf einem COMFORT PANEL bekomm ich es nicht zum laufen. Oder sagen wir so, es gibt keine Werte in den DB aus und legt auch die txt-Datei nicht an. Fehler gibt es auch nicht aus.
Der kleine PC hat Win7 drauf. Das Panel heißt "HMI" und ist auf dem PC als Benutzer mit Passwort angelegt. Das Panel fragt auch beim hochfahren immer nach dem Passwort. Der Ordner Weather ist auch freigegeben.
Ich lege auch schon mit einem ähnlichen Pfad Archive auf dem PC ab, und das funktioniert. Die Verbindung sollte also stehen.
Mein Wunsch wäre es erstmal bei diesem Kunden es mit dem kleinen PC hinzubekommen.
ABER später auch NUR MIT EINEM COMFORT PANEL, wenn es möglich ist!!
Danke schon mal für eure Hilfe
Grüßle Flo

ich bin wieder mal jemand der eine Wettervorhersage braucht. Ich habe schon einiges darüber gefunden und mit einer Runtime z.b. auf einem PanelPC funktioniert auch alles.
Aber was ich bis jetzt nicht gefunden habe ist das ganze auf einem COMFORT PANEL. Dieses kann laut Recherche nämlich keine ActiveX Steuerelemente und auch so ist man beim VBscripting ziemlich eingeschränkt.
Bei den meisten Varianten gibt es oft 2 Scripte, eins zum abholen der Wetterdaten von z.b. weather365.net o.Ä., und eins zum einlesen in die Steuerung.
Zum abholen
Code:
'################################################################
'# Wetterdaten lesen #
'################################################################
Const DownloadDest = "https://api.weather365.net/foreign/citygeoip.php?tm=3&hpw=0&cityid=3098"
Const LocalFile = "C:\Weather\wetter.htm"
Const DownloadType = "binary"
'Const webUser =
'Const webPass =
Dim strURL
Dim xmlhttp
Set xmlhttp=CreateObject("MSXML2.ServerXMLHTTP.3.0")
strURL = DownloadDest
xmlhttp.open "GET", strURL, False
xmlhttp.send
If xmlhttp.status = 200 Then
Dim FSO
Set FSO=CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(LocalFile) Then
FSO.DeleteFile LocalFile
End If
Set FSO=Nothing
Dim objStream
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 1 'adTypeBinary
objStream.Open
objStream.Write xmlhttp.responseBody
objStream.SaveToFile LocalFile
objStream.Close
Set objStream = Nothing
End If
Set xmlhttp=Nothing
Set xmlhttp=CreateObject("MSXML2.ServerXMLHTTP.3.0") diese Zeile wird immer angemeckert, ok das Comfort Panel kann das wohl nicht. Dann hab ich einen kleinen PC an das Panel gehängt und lass diesen das Script ausführen, das funktioniert auch soweit.
Zum einlesen verwende ich dann dieses Script
Code:
On Error Resume Next
'version 1.5.2
'letzte änderung: 2018.07.16
'gültig für neue wetterdatei
'extrahiert aus der antwort http://www.weather365.net/foreign/city3a.php?cityid=25079 die daten
Dim FSO2
Dim indatei
Dim outdatei
Set FSO2 = CreateObject("Scripting.FileSystemObject")
Set indatei = FSO2.OpenTextFile("\\SERVER\Weather\wetter.htm",1) 'name der heruntergeladenen datei
Set outdatei = FSO2.CreateTextFile("\\SERVER\Weather\wetter.txt",True) 'name der datei mit den extrahierten daten
Dim startpos, inzeile, endpos, index, suchebody, body_gefunden
Dim ort_gefunden, ort
Dim weitere(24)
index=1
'datei einlesen
Do While indatei.AtEndOfStream <> True
startpos = 0
inzeile = LTrim(indatei.ReadLine)
'diverse zeichen ersetzen
inzeile = Replace(inzeile,Chr(9),"") 'tab
'<body> finden
suchebody = InStr(inzeile,"<body>")
If suchebody > 0 Then
body_gefunden = 1
End If
If body_gefunden = 1 Then
'ort
startpos = InStr(inzeile,"<a href")
If startpos > 0 And ort_gefunden = 0 Then
ort_gefunden = 1
'finde > hinter href. also start der daten
startpos = InStr(inzeile,">")
'finde < .also ende der daten
endpos=InStr(startpos+1,inzeile,"<")
ort = Mid(inzeile,startpos+1,endpos-startpos-1)
outdatei.WriteLine ort
End If
'weitere
startpos = InStr(inzeile,"<td class")
If startpos > 0 Then 'and ort_gefunden = 0 then
'finde <td class. anfang daten
startpos = InStr(inzeile,">")
endpos=InStr(startpos+1,inzeile,"<")
weitere(index) = Mid(inzeile,startpos+1,endpos-startpos-1)
' °C entfernen
weitere(index) = Replace(weitere(index),"°C","")
' outdatei.writeline weitere(index)
index = index + 1
End If
End If
Loop
'daten erst am ende schreiben um gleiche reihenfolge zu haben wie vorher
outdatei.WriteLine weitere(1) 'tag
outdatei.WriteLine weitere(5) 'max
outdatei.WriteLine weitere(9) 'min
outdatei.WriteLine weitere(13) 'Niederschlagswahrscheinlichkeit
outdatei.WriteLine weitere(17) 'Wind
outdatei.WriteLine weitere(21) 'Richtung
outdatei.WriteLine weitere(2)
outdatei.WriteLine weitere(6)
outdatei.WriteLine weitere(10)
outdatei.WriteLine weitere(14)
outdatei.WriteLine weitere(18)
outdatei.WriteLine weitere(22)
outdatei.WriteLine weitere(3)
outdatei.WriteLine weitere(7)
outdatei.WriteLine weitere(11)
outdatei.WriteLine weitere(15)
outdatei.WriteLine weitere(19)
outdatei.WriteLine weitere(23)
outdatei.WriteLine weitere(4)
outdatei.WriteLine weitere(8)
outdatei.WriteLine weitere(12)
outdatei.WriteLine weitere(16)
outdatei.WriteLine weitere(20)
outdatei.WriteLine weitere(24)
outdatei.Close
'daten in DB schreiben
SmartTags("db_wetter_neu_wetter.ort") = ort
SmartTags("db_wetter_neu_wetter.tag1_tag") = weitere(1) 'tag
SmartTags("db_wetter_neu_wetter.tag1_temax") = weitere(5) 'max
SmartTags("db_wetter_neu_wetter.tag1_temin") = weitere(9) 'min
SmartTags("db_wetter_neu_wetter.tag1_regen") = weitere(13) 'Niederschlagswahrscheinlichkeit
SmartTags("db_wetter_neu_wetter.tag1_wind") = weitere(17) 'Wind
SmartTags("db_wetter_neu_wetter.tag1_wrichtung") = weitere(21) 'Richtung
SmartTags("db_wetter_neu_wetter.tag2_tag") = weitere(2) 'tag
SmartTags("db_wetter_neu_wetter.tag2_temax") = weitere(6) 'max
SmartTags("db_wetter_neu_wetter.tag2_temin") = weitere(10) 'min
SmartTags("db_wetter_neu_wetter.tag2_regen") = weitere(14) 'Niederschlagswahrscheinlichkeit
SmartTags("db_wetter_neu_wetter.tag2_wind") = weitere(18) 'Wind
SmartTags("db_wetter_neu_wetter.tag2_wrichtung") = weitere(22) 'Richtung
SmartTags("db_wetter_neu_wetter.tag3_tag") = weitere(3) 'tag
SmartTags("db_wetter_neu_wetter.tag3_temax") = weitere(7) 'max
SmartTags("db_wetter_neu_wetter.tag3_temin") = weitere(11) 'min
SmartTags("db_wetter_neu_wetter.tag3_regen") = weitere(15) 'Niederschlagswahrscheinlichkeit
SmartTags("db_wetter_neu_wetter.tag3_wind") = weitere(19) 'Wind
SmartTags("db_wetter_neu_wetter.tag3_wrichtung") = weitere(23) 'Richtung
SmartTags("db_wetter_neu_wetter.tag4_tag") = weitere(4) 'tag
SmartTags("db_wetter_neu_wetter.tag4_temax") = weitere(8) 'max
SmartTags("db_wetter_neu_wetter.tag4_temin") = weitere(12) 'min
SmartTags("db_wetter_neu_wetter.tag4_regen") = weitere(16) 'Niederschlagswahrscheinlichkeit
SmartTags("db_wetter_neu_wetter.tag4_wind") = weitere(20) 'Wind
SmartTags("db_wetter_neu_wetter.tag4_wrichtung") = weitere(24) 'Richtung
Hat auf einem PanelPC wunderbar funktioniert. Auf einem COMFORT PANEL bekomm ich es nicht zum laufen. Oder sagen wir so, es gibt keine Werte in den DB aus und legt auch die txt-Datei nicht an. Fehler gibt es auch nicht aus.
Der kleine PC hat Win7 drauf. Das Panel heißt "HMI" und ist auf dem PC als Benutzer mit Passwort angelegt. Das Panel fragt auch beim hochfahren immer nach dem Passwort. Der Ordner Weather ist auch freigegeben.
Ich lege auch schon mit einem ähnlichen Pfad Archive auf dem PC ab, und das funktioniert. Die Verbindung sollte also stehen.
Mein Wunsch wäre es erstmal bei diesem Kunden es mit dem kleinen PC hinzubekommen.
ABER später auch NUR MIT EINEM COMFORT PANEL, wenn es möglich ist!!
Danke schon mal für eure Hilfe

Grüßle Flo