Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Koble til HS3 med socket for å styre enheter eller eventer


toonwolf

Anbefalte innlegg

Har forsøkt å styre en enhet i HomeSeer via JSON API ved å bruke følgende kommando:

http://[IPADRESSETILHS3]/JSON?request=controldevicebyvalue&ref=543&value=100 

Requesten som sender "web push" er en veldig gammel Sensio kontroller som brukes for å styre lys og i loggen sier den følgende:

Web Server Got data but was not PUT or GET, from: [IPADRESSE] Data: request=controldevicebyvalue&ref=543&value=0 HTTP/1.1 

I nettleser fra andre PC'er på samme subnett fungerer samme URL uten problemer.  Sensio ønsker å forsøke seg med socket mot HomeSeer for å sende enkle kommandoer da det sannsynligvis er det som vil fungere, men jeg har ikke vært borte i dette før.  Noen som har kjennskap til om dette er mulig med HomeSeer? Litt googling og jeg finner info om hvordan det er mulig å sende kommandoer FRA HS til andre enheter men ikke andre veien. Altså styre HS3 enheter eller eventer ved å koble opp via socket.

Endret av toonwolf
Lenke til kommentar
Del på andre sider

5 hours ago, toonwolf said:

Har forsøkt å styre en enhet i HomeSeer via JSON API ved å bruke følgende kommando:


http://[IPADRESSETILHS3]/JSON?request=controldevicebyvalue&ref=543&value=100 

Requesten som sender "web push" er en veldig gammel Sensio kontroller som brukes for å styre lys og i loggen sier den følgende:


Web Server Got data but was not PUT or GET, from: [IPADRESSE] Data: request=controldevicebyvalue&ref=543&value=0 HTTP/1.1 

I nettleser fra andre PC'er på samme subnett fungerer samme URL uten problemer.  Sensio ønsker å forsøke seg med socket mot HomeSeer for å sende enkle kommandoer da det sannsynligvis er det som vil fungere, men jeg har ikke vært borte i dette før.  Noen som har kjennskap til om dette er mulig med HomeSeer? Litt googling og jeg finner info om hvordan det er mulig å sende kommandoer FRA HS til andre enheter men ikke andre veien. Altså styre HS3 enheter eller eventer ved å koble opp via socket.

 

Har ikke greie på Sensio, men ser du sier "web push" og feilmeldig sier at du ikke har PUT eller GET. Det virker som det er HTTP request hvor en må sende "web request" med  "metode" GET. 

 

Fra REST plugin i Chrome så kane en sende "manuelle" HTTP request, en setter "http://homeseerIP/JSON?request=controldevicebyvalue&ref=111&value=1" som URL, setter type til "GET" og trykker "Request" som kjører HTTP request med GET for å gjøre det samme som å skrive det rett inn i browser URL input og trykke enter.

 

F.eks samme fra  arduino kode med http request må en bruke GET for å få "kjørt" URL:

http.begin("http://homeseerIP/JSON?request=controldevicebyvalue&ref=111&value=1")
int httpCode = http.GET();
...
http.end();

 

Så kanskje er det mulig å legge til "GET" når det kjøres fra Sensio?

Lenke til kommentar
Del på andre sider

21 timer siden, backspace skrev:

Så kanskje er det mulig å legge til "GET" når det kjøres fra Sensio?

 

5 timer siden, Guahtdim skrev:

Ulempen er hvis du trenger tilbakemelding til Sensio kontrolleren.

Fikk svar fra Sensio nå på det du/dere forslår:

Med vår nye controller har vi full kontroll på requesten. Den gamle sender også GET, men det er uten headere, tipper det er derfor Homeseer klager.

Løsningen på dette problemet er altså å installere en ny Sensio kontroller som vil være hovedkontroller og gjøre den gamle som ikke sender headere til "slave".  Synes å være litt tungvint og litt dyrere enn jeg hadde tenkt meg også siden jeg har en HomeSeer installasjon/lisens hvor "alt" unntatt lys-styring til hallen kjører. Før jeg går for en slik løsning vil jeg prøve å bruke BLGData som jeg allerede har lisens på og hente aktiviteter fra samme Google Kalender som Sensio-kontrolleren bruker. Det vil ikke bli like bra som om Sensio-kontrolleren hadde sendt kommandoer, men vil være "godt nok". Problemet med BLGData er at det enda ikke er laget støtte for at tilstøtende aktiviteter blir håndtert som en enkelt aktivitet eller at "offset" (starte x minutter før og etter) ikke kolliderer med andre hendelser. Jeg blir dermed nødt til å trigge på start/slutt tidspunkt. I Sensio sin kontroller er det støtte for nettopp dette og det var grunnen til at jeg ønsket å styre noder i HomeSeer fra Sensio-kontrolleren. I Sensio-kontrolleren er det satt opp en regel som sier at 5 min før/etter at aktiviteten starter/slutter skal lyset skrus på/av. Om det eksisterer tilstøtende aktiviteter (booking) i kalenderen blir de håndtert som en enkelt hendelse. Dermed unngår du problemet med tilstøtende hendelser som går over i hverandre.

 

Her er et eksempel på hvordan aktiviteten ligger i Google Kalenderen og hvordan Sensio kontrolleren "ser de". Sensio kontrolleren øverst, Google kalender nederst. De tre aktivitetene fra kl 1600-1900 har blitt slått sammen til en aktivitet og "avreise" og tilbake er satt til 5 minutter før og etter.

