- [Show page]
- [Old revisions]
- [[unknown link type]]
- []
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
hardware:majak [2016/02/23 21:33] admin created |
hardware:majak [2016/02/28 01:45] (current) admin |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| schema je jednoduche | schema je jednoduche | ||
| - | Client: | + | * Client: |
| - | nagios zavola prikaz "echo "nejaky problem" | netcat 10.0.5.5:6555 | + | nagios zavola prikaz "echo "nejaky problem" | netcat 10.0.5.5:6555 |
| - | Server s majakem: | + | * Server s majakem: |
| - | inetd posloucha na portu 6555 a spousti skript /home/majak/bin/majak.sh, ktery zapise na /dev/ttyUSB0 prikazy "start_blink" nebo "stop_blink" | + | inetd posloucha na portu 6555 a spousti skript /home/majak/bin/majak.sh, ktery zapise na /dev/ttyUSB0 prikazy "start_blink" nebo "stop_blink" |
| - | Overit funkcnost majaku na strane serveru muzete na dvou kontrolnich mistech | + | ====== Overit funkcnost majaku ====== |
| + | na strane serveru muzete na dvou kontrolnich mistech | ||
| 1. zapsat primo na /dev/ttyUSB0 | 1. zapsat primo na /dev/ttyUSB0 | ||
| echo start_blink > /dev/ttyUSB0 | echo start_blink > /dev/ttyUSB0 | ||
| 2. zapsat na localhost port 6555 | 2. zapsat na localhost port 6555 | ||
| + | <code> | ||
| root@cerna-ng:~# telnet localhost 6555 | root@cerna-ng:~# telnet localhost 6555 | ||
| Trying ::1... | Trying ::1... | ||
| Line 36: | Line 38: | ||
| root@cerna-ng:/etc/init.d# | root@cerna-ng:/etc/init.d# | ||
| </code> | </code> | ||
| + | |||
| + | ====== Konfigurace nagiosu ====== | ||
| + | <code> | ||
| + | define command { | ||
| + | command_name notify-by-majak | ||
| + | command_line /usr/bin/printf "%b" "Neco je $SERVICESTATE$" | nc 10.0.5.5 6555 | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | ====== Konfigurace Inetd.conf ====== | ||
| + | <code> | ||
| + | 6555 stream tcp nowait majak /home/majak/bin/majak.sh noarg | ||
| + | </code> | ||
| + | |||
| + | ====== Poslouchajici skript majak.sh ======= | ||
| + | Musite pridat uzivatele //majak// a napriklad na Debianu ho jeste dat do skupiny 'dialout', protoze jinak nema prava sahat na /dev/ttyUSB0. | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/sh | ||
| + | |||
| + | if grep -q CRITICAL; then | ||
| + | cmd='start_blink' | ||
| + | else | ||
| + | cmd='stop_blink' | ||
| + | fi | ||
| + | |||
| + | echo $cmd >/dev/ttyUSB0 | ||
| + | </code> | ||
| + | |||
| + | |||
| + | Na ''/dev/ttyUSB0'' je pripojene arduino s timto programem | ||
| + | <code c> | ||
| + | /* | ||
| + | Majacek - Nagios | ||
| + | */ | ||
| + | |||
| + | #define MAX_INPUT_STR 200 | ||
| + | #define START_BLINK 0 | ||
| + | #define STOP_BLINK 1 | ||
| + | #define USER_STOP 2 | ||
| + | |||
| + | String input_str = ""; // a string to hold incoming serial data | ||
| + | volatile boolean string_complete = false; // whether the string is complete | ||
| + | |||
| + | const String cmds[] = { | ||
| + | "start_blink", | ||
| + | "stop_blink", | ||
| + | "user_stop", | ||
| + | "", | ||
| + | ""}; | ||
| + | |||
| + | int relay = 3; | ||
| + | int led = 13; | ||
| + | |||
| + | | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | pinMode(relay, OUTPUT); | ||
| + | pinMode(led, OUTPUT); | ||
| + | digitalWrite(relay, HIGH); | ||
| + | digitalWrite(led, LOW); | ||
| + | |||
| + | // 3x blikni, at vim, ze jsi ok :) | ||
| + | digitalWrite(led, HIGH); | ||
| + | delay(400); | ||
| + | digitalWrite(led, LOW); | ||
| + | delay(200); | ||
| + | digitalWrite(led, HIGH); | ||
| + | delay(400); | ||
| + | digitalWrite(led, LOW); | ||
| + | delay(200); | ||
| + | digitalWrite(led, HIGH); | ||
| + | delay(400); | ||
| + | digitalWrite(led, LOW); | ||
| + | input_str.reserve(MAX_INPUT_STR); | ||
| + | | ||
| + | // Serial.println("Initialized."); | ||
| + | } | ||
| + | |||
| + | |||
| + | int parse_input(String s) { | ||
| + | int i = 0; | ||
| + | | ||
| + | while (cmds[i] != "") { | ||
| + | // Serial.print("Debug parse_input cmd: "); | ||
| + | // Serial.println(cmds[i]); | ||
| + | if (s == cmds[i]) | ||
| + | break; | ||
| + | i++; | ||
| + | } | ||
| + | | ||
| + | return i; | ||
| + | } | ||
| + | |||
| + | void start_blink() { | ||
| + | digitalWrite(relay, LOW); | ||
| + | digitalWrite(led, HIGH); | ||
| + | } | ||
| + | |||
| + | void stop_blink() { | ||
| + | digitalWrite(relay, HIGH); | ||
| + | digitalWrite(led, LOW); | ||
| + | } | ||
| + | |||
| + | |||
| + | void loop() { | ||
| + | |||
| + | if (string_complete) { | ||
| + | // Serial.println(input_str); | ||
| + | | ||
| + | int cmd = parse_input(input_str); | ||
| + | switch (cmd) { | ||
| + | case START_BLINK: | ||
| + | start_blink(); | ||
| + | break; | ||
| + | case STOP_BLINK: | ||
| + | stop_blink(); | ||
| + | break; | ||
| + | case USER_STOP: | ||
| + | stop_blink(); | ||
| + | break; | ||
| + | default: | ||
| + | // Serial.print("ERROR: Unknown command: "); | ||
| + | // Serial.println(input_str); | ||
| + | ; | ||
| + | } | ||
| + | | ||
| + | input_str = ""; | ||
| + | string_complete = false; | ||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | /* some debug | ||
| + | Serial.print("This is the input char:"); | ||
| + | int ord = in_char; | ||
| + | int enter = '\n'; | ||
| + | Serial.print(enter); | ||
| + | Serial.println(ord); | ||
| + | */ | ||
| + | |||
| + | void serialEvent() { | ||
| + | while (Serial.available()) { | ||
| + | char in_char = (char)Serial.read(); | ||
| + | |||
| + | | ||
| + | if (in_char == '\n') | ||
| + | string_complete = true; | ||
| + | else | ||
| + | input_str += in_char; | ||
| + | |||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
hardware/majak.1456259603.txt.gz · Last modified: 2016/02/23 21:33 by admin


