guten morgen,
nach etwas längerem Testen bin ich nun mit der Envoy8x live gegangen. Das Ergebnis seht Ihr auf meiner HP.
Insgesamt habe ich eine Lösung gefunden wie ich bisheriges Hauptprogrammm und Envoy8x übereinander bekomme (danke Werner für den entscheidenden Wink!)
Grundsätzlich logge ich alle Sensoren mit übernehme in WSWin aber nur die Werte der Temperaturzusatzsensoren sowie von UV- und Solarsensor.
Damit kann ich nun alles in 0,1°C darstellen, was zumindest bei Bodenfrost für mich Sinn macht. Da kommen nun einige Bodenfrosttage hinzu.
Gelöst habe ich das relativ einfach. Da ich eine 24/7 Server habe konnte ich die nachfolgenden Schritte einfach implementieren.
Auf einer virtuellen Kiste läuft das WDTU was automatisch jede Minute die geloggten Werte (werden alle 5 Minuten gelogggt) abruft. Das Intervall des Abrufen musste ich so einstellen, da bei einem 5 Minuten Abruf die Daten zu spät ausgelesen wären.
Mit einem Makrorecorder der die Buttonclicks aufzeichnen kann (also Elemente der aktiven Fenster, nicht die reinen Mausclicks) speichere ich mir in einem ersten Schritt die CSV-Datei ab.
Dann lasse ich ein Excelmakro alle 5 Minuten über dieses File laufen, was für den richtigen Aufbau zur späteren ws_merge beiträgt.
Man hätte auch alles in dem Makrorecorder machen können, aber Excel Makros laufen mEn stabiler - deswegen hier die Zweiteilung.
Für den Fall, das keine neue Datei von WDTU erzeugt wird, lösche ich alle 5 Minuten die ws_merge im WSWin Verzeichnis.
Für den unwahrscheinlichen Fall dass keine Daten abgerufen werden können, aber trotzdem eine Datei von WWDTU erzeugt wird habe ich noch keine brauchbare Lösung - theoretisch müsste die ws_merge vor dem Mergen in WSWin noch auf die korrekte Uhrzeit geprüft werden.
Eigentlich sollte die ws_merge nur für zusätzliche noch nicht im Hauptprogrammm verwendete Sensoren genutzt werden; das ist mir klar - aber ohne das Überschreiben hätte ich meine Anforderungen (0,1°C und Helligkeitssensoren) nicht umsetzen können.
Sicherlich gibt es noch schlankere Wege z.b. über PHP oder Java aber fürs erste ist dies hier ein gangbarer Weg.
Auch wenn das Interesse hier scheinbar gering ist würde ich mich über Verbesserungsvorschläge freuen!
Gruß + guten Rutsch
Hier noch der "Code"
VB Makro:
Sub envoy()
'
' envoy Makro
'
'
Workbooks.OpenText Filename:="C:\PICS\zusatz\ws_merge.csv", _
Origin:=65001, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=True, _
Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 4), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array( _
28, 1)), TrailingMinusNumbers:=True
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Selection.ClearContents
Columns("B:B").Select
Selection.NumberFormat = "h:mm;@"
Columns("C:G").Select
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("C1").Select
ActiveCell.FormulaR1C1 = "3"
Range("D1").Select
ActiveCell.FormulaR1C1 = "42"
Range("E1").Select
ActiveCell.FormulaR1C1 = "41"
Range("F1").Select
ActiveCell.FormulaR1C1 = "13"
Range("G1").Select
ActiveCell.FormulaR1C1 = "14"
Range("A1").Select
Dim Exportfile As String
Dim LastRow As Integer
Dim iRow As Integer
Dim iCol As Integer
Dim ExportDatei
Dim Export_TXT As String
Exportfile = "C:\WSWIN\ws_merge.csv"
ExportDatei = FreeFile
LastRow = ActiveSheet.UsedRange.Rows.Count
Open Exportfile For Output As #ExportDatei
For iRow = 1 To LastRow
For iCol = 1 To ActiveSheet.UsedRange.Columns.Count
Export_TXT = Export_TXT & CStr(ActiveSheet.Cells(iRow, iCol).Text) & ","
Next iCol
Export_TXT = Left(Export_TXT, Len(Export_TXT) - 1)
Print #ExportDatei, Export_TXT
Export_TXT = ""
Next iRow
Close #ExportDatei
ActiveWorkbook.Close savechanges:=False
Application.OnTime Now + TimeSerial(0, 5, 0), "PERSONAL.XLSB!envoy"
End Sub