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 »

En om het dan maar gelijk af te maken, dit zou het in een homeseer device moeten stoppen:

Code: Select all

Sub Main()

  Dim fso, outputfile, filename, data

  filename = "c:\temp\output.txt"
  set fso = CreateObject("Scripting.FileSystemObject")
  set outputfile = fso.OpenTextFile(filename, 1, True)
    
  do While outputfile.AtEndOfStream <> True
    data = outputfile.ReadLine
    if left(data, 6) = "[260]:" then
      hs.SetDeviceString "x1", (right(data, len(data)-7)/10) & "°C", True
      hs.SetDeviceValue "x1", right(data, len(data)-7), True
    end if
  loop

  outputfile.Close

End Sub
Niet getest, zit vast nog wel een komma of haakje verkeerd. En vervang x1 voor het juiste device natuurlijk.
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by timdotcom »

Bedankt!

Het modpoll gedeelte werkt in ieder geval. Nog geen tijd gehad om het scriptje te testen.
Vraagje: is dat | find "[260]" > c:\temp\output.txt gedeelte een windows/dos functionaliteit? Of is dat onderdeel van de modpoll functionaliteit?

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

Re: Zonnepanelen en homeseer

Post by stefxx »

Zit al in DOS sinds versie 1.0 (1981), en misschien zelfs wel in QDOS/86-DOS daarvoor ook. Oeps, nou verraad ik mijn leeftijd wel een beetje :lol:

Zie hier voor wat mogelijkheden met redirecting: http://www.microsoft.com/resources/docu ... ction.mspx
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by timdotcom »

Is het ook mogelijk om modpoll vanuit het script te starten?

Want als ik modpoll continu laat pollen voor adres 260 dan komen er geen waarden in de output file. (staat continu open denk ik)

Zoals ik het nu doe laat ik modpoll eenmalig de waarde van 260 ophalen en dumpen in de tekst file. Dit werkt.

Dus ik denk dat het script modpoll moet starten met de parameters:
modpoll -m tcp -r 260 -1 192.168.2.2 | find "[260]" > c:\modpoll\output.txt
(waarbij de -1 staat voor een eenmalige poll.)
Misschien daarna even wachten en dan het homeseer device vullen.

Zou je dit nog in het scriptje kunnen bakken? :oops:
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by stefxx »

Heb je het script al getest? Voordat ik daar verder mee ga en modpoll ga proberen te starten, misschien wel handig om te weten :-)
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by timdotcom »

Net even getest, kreeg eerst de melding dat Set en Let niet meer toegestaan waren. Toch die leeftijd :D ?

Even aangepast.

Code: Select all

Sub Main()

  Dim fso, outputfile, filename, data

  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
Maar nog geen succes, er zal nog iets niet helemaal goed zitten want ik krijg onderstaande melding in de log file.

Code: Select all

21-3-2013 16:54:58  - Error - Scripting runtime error: System.Reflection.TargetParameterCountException: Parameter count mismatch.   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)
Jij enig idee? Moet nu weg dus ik zal vanavond laat of morgen weer verder hobbyen.

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

Re: Zonnepanelen en homeseer

Post by stefxx »

Ja. Vervang

Sub Main ()

door

Sub Main (parm as object)
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by timdotcom »

Hoera!
Een modbus waarde via tekstfile gepresenteerd in homeseer.

Je moest eens weten hoe lang ik al aan het rotzooien ben geweest.
Image

Wel eerst handmatig via modpoll de waarde in de .txt file moeten laten verversen maar we zijn op weg! :D

GR. Tim
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, zoiets?

Maak een cmd file, bijv. c:\modpoll\modpoll.cmd met deze inhoud:

Code: Select all

c:\modpoll\modpoll.exe -m tcp -r 260 -l 192.168.2.2 > c:\modpoll\wktt.txt 2>&1
Zet modpoll.exe in dezelfde directory en maak in homeseer een event met een scipt (extentie .vb) met deze inhoud:

Code: Select all

Sub Main (parm as object)

  Dim fso, outputfile, filename, data

  hs.launch ("c:\modpoll\modpoll.cmd")
  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
En je bent in business!

(als modpoll meer dan 5 seconden nodig heeft, moet je de sleep aanpassen. de waarde is in milliseconden)
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by timdotcom »

Ben nog niet thuis om te testen, maar mis je in de cmd file niet het find 260 gedeelte?
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by stefxx »

Maakt niet zoveel uit, de hele file wordt gelezen en de regel waar [260]: in voorkomt wordt uiteindelijk in het homeseer device gezet.

En dat maakt het makkelijker om later meerdere waardes in 1 keer uit te lezen. Zoals ik met mijn omvormer van plan ben :-)

Maar je kunt die find er ook weer inzetten, als je dat wilt. Ik heb er ook 2>&1 achter gezet, daarmee gaat niet alleen stdout maar ook stderr naar de txt file. Als er wat misgaat met modpoll kun je dan makkelijker troubleshooten door in de txt file te kijken. Maar dat werkt niet als je de find erin zet!
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, werkt perfect. :)

Waarde wordt via de cmd file in de tekst file gedumpt en netjes in de virtual device gestopt.

Is het ook mogelijk om het op poppen van het comand line window te blokkeren?
Nu zie ik als het script wordt aangeroepen het comand line window voor een fractie van een seconde over het scherm van HsTouch heen 8)

(HsTouch draait op dezelfde machine als waar Homeseer draait)
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by stefxx »

Je bent wel veeleisend zeg! :lol:

Probeer dit eens. Heb je die cmd file ook niet meer nodig.

Code: Select all

Sub Main (parm as object)

  Dim fso, outputfile, filename, data, objShell, cmd, parms

  cmd = "c:\modpoll\modpoll.exe"
  parms = "-m tcp -r 260 -l 192.168.2.2 2 > c:\modpoll\wktt.txt"

  objShell = CreateObject("WScript.Shell")
  objShell.Run(cmd & " " & parms, 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
timdotcom
Starting Member
Starting Member
Posts: 32
Joined: Sun Jun 21, 2009 10:24 am
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by timdotcom »

Je moet het ook zien als voorbereiding op je eigen zonnepanelen installatie.
Ik test gewoon je script alvast zodat je straks binnen no time de opbrengst kan loggen :D

Alleen het laatste script wordt wel foutloos uitgevoerd. Enkel er worden geen waarde in de tekstfile gedumpt.
Ook niet als ik de "System.Threading.Thread.Sleep(5000)" weer in het script laat mee doen.

Geen waarden in de tekstfile ook geen update in het device in HS uiteraard. :?
stefxx
Advanced Member
Advanced Member
Posts: 679
Joined: Fri Sep 12, 2008 2:26 pm
Location: Netherlands

Re: Zonnepanelen en homeseer

Post by stefxx »

Was er al een beetje bang voor. Om de een of andere reden lukt het me niet goed om te redirecten naar een tekstfile direct vanaf het script. Terug naar de cmd file dan maar, ik zal het script zo nog even aanpassen.
Post Reply

Return to “Homeseer algemeen Forum”