Zonnepanelen en homeseer

Homeseer Forum in het Nederlands (DUTCH forum)

Moderator: Ruud

stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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.
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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)
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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.
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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)?
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by timdotcom »

:oops: 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.
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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 :-)
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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.
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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!
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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.
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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.
AshaiRey
Senior Member
Senior Member
Posts: 1310
Joined: Mon Feb 02, 2009 5:27 pm
Location: Netherlands
Contact:

Re: Zonnepanelen en homeseer

Post 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
Bram
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post 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
AshaiRey
Senior Member
Senior Member
Posts: 1310
Joined: Mon Feb 02, 2009 5:27 pm
Location: Netherlands
Contact:

Re: Zonnepanelen en homeseer

Post 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 :wink:
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.
Bram
Post Reply

Return to “Homeseer algemeen Forum”