Page 3 of 4
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 12:16 pm
by stefxx
Ok, zet die cmd weer terug en probeer dit eens:
Code: Select all
Sub Main (parm as object)
Dim fso, outputfile, filename, data, objShell
objShell = CreateObject("WScript.Shell")
objShell.Run("c:\modpoll\modpoll.cmd", 0, True)
objShell = Nothing
' System.Threading.Thread.Sleep(5000)
filename = "c:\modpoll\wktt.txt"
fso = CreateObject("Scripting.FileSystemObject")
outputfile = fso.OpenTextFile(filename, 1, True)
do while outputfile.AtEndOfStream <> True
data = outputfile.ReadLine
if left(data, 6) = "[260]:" then
hs.SetDeviceString ("M1", (right(data, len(data)-7)/10) & "°C", True)
hs.SetDeviceValue ("M1", right(data, len(data)-7))
end if
loop
outputfile.Close
End Sub
Die sleep heb je als het goed is nog steeds niet nodig. De nieuwe manier van aanroepen wacht totdat de cmd (en modpoll) klaar is.
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 1:08 pm
by stefxx
timdotcom wrote:Ik heb zelf voor test doeleinden de stick van hjelmslund in huis. Deze werkt super! Je krijgt gewoon een compoort RS485 tot je beschikking.
Ik vind die stick toch wel stevig aan de prijs. Ik ga deze proberen, voor minder dan 14 euro incl. verzenden wil ik het wel testen:
http://www.dx.com/p/113652
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 1:58 pm
by timdotcom
Geen input in textfile:
Code: Select all
22-3-2013 12:56:55 - Error - Scripting runtime error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Het systeem kan het opgegeven bestand niet vinden. (Exception from HRESULT: 0x80070002) at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack, Boolean IgnoreReturn) at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn) at scriptcode5.scriptcode5.Main(Object parm) --- End of inner exception stack trace --- at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) at Scheduler.VsaScriptHost.Invoke(String ModuleName, String MethodName, Object[] Arguments)
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 2:04 pm
by timdotcom
Oh ja,
Het prijsverschil tussen de sticks zit in de galvanische scheiding. De stick van hjelmslund heeft een galvansiche scheiding van 2,5Kv.
Als er een fout optreedt in je RS458 deelnemer(s) dan is je PC waarschijnlijk de dupe.
Thuis zou ik dat nog wel aandurven, maar op het werk durf ik het niet.
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 2:25 pm
by stefxx
timdotcom wrote:Geen input in textfile:
Tsja. Hier doet 'ie het wel... heb je de modpoll.cmd teruggeplaatst? Wordt de wktt.txt wel aangemaakt (op de juiste plek en met de juiste naam)?
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 2:32 pm
by stefxx
Ik kan jouw fout reproduceren als de modpoll.cmd niet bestaat...
Als je hem al had weggegooit:
http://www.domoticaforum.eu/viewtopic.p ... =10#p62532
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 3:22 pm
by timdotcom

Tja, inderdaad. Ik had de bestandsnaam in mijn enthousiasme verkeerd getypt........
Maar nu werkt het als een speer! Geen "nare" pop ups meer in HStouch.
Bedankt voor je inspanningen, ik ga vanaf hier verder met de Modbus functies.
Re: Zonnepanelen en homeseer
Posted: Fri Mar 22, 2013 3:30 pm
by stefxx
Mooi!
Kun je nou ook met modpoll meerdere waardes in 1 keer uitlezen? In het geval van mijn omvormer, zou ik met "-r 40001 -c 125" alle waardes tussen 40001 en 40125 in een keer kunnen ontvangen denk je? Of lees ik dan 125 keer de waarde 40001 misschien? Ben nog niet zo thuis in Modbus, maar dat wist je al toch?
Dan kan ook ik verder knutselen met het script

