Compare commits
18 Commits
ebaf682151
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 3576461e03 | |||
| 9603093b62 | |||
| 20eda9fc42 | |||
| 516551f15d | |||
| aef92e33e8 | |||
| 2f9937867b | |||
| e8686cbe35 | |||
| 6249dd6074 | |||
| 4ea8ce944f | |||
| 790dcd2259 | |||
| 5043618bf8 | |||
| d8fb6cae01 | |||
| bc113e2015 | |||
| 31db3b78d6 | |||
| e314980c10 | |||
| 64a821bea1 | |||
| 09abf3e122 | |||
| 4d8ab68b81 |
@@ -16,4 +16,5 @@ target_link_libraries(usbserial-dw ${Boost_LIBRARIES})
|
||||
#target_link_libraries(usbserial-dw ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
## Install
|
||||
install(TARGETS usbserial-dw DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(TARGETS usbserial-dw
|
||||
RUNTIME DESTINATION bin ${CMAKE_INSTALL_BINDIR})
|
||||
80
main.cpp
80
main.cpp
@@ -30,6 +30,7 @@
|
||||
#include <boost/algorithm/string/split.hpp>
|
||||
|
||||
#include <boost/program_options.hpp>
|
||||
#include <boost/format.hpp>
|
||||
|
||||
#include "TimeoutSerial.h"
|
||||
#include "YmodemFileReceive.h"
|
||||
@@ -38,11 +39,12 @@
|
||||
|
||||
using namespace std;
|
||||
using namespace boost;
|
||||
using boost::format;
|
||||
namespace po = boost::program_options;
|
||||
|
||||
typedef vector< string > split_vector_type;
|
||||
|
||||
static void init_log(void)
|
||||
static void init_log(bool debug = false)
|
||||
{
|
||||
/* init boost log
|
||||
* 1. Add common attributes
|
||||
@@ -89,6 +91,10 @@ static void init_log(void)
|
||||
boost::log::keywords::min_free_space = 30 * 1024 * 1024,
|
||||
boost::log::keywords::open_mode = std::ios_base::app);
|
||||
fsSink->set_formatter(logFmt);
|
||||
if (!debug)
|
||||
fsSink->set_filter(
|
||||
boost::log::trivial::severity >= boost::log::trivial::warning
|
||||
);
|
||||
fsSink->locked_backend()->auto_flush(true);
|
||||
}
|
||||
|
||||
@@ -108,23 +114,26 @@ int main(int argc, char* argv[])
|
||||
float pressure = NAN;
|
||||
po::variables_map vm;
|
||||
std::string port,path,filename;
|
||||
int speed;
|
||||
int speed,brightness = 0,saturation = 0 ,contrast = 0;
|
||||
|
||||
init_log();
|
||||
|
||||
po::options_description desc("Allowed options");
|
||||
desc.add_options()
|
||||
("help", "produce help message")
|
||||
("measure", "get and print values")
|
||||
("debug", "debug output to file")
|
||||
("verbose", po::value<string>()->implicit_value("0"), "verbosity level")
|
||||
("file", po::value<string>(&filename)->default_value("camera.jpg"),"filename of capture filename")
|
||||
("path", po::value<string>(&path)->default_value("/tmp"),"directory for file of capture")
|
||||
("capture", "capture photo of camera")
|
||||
("port", po::value<string>(&port)->default_value("/dev/ttyUSB0"), "port to read from")
|
||||
("speed", po::value<int>(&speed)->default_value(115200), "speed read from port")
|
||||
("speed", po::value<int>(&speed)->default_value(460800), "speed read from port")
|
||||
("brightness", po::value<int>(&brightness)->implicit_value(0), "set brightness")
|
||||
("saturation", po::value<int>(&saturation)->implicit_value(0), "set saturation")
|
||||
("contrast", po::value<int>(&contrast)->implicit_value(0), "set contrast")
|
||||
("temperature", "get and print temprature")
|
||||
("humidity", "get and print humidity")
|
||||
("pressure", "get and print pressure")
|
||||
("reboot", "reboot ESP32 CAM")
|
||||
("noraw", "do not set raw mode")
|
||||
("noreset", "do not set zero on lines DTR a RST")
|
||||
;
|
||||
@@ -138,7 +147,9 @@ int main(int argc, char* argv[])
|
||||
cout << desc << "\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
init_log(vm.count("debug"));
|
||||
|
||||
} catch(std::exception& e) {
|
||||
cerr << "error: " << e.what() << "\n";
|
||||
return 1;
|
||||
@@ -156,13 +167,28 @@ int main(int argc, char* argv[])
|
||||
serial.setDTR(false);
|
||||
serial.setRTS(false);
|
||||
}
|
||||
|
||||
if (! vm.count("noraw")) {
|
||||
serial.setRAW();
|
||||
}
|
||||
|
||||
if (vm.count("reset")) {
|
||||
serial.setDTR(true);
|
||||
serial.setRTS(true);
|
||||
|
||||
serial.writeString("reboot\r\n");
|
||||
boost::this_thread::sleep(posix_time::milliseconds(1000));
|
||||
|
||||
serial.setDTR(false);
|
||||
serial.setRTS(false);
|
||||
|
||||
}
|
||||
|
||||
boost::this_thread::sleep(posix_time::milliseconds(5000));
|
||||
|
||||
if (! vm.count("noreset")) {
|
||||
serial.writeString("\r\n\r\n");
|
||||
boost::this_thread::sleep(posix_time::milliseconds(300));
|
||||
line = serial.readStringUntil("\n");
|
||||
trim(line);
|
||||
BOOST_LOG_TRIVIAL(debug) << line;
|
||||
@@ -170,6 +196,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
if (vm.count("measure") || vm.count("temperature") || vm.count("pressure") || vm.count("humidity")) {
|
||||
serial.writeString("measure\r\n");
|
||||
boost::this_thread::sleep(posix_time::milliseconds(100));
|
||||
|
||||
for (;;) {
|
||||
line = serial.readStringUntil("\n");
|
||||
@@ -195,6 +222,7 @@ int main(int argc, char* argv[])
|
||||
cout << "tlak = " << pressure << endl;
|
||||
}
|
||||
|
||||
|
||||
if (vm.count("temperature")) {
|
||||
cout << temperature << endl;
|
||||
}
|
||||
@@ -210,26 +238,46 @@ int main(int argc, char* argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (vm.count("brightness")) {
|
||||
string s = str(format("bright %d\r\n") % brightness);
|
||||
BOOST_LOG_TRIVIAL(debug) << "SET " << s ;
|
||||
serial.writeString(s);
|
||||
boost::this_thread::sleep(posix_time::milliseconds(100));
|
||||
}
|
||||
|
||||
if (vm.count("saturation")) {
|
||||
string s = str(format("satur %d\r\n") % saturation);
|
||||
BOOST_LOG_TRIVIAL(debug) << "SET " << s ;
|
||||
serial.writeString(s);
|
||||
boost::this_thread::sleep(posix_time::milliseconds(100));
|
||||
}
|
||||
|
||||
if (vm.count("contrast")) {
|
||||
string s = str(format("contr %d\r\n") % contrast);
|
||||
BOOST_LOG_TRIVIAL(debug) << "SET " << s ;
|
||||
serial.writeString(s);
|
||||
boost::this_thread::sleep(posix_time::milliseconds(100));
|
||||
}
|
||||
|
||||
if (vm.count("capture")) {
|
||||
|
||||
|
||||
serial.writeString("capture\r\n");
|
||||
boost::this_thread::sleep(posix_time::milliseconds(100));
|
||||
|
||||
serial.setTimeout(posix_time::milliseconds(500));
|
||||
|
||||
try {
|
||||
for (;;) {
|
||||
line = serial.readStringUntil("\r\n");
|
||||
if (line.rfind("[OK]",0) == 0)
|
||||
cout << line << endl;
|
||||
}
|
||||
} catch (...) {
|
||||
for (;;) {
|
||||
line = serial.readStringUntil("\r\n");
|
||||
if (line.rfind("[OK]",0) == 0)
|
||||
cout << line << endl;
|
||||
}
|
||||
} catch (...) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
serial.writeString("rb\r\n");
|
||||
boost::this_thread::sleep(posix_time::milliseconds(100));
|
||||
//serial.readChar(1);
|
||||
//serial.readChar(1);
|
||||
|
||||
modem.setSerialPort(&serial);
|
||||
modem.setFilePath(path);
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=usbserial-dw
|
||||
PKG_VERSION:=0.2.4
|
||||
PKG_RELEASE:=13
|
||||
PKG_VERSION:=0.3.7
|
||||
PKG_RELEASE:=2
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=https://git.bh.ttx.sk/jaro/usbserial-dw.git
|
||||
PKG_MIRROR_HASH:=
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=9fcdfaf6186c7c2b73ca788e8f0db0a676a9018c
|
||||
PKG_SOURCE_VERSION:=9603093b622b972c321e10982fa881f922dca690
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
|
||||
@@ -64,6 +64,7 @@ define Package/usbserial-dw/install
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/usbserial-dw $(1)/usr/bin/usbserial-dw
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_DATA) ./files/usbserial-dw.config $(1)/etc/config/usbserial
|
||||
$(INSTALL_BIN) ./files/usbserial-dw.sh $(1)/usr/bin/usbserial.sh
|
||||
endef
|
||||
|
||||
define Package/usbserial-dw/conffiles
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
config capture
|
||||
option port /dev/ttyUSB0
|
||||
option speed 115200
|
||||
option speed 460800
|
||||
option directory /tmp
|
||||
option file camera.jpg
|
||||
option url https://meranie.bh.ttx.sk/upload/image
|
||||
|
||||
@@ -1,51 +1,62 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2018 wongsyrone
|
||||
|
||||
|
||||
. /lib/functions.sh
|
||||
|
||||
|
||||
PROG=/usr/bin/usbserial-dw
|
||||
CURL=/usr/bin/curl
|
||||
|
||||
parse_capture() {
|
||||
|
||||
parse_capture() {
|
||||
local section="$1"
|
||||
local _port
|
||||
local _port
|
||||
local _speed
|
||||
local _dir
|
||||
local _dir
|
||||
local _file
|
||||
|
||||
config_get _port "$section" "port"
|
||||
config_get _speed "$section" "speed"
|
||||
config_get _dir "$section" "dir"
|
||||
|
||||
config_get _port "$section" "port"
|
||||
config_get _speed "$section" "speed"
|
||||
config_get _dir "$section" "directory"
|
||||
config_get _file "$section" "file"
|
||||
config_get _url "$section" "url"
|
||||
|
||||
$PROG --port $_port --speed $_speed --dir $_dir --file $_file
|
||||
cd $_dir
|
||||
$CURL -v -X POST -F "submit=OK" -F "file=@camera.jpg" $_url
|
||||
|
||||
echo $PROG --port $_port --speed $_speed --path $_dir --file $_file --capture
|
||||
$PROG --port $_port --speed $_speed --path $_dir --file $_file --capture
|
||||
cd $_dir
|
||||
echo $CURL -X POST -F "submit=OK" -F "file=@camera.jpg" $_url
|
||||
$CURL -X POST -F "submit=OK" -F "file=@camera.jpg" $_url
|
||||
rm $_file
|
||||
}
|
||||
|
||||
parse_post() {
|
||||
|
||||
parse_post() {
|
||||
local section="$1"
|
||||
local _host
|
||||
local _topic
|
||||
local _host
|
||||
local _topic
|
||||
local _mqtt_prg
|
||||
|
||||
config_get _host "$section" "host"
|
||||
config_get _topic "$section" "topic"
|
||||
|
||||
config_get _host "$section" "host"
|
||||
config_get _topic "$section" "topic"
|
||||
config_get _mqtt_prg "$section" "mqtt_prg"
|
||||
|
||||
|
||||
_tmp=`$PROG --temperature`
|
||||
_hum=`$PROG --humidity`
|
||||
_pre=`$PROG --pressure`
|
||||
|
||||
$_mqtt_prg -h $_host -t $_topic/temperature -m N:$_tmp
|
||||
$_mqtt_prg -h $_host -t $_topic/humidity -m N:$_hum
|
||||
$_mqtt_prg -h $_host -t $_topic/pressure -m N:$_pre
|
||||
|
||||
|
||||
echo $_mqtt_prg -h $_host -t $_topic/temperature -m N:${_tmp}
|
||||
$_mqtt_prg -h $_host -t $_topic/temperature -m N:${_tmp}
|
||||
echo $_mqtt_prg -h $_host -t $_topic/humidity -m N:${_hum}
|
||||
$_mqtt_prg -h $_host -t $_topic/humidity -m N:${_hum}
|
||||
echo $_mqtt_prg -h $_host -t $_topic/pressure -m N:${_pre}
|
||||
$_mqtt_prg -h $_host -t $_topic/pressure -m N:${_pre}}
|
||||
}
|
||||
|
||||
config_load usbserial
|
||||
config_foreach parse_capture capture
|
||||
config_foreach parse_post post
|
||||
start() {
|
||||
echo "[OK] Starting USB serial"
|
||||
config_load usbserial
|
||||
config_foreach parse_capture capture
|
||||
config_foreach parse_post post
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo "[OK] Stoping USB serial"
|
||||
killall -9 $PROG
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user