Versioner sammenlignet

Nøgle

  • Linjen blev tilføjet.
  • Denne linje blev fjernet.
  • Formatering blev ændret.
Jeg oplever engang imellem ved brug af API at min box bare "dør" (ked af det)
Info

Join the "Danske ZenseHome Brugere" Facebook grooupgroup

Advarsel
Tip

Rene Olskjær har lavet en fin PWA til at køre på LAMP på en server - se på https://github.com/Rene-Olskjaer/zense.olskjaer.dk


Indholdsfortegnelse

Dokumentation fra Zensehome

...

Metoden vi fra en Ubuntu sender info til vores ZenseHome PC Boks (som har ID 32010 og sidder på IP 10.0.0.110) over det lokale net.

Tip

For Ubuntu 18.04, add a global repo:

Kodeblok
sudo add-apt-repository universe


Links

http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts (læs specielt Expect Caveats texten)

https://wiki.tcl-lang.org/page/Expect+Hints+and+Tips

http://stackoverflow.com/questions/7789710/expect-script-to-automate-telnet-login

https://www.pantz.org/software/expect/expect_examples_and_tips.html

https://www.mkssoftware.com/docs/man1/expect.1.asp

Expect Scripts

Grundscriptet

Dette er "grundscriptet, som søger for at logge ind, agere og logge ud - jeg er ikke 100% sikker på om sleeps faktisk er nødvendige....:

Advarsel

Husker man ikke at lave logout eller fejler scriptet inden, da man få output fra forrige run ved næste run, og i det hele taget lidt "underligheder" (ked af det)

Jeg oplever engang imellem ved brug af API at min box bare "dør" - eller at det tager længe før den vil æde en kommando igen...(ked af det)

Kodeblok
#!/usr/bin/expect
spawn telnet 10.0.0.110 10001
expect "'^]'."
send ">>Login 32010<<\r"
expect ">>Login Ok<<"
sleep .5;

......
......
......

sleep .5;
send ">>Logout<<\r"
expect ">>Logout Ok<<"
exit
Tip

Brug:

exp_internal 1 i koden for at se hvad der egentlig sker hele velen igennem

log_user 0 for at supresse output

log_file <filename> for at logge til en fil


List alle forbrugsregistrende devices

...

Kodeblok
#!/usr/bin/expect
spawn telnet 10.0.0.110 10001
expect "'^]'."
send ">>Login 32010<<\r"
expect ">>Login Ok<<"
sleep .1;
send ">>Set 10604 0<<"
sleep .1;
send ">>Logout<<\r"
expect ">>Logout Ok<<"
exit


Error handling

Tip

November 2018 - Dette er en update til ovenstående, efter at have arbejde med scriptet - dette script har error handling og passende output.

Kodeblok
#!/usr/bin/expect
log_user 0
spawn telnet 10.0.0.110 10001
expect {
     "'^]'" { send ">>Login 32010<<\r"; }
     "refused" { catch {exp_close}; send_user "Connection refused\n";exp_wait; exit }
     "No route" { catch {exp_close}; send_user "No Route to host\n";exp_wait; exit }
     "eof" { catch {exp_close}; send_user "EOF\n";exp_wait; exit }
}
sleep .1;
send ">>Set 10604 1<<";
sleep .1;
send ">>Logout<<\r";
sleep .1;
close;
send_user "Success\n";
exit
Tip

December 2018 - Dette er en toogle metode - dvs. der læses og skiftes status

Kodeblok
#!/usr/bin/expect
log_user 0
spawn telnet 10.0.0.110 10001
expect {
     "'^]'" { send ">>Login 32010<<\r"; }
     "refused" { catch {exp_close}; send_user "Connection refused\n";exp_wait; exit }
     "No route" { catch {exp_close}; send_user "No Route to host\n";exp_wait; exit }
     "eof" { catch {exp_close}; send_user "EOF\n";exp_wait; exit }
}
sleep .1;
send ">>Get 10604<<\r";
sleep .1;
expect {
     "'^]'" { send ">>Login 32010<<\r"; }
     "refused" { catch {exp_close}; send_user "Connection refused\n";exp_wait; exit }
     "No route" { catch {exp_close}; send_user "No Route to host\n";exp_wait; exit }
     "eof" { catch {exp_close}; send_user "EOF\n";exp_wait; exit }
}
sleep .1;
send ">>Get 10604<<\r";
expect {
     ">>Get 100<<" { send ">>Set 10604 0<<\r"; exit }
     ">>Get 0<<" { send ">>Set 10604 1<<\r"; exit }
     ">>Get Timeout<<" { catch {exp_close}; send_user "Timeout for Get\n";exp_wait; exit }
}
sleep .1;
send ">>Logout<<\r";
sleep .1;
close;
send_user "Success\n";
exit