Re: Zonnepanelen en homeseer
Posted: Mon Mar 25, 2013 10:15 am
by timdotcom
Ja, ik heb het script nu aangepast zodat ik meerdere temperaturen in een keer kan opvragen en dumpen in homeseer.
Code: Select all
modpoll 3.4 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2013 proconX Pty Ltd
Visit http://www.modbusdriver.com for Modbus libraries and tools.
Protocol configuration: MODBUS/TCP
Slave configuration...: address = 1, start reference = 260, count = 5
Communication.........: 192.168.2.2, port 502, t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table
-- Polling slave...
[260]: 200
[261]: 178
[262]: 202
[263]: 161
[264]: 160
Het enige waar je in jouw geval mee zit is het type register wat je uit leest. Dit verschilt tussen 16 en 32 bits registers. In modpoll kan je ingeven wat je voor registers wilt uitlezen want deze vertaalt dit naar leesbare decimale gegevens.
Mijn gegevens staan in 16 bits registers (toevallig de default instelling vanuit modpoll)
Maar tegen de tijd dat je je inverter hebt hangen moet je maar even contact opnemen dan heb ik wel een handigere (windows) versie van een Modbus programma waarmee je simpel en sneller kan bepalen hoe je gegevens in de inverter zitten.
Re: Zonnepanelen en homeseer
Posted: Tue Apr 02, 2013 9:45 pm
by stefxx
De slimme meter hangt inmiddels en de meterstanden en verbruik komen netjes in Homeseer binnen. Dat is stap 1.
De zonnepanelen zijn gepland voor 17 april. Dan kunnen we met modpoll aan de gang. Of misschien probeer ik alsnog rechtstreeks de rs485 port uit te lezen, we zien wel. Eerst de panelen!
Re: Zonnepanelen en homeseer
Posted: Mon Apr 08, 2013 9:58 am
by timdotcom
Zou het ook mogelijk zijn om de gegevens parallel aan het dumpen in de Homeseer Devices te dumpen naar een CSV file?
Dan kan ik hiervan met Highchart grafieken maken.
Re: Zonnepanelen en homeseer
Posted: Mon Apr 08, 2013 10:06 am
by stefxx
timdotcom wrote:Zou het ook mogelijk zijn om de gegevens parallel aan het dumpen in de Homeseer Devices te dumpen naar een CSV file?
Moet je even spelen met het FileSystemObject. Niet zo moeilijk, voldoende voorbeelden te vinden lijkt me. Laat me weten als je ergens vastloopt.
Re: Zonnepanelen en homeseer
Posted: Mon Apr 08, 2013 10:09 am
by AshaiRey
Even wat dingetjes invullen zoals
<het logfile> en <device code>"
Aanroepen vanuit een event dmv van bijvoorbeeld een trigger op value change
Code: Select all
Public Sub Main(ByVal Parms As String)
Const fsoForReading = 1
Const fsoForWriting = 2
Const ForAppending = 8
Dim Device as String
Dim strDevice as String
Dim objFSO as Object
Dim objFile as Object
Dim Filename As String
Filename = "c:\Program Files\HomeSeer HSPRO\data\<het logfile>.csv"
Device = "<device code>"
strDevice = hs.DeviceString(Device)
objFSO = CreateObject("Scripting.FileSystemObject")
Try
objFile = objFSO.OpenTextFile(Filename, ForAppending )
objFile.WriteLine(strDevice)
Catch e as Exception
hs.WriteLog("System error",e.Message)
hs.WriteLog("Writing CSV","Kon de data niet wegschrijven naar " & Filename)
End Try
objFSO = Nothing
objFile = Nothing
'hs.WriteLog("SYSTEEM", "Ready updating CSV.")
End Sub
Re: Zonnepanelen en homeseer
Posted: Mon Apr 08, 2013 12:49 pm
by timdotcom
Brutaal vraagje:
Ik heb nu onderstaand script om de 6 minuten draaien. Is het mogelijk om de CSV actie hierin te verwerken zodat de gegevens welke naar de homeseer devices worden gedumpt ook in de CSV file terecht komen?
Code: Select all
Sub Main (parm as object)
Dim fso, outputfile, filename, data, objShell
objShell = CreateObject("WScript.Shell")
objShell.Run("c:\modpoll\temppoll.cmd", 0, True)
objShell = Nothing
' System.Threading.Thread.Sleep(5000)
filename = "c:\modpoll\temppoll.txt"
fso = CreateObject("Scripting.FileSystemObject")
outputfile = fso.OpenTextFile(filename, 1, True)
do while outputfile.AtEndOfStream <> True
data = outputfile.ReadLine
if left(data, 6) = "[260]:" then
hs.SetDeviceString ("M1", (right(data, len(data)-7)/10) & "°C", True)
hs.SetDeviceValue ("M1", right(data, len(data)-7)/10)
end if
if left(data, 6) = "[261]:" then
hs.SetDeviceString ("M2", (right(data, len(data)-7)/10) & "°C", True)
hs.SetDeviceValue ("M2", right(data, len(data)-7)/10)
end if
if left(data, 6) = "[262]:" then
hs.SetDeviceString ("M3", (right(data, len(data)-7)/10) & "°C", True)
hs.SetDeviceValue ("M3", right(data, len(data)-7)/10)
end if
if left(data, 6) = "[263]:" then
hs.SetDeviceString ("M4", (right(data, len(data)-7)/10) & "°C", True)
hs.SetDeviceValue ("M4", right(data, len(data)-7)/10)
end if
if left(data, 6) = "[264]:" then
hs.SetDeviceString ("M5", (right(data, len(data)-7)/10) & "°C", True)
hs.SetDeviceValue ("M5", right(data, len(data)-7)/10)
end if
if left(data, 6) = "[265]:" then
hs.SetDeviceString ("M6", Math.Round((right(data, len(data)-7)/10-100), 1) & "°C", True)
hs.SetDeviceValue ("M6", right(data, len(data)-7)/10-100)
end if
if left(data, 6) = "[266]:" then
hs.SetDeviceString ("M7", (right(data, len(data)-7)) & "Lux", True)
hs.SetDeviceValue ("M7", right(data, len(data)-7))
end if
loop
outputfile.Close
End Sub
Het mooiste zou zijn als de CSV file gegevens bevat van maximaal 24h terug in de tijd. Ik wil namelijk als ik op een ruimte temperatuur druk in Hstouch een highchart grafiek laten zien met daarin het temperatuur verloop van de afgelopen 24h.
Gr. Tim
Re: Zonnepanelen en homeseer
Posted: Mon Apr 08, 2013 5:59 pm
by AshaiRey
timdotcom wrote:Brutaal vraagje:
Ik heb nu onderstaand script om de 6 minuten draaien. Is het mogelijk om de CSV actie hierin te verwerken zodat de gegevens welke naar de homeseer devices worden gedumpt ook in de CSV file terecht komen?
Ja dat kan.
Zet het script er als een functie bij en hernoem Main(....) naar iets als logCSV(Byval Value As Strimg) en roep dat dan aan vanuit je eigen script gedeelte
Je heb alle gegevens/info beschikbaar nu nog even aan elkaar knopen
Het mooiste zou zijn als de CSV file gegevens bevat van maximaal 24h terug in de tijd. Ik wil namelijk als ik op een ruimte temperatuur druk in Hstouch een highchart grafiek laten zien met daarin het temperatuur verloop van de afgelopen 24h.
Gr. Tim
Hoe wil je dan gegevens ouder dan 24 uur verwijderen?
Is niet nodig, je kan een csv bestand ook benaderen alsof het een database is en dan kan je er gewoon een query op los laten.