Magnetkontakt i Homeseer via Arduino.
-
- Indlæg: 6507
- Tilmeldt: 20 mar 2008, 23:02
- Geografisk sted: Danmark
Magnetkontakt i Homeseer via Arduino.
Hej.
Jeg har monteret et par magnetkontakter på nogle vinduer. Deres tilstand skal jeg have i Homeseer. Det ser ud til at være ret ligetil. Så her er min version 0.0000001, som virker fint.
Arduino code:
Homeseer åbn COM 12 script, snuppet direkte fra et glemt sted på Homeseer forum:
Homeseer data håndterings script com_event.txt:
Homeseer luk COM 12 script:
Så følger virtuelt device V10 i Homeseer den fysiske magnets on/off. 
Nu skal jeg så til at hitte ud af at sende oplysninger for mange magneter på en smart måde. Jeg regner med tilstanden på alle Arduino pins skal sendes i en lang streng, og den så skal skilles ad i Homeseer. Og jeg skal have besluttet, hvor tit det skal opdatere. Hvert sekund er ret tit, men hvor langt kan der være imellem uden det går ud over funktionaliteten?
Det bliver lidt spændende, hvor mange fejl jeg får ind via kablerne.
Det går kuk i det, hvis man ikke har helt styr på at åbne og lukke COM porten. Så er man nød til at disable/enable den i device manageren.
Jeg har monteret et par magnetkontakter på nogle vinduer. Deres tilstand skal jeg have i Homeseer. Det ser ud til at være ret ligetil. Så her er min version 0.0000001, som virker fint.

Arduino code:
Kode: Vælg alt
const int buttonPin2 = 2;
int buttonState2 = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin2, INPUT);
}
void loop(){
buttonState2 = digitalRead(buttonPin2);
if (buttonState2 == HIGH) {
Serial.println( "<02on>");
}
else {
Serial.println( "<02of>");
}
delay(1000);
}
Homeseer åbn COM 12 script, snuppet direkte fra et glemt sted på Homeseer forum:
Kode: Vælg alt
' com port script to send data to a COM port
' this script registers a callback script named com_event.txt
' when data is received on the COM port the com_event.txt script is called and the
' data can be processed there
' this script only needs to be called once as the com port will stay open
sub main()
dim e
e=hs.OpenComPort(12,"9600,n,8,1",1,"com_event.txt","main",">")
hs.writelog "COM SCRIPT","COM open"
if e <> "" then
hs.writelog "Error opening com port",e
end if
' if you need to send data to the com port when the port is open, it can be done here
hs.SendToComPort 12,"at"+vbcrlf
hs.writelog "COM SCRIPT","Script Complete"
end sub
Homeseer data håndterings script com_event.txt:
Kode: Vælg alt
' when mode is a 1, data is complete string
sub main(data)
' process the com port data here
hs.writelog "COM DATA 12",data
if instr(1,data,"<02on") then
hs.ExecX10 "V10","ON"
elseif instr(1,data,"<02of") then
hs.ExecX10 "V10","OFF"
end if
end sub
Kode: Vælg alt
sub main()
dim e
e=hs.CloseComPort(12)
hs.writelog "COM12 Close SCRIPT","Script Complete"
end sub

Nu skal jeg så til at hitte ud af at sende oplysninger for mange magneter på en smart måde. Jeg regner med tilstanden på alle Arduino pins skal sendes i en lang streng, og den så skal skilles ad i Homeseer. Og jeg skal have besluttet, hvor tit det skal opdatere. Hvert sekund er ret tit, men hvor langt kan der være imellem uden det går ud over funktionaliteten?
Det bliver lidt spændende, hvor mange fejl jeg får ind via kablerne.

Det går kuk i det, hvis man ikke har helt styr på at åbne og lukke COM porten. Så er man nød til at disable/enable den i device manageren.
Mvh
Morten
Morten
Re: Magnetkontakt i Homeseer via Arduino.
Du kan vel nøjes med at sende status for en afbryder, når den ændrer sig?
Eller laver HS timeout på den serielle forbindelse, hvis den ikke modtager noget i et stykke tid.
Eller laver HS timeout på den serielle forbindelse, hvis den ikke modtager noget i et stykke tid.
-
- Indlæg: 6507
- Tilmeldt: 20 mar 2008, 23:02
- Geografisk sted: Danmark
Re: Magnetkontakt i Homeseer via Arduino.
Det ved jeg faktisk ikke. Det må prøves. 
(Tak for du lige drejede mit hovede væk fra det forkeret spor.
)