image_72391.jpg.d3f36f53696c7b39b0ef82e21c9101e0.jpg

image_72392.jpg

Endret av toonwolf
Lenke til kommentar
Del på andre sider

Jeg smekket sammen en consolapp som kanskje kan hjelpe deg. Pakk ut filene og kjør dette fra dos prompt:

ConSocketServer.exe <port> <url å videresende til>

Eksempel:

ConSocketServer.exe 11000 http://[homeseerip]/json?

 

Fra sensio sender du da til dette programmet feks. 

request=controldevicebyvalue&ref=111&value=1<EOF>

 

<EOF> må du ha med siden den markerer slutt på data.

 

Jeg har ingen anelse om dette vil fungere, men du kan iallefall prøve. 

ConSocketServer.zip

  • Like 1
Lenke til kommentar
Del på andre sider

14 timer siden, Guahtdim skrev:

Jeg smekket sammen en consolapp som kanskje kan hjelpe deg.

Takk for det

14 timer siden, Guahtdim skrev:

Jeg har ingen anelse om dette vil fungere, men du kan iallefall prøve

Testet med å starte consollappen din på port 11000 som det er satt opp at JSON skal lytte på i HS på denne måten 

C:\Data\ConSocketServer>ConSocketServer.exe 11000 http://192.168.1.51/json?
starting server with port 11000 and resendUrl http://192.168.1.51/json?
Waiting for a connection...

Forsøker å telnette meg fra samme PC men får følgende feilmelding

C:\WINDOWS\system32>telnet 192.168.1.51 11000
Kobler til 192.168.1.51...Kan ikke åpne en tilkobling til vert, på port 11000 : Kan ikke koble til.

Alt av brannmur i windows er deaktivert.

Lenke til kommentar
Del på andre sider

Forsøker du med telnet fra samme maskin som du kjører consollapp så bør du vel bruke ip 127.0.0.1 tror jeg? Jeg er ikke så stødig på nettverksting.

 

Kjører consollappen på samme maskin som homeseer?

 

gitt at consollapp er på en annen maskin enn homeseer så må du kjøre telnet til ip som consollapp er på, ikke som homeseer er på.

 

Vi kan fortsette over meldinger og heller oppdatere med resultatet her i tråden.

 

Edit: Jeg måtte teste selv med telnet og fant ut at socket serveren (for meg) tok IP6 adresse. Ny versjon lagt ut i posten under.

Endret av Guahtdim
Lenke til kommentar
Del på andre sider

3 timer siden, Guahtdim skrev:

Ny fil. Her kan du også sette hvilken ip serveren skal lytte på hvis du har mer enn en mulig adresse (IP6 og IP4) Forrige versjon defaultet til IP6 hos meg.

Det gjorde susen, nå funker det som det skal. Lager en windows service av exe fila med f.eks NSSM (the non-sucking service manager), burde funke så kan den tusle og gå i bakgrunnen. Takk for hjelpen @Guahtdim, skal få Sensio til å teste dette for å se om det går nå også.

Lenke til kommentar
Del på andre sider

3 minutes ago, Moskus said:

Ja, og det står jeg fast ved! :)

 

Men som med alle programmer som plutselig krever et interface, så er det jo fort UI som tar tid. ;) 

Oh yes. Det kan jeg skrive under på. Sitter og jobber litt på GCalseer nå. Ting tar tid når det kommer til UI/bruker grensesnitt. Selve logikken er jo "hur lätt som helst".

Endret av Guahtdim
  • Like 1
Lenke til kommentar
Del på andre sider

7 timer siden, Guahtdim skrev:

gjøre om til en plugin

Selv om det sikkert er fristende å gjøre dette vil ikke det være litt "perler for svin"?  Jeg mener hvor mange er det som har behov for akkurat denne funksjonaliteten? Innbiller meg at de fleste som har behov for å benytte seg av JSON api'et til HS vil bruke web push. Det må være i mangel på støtte fra klienten som sender fra seg kommandoen som gjør at dette blir nødvendig. Da vil jeg heller at du skal bruke tid på å utvikle GCalseer som ser veldig lovende ut!

  • Thanks 1
Lenke til kommentar
Del på andre sider

4 minutter siden, Guahtdim skrev:

så er det veldig lite arbeid å lage plugin

Ok da ser jeg jo poenget med det. Venter fortsatt at Sensio skal få testet dette. Har ikke tilgang til å gjøre endringer på Sensio kontrolleren. Håper de får gjort det i begynnelsen av neste uke. Gir beskjed så snart det er testet ok

Lenke til kommentar
Del på andre sider

  • 3 uker senere...
17 minutter siden, Guahtdim skrev:

Fungerer det som det skal?

Ja det fungerer som det skal når jeg tester med Telnet både lokalt og fra andre enheter PC i samme nett, men Sensio har ikke klart å få det til og de vet heller ikke hvorfor. De har gitt beskjed om at vi må installere en ny kontroller som har støtte for å sende push- get-kommandoer via http. Det jeg ønsker å oppnå kan også løses av GCalSeer selv om det ikke blir helt nøyaktig så vil det være "godt nok". GCalSeer vil også brukes i mange andre sammenhenger så da velger jeg heller å hjelpe deg med å teste den for å gjøre den så god som mulig.

Endret av toonwolf
  • Like 1
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.