diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..4ae4bdc --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +**/.git +.gitignore +.gitattributes +__pycache__ +**/__pycache__ \ No newline at end of file diff --git a/README.md b/README.md index a64068b..adfbcce 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ this is a home monitoring system written in python and using [zmq](https://www.zeromq.org). +_NOTE: this project will be renamed, most likely to `roomie`._ + ![sudoisbot in grafna](docs/img/sudoisbot-grafana.png) ## related projects diff --git a/misc/arduino/current/arduino_current.ino b/extra/arduino/current/arduino_current.ino similarity index 100% rename from misc/arduino/current/arduino_current.ino rename to extra/arduino/current/arduino_current.ino diff --git a/misc/arduino/rain/rain.ino b/extra/arduino/rain/rain.ino similarity index 100% rename from misc/arduino/rain/rain.ino rename to extra/arduino/rain/rain.ino diff --git a/extra/dht/dht.c b/extra/dht/dht.c new file mode 100644 index 0000000..ec76169 --- /dev/null +++ b/extra/dht/dht.c @@ -0,0 +1,126 @@ +/* + * dht.c: + * read temperature and humidity from DHT11 or DHT22 sensor + * + * depends on 'wiringpi' apt package + * based on: http://www.uugear.com/portfolio/read-dht1122-temperature-humidity-sensor-from-raspberry-pi/ + * + * wiring pi layout: http://wiringpi.com/pins/ + + */ + +#include +#include +#include +#include + +#define MAX_TIMINGS 85 +#define MAX_TRIES 5 + +int data[5] = { 0, 0, 0, 0, 0 }; + +int print_json(int dht_pin) { + uint8_t laststate = HIGH; + uint8_t counter = 0; + uint8_t j = 0, i; + + data[0] = data[1] = data[2] = data[3] = data[4] = 0; + + /* pull pin down for 18 milliseconds */ + pinMode(dht_pin, OUTPUT); + digitalWrite(dht_pin, LOW); + delay(18); + + /* prepare to read the pin */ + pinMode(dht_pin, INPUT); + //printf("%i\n", laststate); + + /* detect change and read data */ + for (i = 0; i < MAX_TIMINGS; i++) { + counter = 0; + + while (digitalRead(dht_pin) == laststate ) { + counter++; + delayMicroseconds(1); + if (counter == 255) { + //printf("inner 255 at %i\n", i); + break; + } + } + laststate = digitalRead(dht_pin); + + if (counter == 255) { + break; + } + + /* ignore first 3 transitions */ + if ( (i >= 4) && (i % 2 == 0) ) { + /* shove each bit into the storage bytes */ + data[j / 8] <<= 1; + if (counter > 16) { + data[j / 8] |= 1; + } + j++; + } + } + + /* + * check we read 40 bits (8bit x 5 ) + verify checksum in the last byte + * print it out if data is good + */ + if ( (j>=40) && (data[4] == ((data[0]+data[1]+data[2]+data[3]) & 0xFF)) ) { + float h = (float)((data[0] << 8) + data[1]) / 10; + if (h > 100) { + h = data[0]; // for DHT11 + } + float c = (float)(((data[2] & 0x7F) << 8) + data[3]) / 10; + if (c > 125) { + c = data[2]; // for DHT11 + } + if (data[2] & 0x80) { + c = -c; + } + printf("{\"humidity\": %.1f, \"temp\": %.1f, \"dht_pin\": %d}\n", h, c, dht_pin); + return 0; + } else { + // printf("{\"error\": \"checksum\"}\n" ); + return 1; + } +} + +int main(int argc, char* argv[]) { + if (wiringPiSetup() == -1) { + printf("{\"error\": \"please install wiringPi\"}\n" ); + exit(1); + } + + // defaulting to pin 3 + // in wiringPi, dht_pin 3 is GPIO-22 + // reference: http://wiringpi.com/pins/ + int dht_pin = 3; + if (argc == 2) { + // read first argument and try to parse as string + + if (sscanf(argv[1], "%i", &dht_pin) != 1) { + printf("{\"error\": \"parsing DHT_PIN failed\"}\n"); + exit(3); + } + } else if (argc != 1) { + printf("{\"error\": \"usage: ./dht [DHT_PIN]\"}\n" ); + exit(2); + } + + int i; + int dht_res = 1; + while (dht_res !=0 && i < MAX_TRIES) { + delay(2000); + dht_res = print_json(dht_pin); + i++; + } + + if (dht_res != 0) { + printf("{\"error\": \"no valid data\", \"dht_pin\": %d}\n", dht_pin); + } + + return(dht_res); +} diff --git a/misc/dht/dht.c b/misc/dht/dht.c deleted file mode 100644 index 3795bcc..0000000 --- a/misc/dht/dht.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * dht.c: - * read temperature and humidity from DHT11 or DHT22 sensor - * - * depends on 'wiringpi' apt package - */ - -#include -#include -#include -#include - -#define MAX_TIMINGS 85 - -int data[5] = { 0, 0, 0, 0, 0 }; - -void print_json(int dht_pin) { - uint8_t laststate = HIGH; - uint8_t counter = 0; - uint8_t j = 0, i; - - data[0] = data[1] = data[2] = data[3] = data[4] = 0; - - /* pull pin down for 18 milliseconds */ - pinMode(dht_pin, OUTPUT); - digitalWrite(dht_pin, LOW); - delay(18); - - /* prepare to read the pin */ - pinMode(dht_pin, INPUT); - - /* detect change and read data */ - for (i = 0; i < MAX_TIMINGS; i++) { - counter = 0; - while ( digitalRead(dht_pin) == laststate ) { - counter++; - delayMicroseconds(1); - if (counter == 255) { - break; - } - } - laststate = digitalRead(dht_pin); - - if (counter == 255) { - break; - } - - /* ignore first 3 transitions */ - if ( (i >= 4) && (i % 2 == 0) ) { - /* shove each bit into the storage bytes */ - data[j / 8] <<= 1; - if (counter > 16) - data[j / 8] |= 1; - j++; - } - } - - /* - * check we read 40 bits (8bit x 5 ) + verify checksum in the last byte - * print it out if data is good - */ - if ((j >= 40) && (data[4] == ((data[0]+data[1]+data[2]+data[3]) & 0xFF))) { - float h = (float)((data[0] << 8) + data[1]) / 10; - if ( h > 100 ) { - h = data[0]; // for DHT11 - } - float c = (float)(((data[2] & 0x7F) << 8) + data[3]) / 10; - if ( c > 125 ) { - c = data[2]; // for DHT11 - } - if ( data[2] & 0x80 ) { - c = -c; - } - printf("{\"humidity\": %.1f, \"temp\": %.1f}\n", h, c); - } else { - printf("{\"error\": \"checksum\"}\n" ); - } -} - -int main(int argc, char *argv[]) { - if (wiringPiSetup() == -1) { - exit(1); - } - /* dht_pin 3 is GPIO-22 */ - int dht_pin; - if (argc > 0 && sscanf(argv[1], "%i", &dht_pin) != 1) { - exit(2); - } - - print_json(dht_pin); - return(0); -} diff --git a/scripts/docker-build.sh b/scripts/build/docker-build.sh similarity index 100% rename from scripts/docker-build.sh rename to scripts/build/docker-build.sh diff --git a/scripts/docker-run.sh b/scripts/build/docker-run.sh similarity index 100% rename from scripts/docker-run.sh rename to scripts/build/docker-run.sh diff --git a/scripts/docker.env b/scripts/build/docker.env similarity index 100% rename from scripts/docker.env rename to scripts/build/docker.env diff --git a/sudoisbot/telegram/listener.py b/scripts/misc/telegram/listener.py similarity index 100% rename from sudoisbot/telegram/listener.py rename to scripts/misc/telegram/listener.py diff --git a/sudoisbot/telegram/sendmsg.py b/scripts/misc/telegram/sendmsg.py similarity index 100% rename from sudoisbot/telegram/sendmsg.py rename to scripts/misc/telegram/sendmsg.py diff --git a/sudoisbot/telegram/sendtelegram.py b/scripts/misc/telegram/sendtelegram.py similarity index 100% rename from sudoisbot/telegram/sendtelegram.py rename to scripts/misc/telegram/sendtelegram.py diff --git a/sudoisbot/telegram/tglistener.py b/scripts/misc/telegram/tglistener.py similarity index 100% rename from sudoisbot/telegram/tglistener.py rename to scripts/misc/telegram/tglistener.py diff --git a/sudoisbot/util/common.py b/scripts/misc/util/common.py similarity index 100% rename from sudoisbot/util/common.py rename to scripts/misc/util/common.py diff --git a/sudoisbot/util/csv2db.py b/scripts/misc/util/csv2db.py similarity index 100% rename from sudoisbot/util/csv2db.py rename to scripts/misc/util/csv2db.py diff --git a/sudoisbot/util/csv2influx.py b/scripts/misc/util/csv2influx.py similarity index 100% rename from sudoisbot/util/csv2influx.py rename to scripts/misc/util/csv2influx.py diff --git a/sudoisbot/util/csv2json.py b/scripts/misc/util/csv2json.py similarity index 100% rename from sudoisbot/util/csv2json.py rename to scripts/misc/util/csv2json.py diff --git a/sudoisbot/util/fromfirstlog.py b/scripts/misc/util/fromfirstlog.py similarity index 100% rename from sudoisbot/util/fromfirstlog.py rename to scripts/misc/util/fromfirstlog.py diff --git a/sudoisbot/util/graphtemps.py b/scripts/misc/util/graphtemps.py similarity index 100% rename from sudoisbot/util/graphtemps.py rename to scripts/misc/util/graphtemps.py diff --git a/sudoisbot/util/guide/MDP.py b/scripts/misc/util/guide/MDP.py similarity index 100% rename from sudoisbot/util/guide/MDP.py rename to scripts/misc/util/guide/MDP.py diff --git a/sudoisbot/util/guide/majordomo.py b/scripts/misc/util/guide/majordomo.py similarity index 100% rename from sudoisbot/util/guide/majordomo.py rename to scripts/misc/util/guide/majordomo.py diff --git a/sudoisbot/util/guide/oldpirate.py b/scripts/misc/util/guide/oldpirate.py similarity index 100% rename from sudoisbot/util/guide/oldpirate.py rename to scripts/misc/util/guide/oldpirate.py diff --git a/sudoisbot/util/guide/paranoidpirate.py b/scripts/misc/util/guide/paranoidpirate.py similarity index 100% rename from sudoisbot/util/guide/paranoidpirate.py rename to scripts/misc/util/guide/paranoidpirate.py diff --git a/sudoisbot/util/guide_modified/lpclient.py b/scripts/misc/util/guide_modified/lpclient.py similarity index 100% rename from sudoisbot/util/guide_modified/lpclient.py rename to scripts/misc/util/guide_modified/lpclient.py diff --git a/sudoisbot/util/guide_modified/ppworker.py b/scripts/misc/util/guide_modified/ppworker.py similarity index 100% rename from sudoisbot/util/guide_modified/ppworker.py rename to scripts/misc/util/guide_modified/ppworker.py diff --git a/sudoisbot/util/json2influx.py b/scripts/misc/util/json2influx.py similarity index 100% rename from sudoisbot/util/json2influx.py rename to scripts/misc/util/json2influx.py diff --git a/sudoisbot/util/json2mariadb.py b/scripts/misc/util/json2mariadb.py similarity index 100% rename from sudoisbot/util/json2mariadb.py rename to scripts/misc/util/json2mariadb.py diff --git a/sudoisbot/util/notifier.py b/scripts/misc/util/notifier.py similarity index 100% rename from sudoisbot/util/notifier.py rename to scripts/misc/util/notifier.py diff --git a/sudoisbot/util/oldproxy/majordomo.py b/scripts/misc/util/oldproxy/majordomo.py similarity index 100% rename from sudoisbot/util/oldproxy/majordomo.py rename to scripts/misc/util/oldproxy/majordomo.py diff --git a/sudoisbot/util/oldproxy/paranoidpirate.py b/scripts/misc/util/oldproxy/paranoidpirate.py similarity index 100% rename from sudoisbot/util/oldproxy/paranoidpirate.py rename to scripts/misc/util/oldproxy/paranoidpirate.py diff --git a/sudoisbot/util/oldproxy/proxy.py b/scripts/misc/util/oldproxy/proxy.py similarity index 100% rename from sudoisbot/util/oldproxy/proxy.py rename to scripts/misc/util/oldproxy/proxy.py diff --git a/sudoisbot/util/oldproxy/simplepirate.py b/scripts/misc/util/oldproxy/simplepirate.py similarity index 100% rename from sudoisbot/util/oldproxy/simplepirate.py rename to scripts/misc/util/oldproxy/simplepirate.py diff --git a/sudoisbot/util/pubtest.py b/scripts/misc/util/pubtest.py similarity index 100% rename from sudoisbot/util/pubtest.py rename to scripts/misc/util/pubtest.py diff --git a/sudoisbot/util/recenttemps.py b/scripts/misc/util/recenttemps.py similarity index 100% rename from sudoisbot/util/recenttemps.py rename to scripts/misc/util/recenttemps.py diff --git a/sudoisbot/util/suball.py b/scripts/misc/util/suball.py similarity index 100% rename from sudoisbot/util/suball.py rename to scripts/misc/util/suball.py diff --git a/sudoisbot/util/temper_csv_converter.py b/scripts/misc/util/temper_csv_converter.py similarity index 100% rename from sudoisbot/util/temper_csv_converter.py rename to scripts/misc/util/temper_csv_converter.py diff --git a/sudoisbot/util/updatetemps.sh b/scripts/misc/util/updatetemps.sh similarity index 100% rename from sudoisbot/util/updatetemps.sh rename to scripts/misc/util/updatetemps.sh