(Tak for du lige drejede mit hovede væk fra det forkeret spor.

Mvh
Morten
Morten
-
- Indlæg: 6507
- Tilmeldt: 20 mar 2008, 23:02
- Geografisk sted: Danmark
Re: Magnetkontakt i Homeseer via Arduino.
I får lige version 0.0000002. 
Nu sendes der kun ved ændringer. Homeseer klarer 1½ times stilstand. Længere har jeg ikke nået at teste det endnu.
Jeg har fjernet det første <. Det hørte til en anden tankegang, så hvis det skal bruges med overstående scripts, skal < lige fjernes fra modtage scriptet.

Nu sendes der kun ved ændringer. Homeseer klarer 1½ times stilstand. Længere har jeg ikke nået at teste det endnu.
Jeg har fjernet det første <. Det hørte til en anden tankegang, så hvis det skal bruges med overstående scripts, skal < lige fjernes fra modtage scriptet.
Kode: Vælg alt
/*
MHN 5/10 2012
Opbygning af en node til at modtage magnet kontakter og sende dem til en COM port, hvor Homeseer modtager dem.
*/
const int buttonPin2 = 2;
int buttonState2 = 0;
int tilstand2 = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin2, INPUT);
}
void loop(){
buttonState2 = digitalRead(buttonPin2);
if (buttonState2 == HIGH) {
if (tilstand2 == 0) {
Serial.println( "02on>");
tilstand2 = 1;
}
}
if (buttonState2 == LOW) {
if (tilstand2 == 1) {
Serial.println( "02of>");
tilstand2 = 0;
}
}
delay(1000);
}
Mvh
Morten
Morten
-
- Indlæg: 6507
- Tilmeldt: 20 mar 2008, 23:02
- Geografisk sted: Danmark
Re: Magnetkontakt i Homeseer via Arduino.
Følgende Values-status/ Graphic Pairs opsætning i Homeseer giver et mere brugbart Virtuelt device:
Mvh
Morten
Morten
-
- Indlæg: 6507
- Tilmeldt: 20 mar 2008, 23:02
- Geografisk sted: Danmark
Re: Magnetkontakt i Homeseer via Arduino.
Jeg er forresten i gang med at beta teste Greigs (enigmatheatre) Arduino script. http://board.homeseer.com/showthread.php?t=145502
Det ser rigtig godt ud.
Så jeg har droppet tanken om selv at fumle noget sammen.
Det ser rigtig godt ud.
Så jeg har droppet tanken om selv at fumle noget sammen.

Mvh
Morten
Morten
Re: Magnetkontakt i Homeseer via Arduino.
Off-topic
Kiggede på linket i denne tråd og MHN er det dig Morten?
Kan så lige kommentere at DS18B20 og DHT22 IKKE benytter samme protokol til Arduino,de er 2 forskellige biblioteker der anvendes.
Ds18B20 har en 64bit adresse, det har en DHT22 ikke,
Så derfor benyt 2 forskellige pins på din Arduino
[EDIT]
Mit badeværelse www.ohotbar.com kører med en DHT22 sensor.
Jeg har lavet en DS18B20 sensor tilkoblet et relæ der tænder for nogle varmekabler, så mine vandrør ikke fryser.
Jeg har dog ikke prøvet at have både en DHT22 samt DS18B20 på samme Arduino, men jeg kan ikke forestille mig nogle problemer, bare der benyttes hver sin pin på Arduino hhv DHT22 og DS18B20
[/EDIT]
Kiggede på linket i denne tråd og MHN er det dig Morten?
Kan så lige kommentere at DS18B20 og DHT22 IKKE benytter samme protokol til Arduino,de er 2 forskellige biblioteker der anvendes.
Ds18B20 har en 64bit adresse, det har en DHT22 ikke,
Så derfor benyt 2 forskellige pins på din Arduino
[EDIT]
Mit badeværelse www.ohotbar.com kører med en DHT22 sensor.
Jeg har lavet en DS18B20 sensor tilkoblet et relæ der tænder for nogle varmekabler, så mine vandrør ikke fryser.
Jeg har dog ikke prøvet at have både en DHT22 samt DS18B20 på samme Arduino, men jeg kan ikke forestille mig nogle problemer, bare der benyttes hver sin pin på Arduino hhv DHT22 og DS18B20
[/EDIT]
-
- Indlæg: 6507
- Tilmeldt: 20 mar 2008, 23:02
- Geografisk sted: Danmark
Re: Magnetkontakt i Homeseer via Arduino.
Jep jeg hedder mhn på de fleste fora. 
Greig er opmærksom på, der er forskel. Men han har en lang to-do liste.
I øjeblikket er der en god stabil grundfunktion. det er et rigtigt godt udgangspunkt.
Scriptet fortæller mig i øjeblikket om vinduet i bryggerset er åben/lukket med grafik på HS Touch.

Greig er opmærksom på, der er forskel. Men han har en lang to-do liste.
I øjeblikket er der en god stabil grundfunktion. det er et rigtigt godt udgangspunkt.

Scriptet fortæller mig i øjeblikket om vinduet i bryggerset er åben/lukket med grafik på HS Touch.
Mvh
Morten
Morten