Zonnepanelen en homeseer

Homeseer Forum in het Nederlands (DUTCH forum)

Moderator: Ruud

Re: Zonnepanelen en homeseer

Postby stefxx » Wed Mar 20, 2013 8:31 pm

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.
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby timdotcom » Wed Mar 20, 2013 10:35 pm

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.
timdotcom
Starting Member
Starting Member
 
Posts: 32
Joined: June 2009
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby stefxx » Thu Mar 21, 2013 8:22 am

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
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby timdotcom » Thu Mar 21, 2013 11:12 am

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:
timdotcom
Starting Member
Starting Member
 
Posts: 32
Joined: June 2009
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby stefxx » Thu Mar 21, 2013 4:17 pm

Heb je het script al getest? Voordat ik daar verder mee ga en modpoll ga proberen te starten, misschien wel handig om te weten :-)
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby timdotcom » Thu Mar 21, 2013 5:00 pm

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
timdotcom
Starting Member
Starting Member
 
Posts: 32
Joined: June 2009
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby stefxx » Thu Mar 21, 2013 5:23 pm

Ja. Vervang

Sub Main ()

door

Sub Main (parm as object)
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby timdotcom » Thu Mar 21, 2013 6:52 pm

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
timdotcom
Starting Member
Starting Member
 
Posts: 32
Joined: June 2009
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby stefxx » Thu Mar 21, 2013 6:56 pm

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)
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby timdotcom » Thu Mar 21, 2013 8:21 pm

Ben nog niet thuis om te testen, maar mis je in de cmd file niet het find 260 gedeelte?
timdotcom
Starting Member
Starting Member
 
Posts: 32
Joined: June 2009
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby stefxx » Thu Mar 21, 2013 8:35 pm

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!
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby timdotcom » Thu Mar 21, 2013 10:16 pm

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)
timdotcom
Starting Member
Starting Member
 
Posts: 32
Joined: June 2009
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby stefxx » Fri Mar 22, 2013 10:02 am

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
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby timdotcom » Fri Mar 22, 2013 10:46 am

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. :?
timdotcom
Starting Member
Starting Member
 
Posts: 32
Joined: June 2009
Location: Netherlands

Re: Zonnepanelen en homeseer

Postby stefxx » Fri Mar 22, 2013 11:00 am

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.
User avatar
stefxx
Advanced Member
Advanced Member
 
Posts: 647
Joined: September 2008
Location: Netherlands

PreviousNext

Return to Homeseer algemeen Forum

Who is online

Users browsing this forum: No registered users and 1 guest