Page 1 of 4

Re: Zonnepanelen en homeseer

Posted: Wed Mar 20, 2013 4:25 pm
by timdotcom
Lekker weer voor zonnepanelen overigens! ;-)

Als je een voorzetje hebt van het script wat je denkt te gaan gebruiken i.c.m. modpoll dan hoor ik het graag.
Dan kan ik wat temperaturen uit mijn PLC toveren.

Re: Zonnepanelen en homeseer

Posted: Wed Mar 20, 2013 4:41 pm
by stefxx
Zal ik je zeker laten weten. Misschien doe ik ook nog wel een poging zonder modpoll, maar zonder spullen kan ik nog helemaal niets... behalve dromen! :-)

Re: Zonnepanelen en homeseer

Posted: Wed Mar 20, 2013 9:00 pm
by timdotcom
Ha,

Ik heb even geexperimenteerd met Modpoll.
Zie onderstaande, ik poll hier eenmalig het adres van mijn woonkamer temperatuur. 228 =22,8 graden.

Image

Enige idee hoe ik dit nu in een homeseer device kan proppen?
Er zit in modpoll geen optie tot schrijven naar een textfile als ik zo bekijk.

Gr Tim

Re: Zonnepanelen en homeseer

Posted: Wed Mar 20, 2013 9:06 pm
by stefxx
Ik zou zoiets proberen: modpoll -m tcp -r 260 -l 192.168.2.2 > c:\temp\output.txt

Re: Zonnepanelen en homeseer

Posted: Wed Mar 20, 2013 9:09 pm
by stefxx
En als je alleen geinteresseerd bent in de regel met [260] kun je dit ook doen:

modpoll -m tcp -r 260 -l 192.168.2.2 | find "[260]" > c:\temp\output.txt

Dat maakt het straks weer makkelijker om in te lezen middels een homeseer script.

Re: Zonnepanelen en homeseer

Posted: Wed Mar 20, 2013 9:31 pm
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.

Re: Zonnepanelen en homeseer

Posted: Wed Mar 20, 2013 11:35 pm
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.

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 9:22 am
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

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 12:12 pm
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:

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 5:17 pm
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 :-)

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 6:00 pm
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

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 6:23 pm
by stefxx
Ja. Vervang

Sub Main ()

door

Sub Main (parm as object)

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 7:52 pm
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

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 7:56 pm
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)

Re: Zonnepanelen en homeseer

Posted: Thu Mar 21, 2013 9:21 pm
by timdotcom
Ben nog niet thuis om te testen, maar mis je in de cmd file niet het find 260 gedeelte?