#!/bin/bash ./src/ebusd/ebusd --help >/dev/null ./src/ebusd/ebusd -r -f -x >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -d "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -d "tcp:192.168.999.999:1" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --scanconfig -r >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --latency 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -c "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --scanconfig >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --pollinterval 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --address 999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --answer >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --acquiretimeout 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --acquireretries 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --sendretries 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --receivetimeout 9999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --numbermasters 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -r --generatesyn >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --pidfile "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -p 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --httpport 999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --htmlpath "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f -l "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --logareas some >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --loglevel unknown >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --dumpfile "" >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --dumpsize 9999999 >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --aclfile=/ >/dev/null 2>/dev/null ./src/ebusd/ebusd -f --accesslevel >/dev/null 2>/dev/null ./src/ebusd/ebusd -c contrib/etc/ebusd --checkconfig --dumpconfig -s -f "ff08070400/0ab5303132333431313131" >/dev/null ./src/ebusd/ebusd -c contrib/etc/ebusd --checkconfig --dumpconfig -s -f "ff08070400" >/dev/null 2>/dev/null ./src/ebusd/ebusd -c contrib/etc/ebusd --checkconfig --dumpconfig -s -f "ff080704/" >/dev/null 2>/dev/null cat >contrib/etc/ebusd/bad.csv </dev/null rm -f contrib/etc/ebusd/bad.csv ./src/tools/ebusfeed -d tcp:127.0.0.1:8876 -t 10000 dump >/dev/null 2>/dev/null ./src/tools/ebusfeed -d "" >/dev/null 2>/dev/null ./src/tools/ebusfeed -t 1 >/dev/null 2>/dev/null ./src/tools/ebusfeed "" >/dev/null 2>/dev/null ./src/tools/ebusfeed 1 2 >/dev/null 2>/dev/null ./src/tools/ebusfeed -x >/dev/null 2>/dev/null ./src/tools/ebusctl -s testserver -p 100000 >/dev/null 2>/dev/null ./src/tools/ebusctl -s "" >/dev/null 2>/dev/null ./src/tools/ebusctl -p "" >/dev/null 2>/dev/null ./src/tools/ebusctl -x >/dev/null 2>/dev/null #server: php -r ' error_reporting (E_ALL); set_time_limit (0); ob_implicit_flush (); if (($srv=socket_create(AF_INET, SOCK_STREAM, SOL_TCP))===false) die("server: create socket"); if (socket_bind($srv, "127.0.0.1", 8876)===false) { @socket_close($srv); die("server: bind socket"); } if (socket_listen($srv, 5)===false) { @socket_close($srv); die("server: listen socket"); } echo "server: waiting\n"; if (($cli=socket_accept($srv))===false) { @socket_close($srv); die("server: socket accept"); } @socket_set_block($cli); $output=""; $input=$hexinput=""; echo "server: running\n"; $endtime=time()+15; $firstsend=time()+5; $secondsend=time()+10; $expectnext=""; $error=0; while (time()<$endtime) { if (($r=@socket_read($cli, 1))===false) break; if (strlen($r)==0) break; socket_write($cli, $r, 1); if (ord($r[0])==0xaa) { if (strlen($output)>0) { echo "server: <$output\n"; if ($expectnext) { if ($expectnext!=$output) { echo "server: error unexpected answer (should be $expectnext)\n"; $error=1; } $expectnext=""; } $output=""; } if ($firstsend && time()>$firstsend) { echo "server: sending ID query to 36\n"; socket_write($cli, "\xff\x36\x07\x04\x00\x06\xaa",8); $expectnext="000afd6562757364030001006c"; $firstsend=0; } else if ($secondsend && time()>$secondsend) { echo "server: sending brodcast message\n"; socket_write($cli, "\xff\xfe\xb5\x16\x03\x01\x50\x30\x86\xaa",10); $secondsend=0; } } else { $output.=substr(dechex(0x100|ord($r[0])),1); if ("31040704006f"==$output) { // answer on first ident query socket_write($cli, "\x00\x0a\x99\x42\x42\x42\x42\x42\x30\x31\x30\x31\x71",13); $output.=">answered with ACK 0a99424242424230313031"; } else if ("315307040091"==$output) { // answer on second ident query socket_write($cli, "\x00\x0a\x99\x42\x42\x42\x42\x42\x30\x31\x30\x31\x71",13); $output.=">answered with ACK 0a99424242424230313031"; } else if ("315407040090"==$output) { // answer on third ident query with invalid CRC socket_write($cli, "\x00\x0a\x99\x42\x42\x42\x42\x42\x30\x31\x30\x31\x72",13); $output.=">answered with ACK 0a99424242424230313031 + invalid CRC"; } else if ("315407040090"==$output) { // answer on fourth ident query with short reply socket_write($cli, "\x00\x09\x99\x42\x42\x42\x42\x42\x30\x31\x30\x25",12); $output.=">answered with ACK 09994242424242303130"; } else if ("3155070400ce"==$output) { // answer NAK on sixth ident query socket_write($cli, "\x01",1); $output.=">answered with NACK"; } else if ("311cb509030d0000e1"==$output || "3152b509030d0600c9"==$output || "3153b509030d060034"==$output) { socket_write($cli, "\x00\x02\x40\x50\xb4",5); $output.=">answered with ACK 024050"; } else if ("3153b505080290909090909003f6"==$output || "3153b509050e3500190030"==$output || "3153b5050802008f030515240161"==$output) { socket_write($cli, "\x00\x00\x00",3); $output.=">answered with ACK 00"; } else { $endtime=time()+20; // keep further alive } } } @socket_close($cli); @socket_close($srv); echo "server: done\n"; if ($error) { exit($error); } ' & srvpid=$! if [ -z "$srvpid" ]; then echo "unable to start echo server" exit 1 fi sleep 1 ps -p $srvpid >/dev/null status="$?" if [ ! "$status" = 0 ]; then echo "unable to start echo server" exit 1 fi echo "server: $srvpid" cat >contrib/etc/ebusd/test.csv <"$PWD/contrib/etc/ebusd/153/_templates" <"$PWD/contrib/etc/ebusd/153/36.bbb.csv" < ./passwd #ebusd: ./src/ebusd/ebusd -d tcp:127.0.0.1:8876 --initsend --latency 10000 -n -c "$PWD/contrib/etc/ebusd" --pollinterval=10 -s -a 31 --acquireretries 3 --answer --generatesyn --receivetimeout 40000 --sendretries 1 --enablehex --htmlpath "$PWD/contrib/html" --httpport 8878 --localhost --pidfile "$PWD/ebusd.pid" -p 8877 -l "$PWD/ebusd.log" --logareas all --loglevel debug --lograwdata --dumpfile "$PWD/ebusd.dump" --dumpsize 100 -D --scanconfig --aclfile=./passwd sleep 1 pid=`head -n 1 "$PWD/ebusd.pid"` if [ -z "$pid" ]; then echo "unable to start ebusd" kill $srvpid cat "$PWD/ebusd.log" exit 1 fi echo "ebusd: $pid" kill -1 $pid #client: readarray lines </dev/null 2>/dev/null for line in "${lines[@]}"; do if [ -n "$line" ]; then echo "send: $line" ./src/tools/ebusctl -p 8877 $line fi done while [ "$status" = 0 ]; do ./src/tools/ebusctl -p 8877 scan result | egrep -q "still running" status=$? done echo "scan result:" ./src/tools/ebusctl -p 8877 scan result curl "http://localhost:8878/data/" >/dev/null curl "http://localhost:8878/data/broadcast/?since=1&exact=1&required=" >/dev/null curl "http://localhost:8878/data/mc.4/outsidetemp?poll=1" >/dev/null curl "http://localhost:8878/data/?verbose=1" >/dev/null curl "http://localhost:8878/data/?indexed=1&numeric=1" >/dev/null curl "http://localhost:8878/data/?full" >/dev/null curl "http://localhost:8878/data/mc.5/installparam?poll=1&user=test&secret=testpass" >/dev/null curl -T .travis.yml http://localhost:8878/data/ echo "commands done" kill $lstpid fi ./src/tools/ebusctl -p 8877 info verify=`./src/tools/ebusctl -p 8877 info|egrep "^address 04:"` if [ "x$verify" != 'xaddress 04: slave #25, scanned "MF=153;ID=BBBBB;SW=3031;HW=3031"' ]; then echo "error unexpected result from info command: $verify" kill $pid kill $srvpid exit 1 fi kill $pid echo "ebusd log:" cat "$PWD/ebusd.log" echo "done." wait $srvpid