40 sprintf( buff,
"%lu", millis() );
42 response -> print( buff );
50 sprintf( buff,
"%lu", micros() );
52 response -> print( buff );
65 second = millis() / 1000;
67 day = ( second / 24 ) / 3600;
68 second %= (
unsigned long)24 * 3600;
76 sprintf( buff,
"%d days, %d:%d:%d", day, hour, minute, second );
78 response -> print( buff );
92 argResult = sscanf( args,
"%d %d", &pin, &direction );
97 response -> print( F(
"Argument error!" ) );
99 response -> print( (
const char*)
"Argument error!" );
106 if( pin < 0 || direction < 0 ){
109 response -> print( F(
"Argument error!" ) );
111 response -> print( (
const char*)
"Argument error!" );
118 if( direction == 0 ){
120 pinMode( pin, INPUT );
124 else if( direction == 1 ){
126 pinMode( pin, OUTPUT );
133 response -> print( F(
"Argument error! Second argument has to be 1 or 0!" ) );
135 response -> print( (
const char*)
"Argument error! Second argument has to be 1 or 0!" );
149 argResult = sscanf( args,
"%d %d", &pin, &state );
151 if( argResult != 2 ){
154 response -> print( F(
"Argument error!" ) );
156 response -> print( (
const char*)
"Argument error!" );
163 if( pin < 0 || state < 0 ){
166 response -> print( F(
"Argument error!" ) );
168 response -> print( (
const char*)
"Argument error!" );
177 digitalWrite( pin, LOW );
181 else if( state == 1 ){
183 digitalWrite( pin, HIGH );
190 response -> print( F(
"Argument error! Second argument has to be 1 or 0!" ) );
192 response -> print( (
const char*)
"Argument error! Second argument has to be 1 or 0!" );
205 argResult = sscanf( args,
"%d", &pin );
207 if( argResult != 1 ){
210 response -> print( F(
"Argument error!" ) );
212 response -> print( (
const char*)
"Argument error!" );
222 response -> print( F(
"Argument error!" ) );
224 response -> print( (
const char*)
"Argument error!" );
231 response -> print( digitalRead( pin ) );
235#ifdef ARDUINO_AVR_UNO
243 argResult = sscanf( args,
"%d", &pin );
245 if( argResult != 1 ){
247 response -> print( F(
"Argument error!" ) );
279 response -> print( F(
"Argument error!" ) );
284 response -> print( analogRead( pin ) );
290#ifdef ARDUINO_AVR_LEONARDO
298 argResult = sscanf( args,
"%d", &pin );
300 if( argResult != 1 ){
302 response -> print( F(
"Argument error!" ) );
358 response -> print( F(
"Argument error!" ) );
363 response -> print( analogRead( pin ) );
369#if defined( ESP32 ) || ( ESP8266 )
377 argResult = sscanf( args,
"%d", &pin );
379 if( argResult != 1 ){
381 response -> print( (
const char*)
"Argument error!" );
388 response -> print( (
const char*)
"Argument error!" );
393 response -> print( analogRead( pin ) );
399#if defined( ESP32 ) || ( ESP8266 )
403 response -> println( (
const char*)
"Wi-Fi:\r\n" );
405 response -> print( (
const char*)
"\tIP Address . . : " );
406 response -> println( WiFi.localIP() );
408 response -> print( (
const char*)
"\tSubnet Mask . . : " );
409 response -> println( WiFi.subnetMask() );
411 response -> print( (
const char*)
"\tDefault Gateway : " );
412 response -> println( WiFi.gatewayIP() );
418 response -> println( (
const char*)
"Wi-Fi:\r\n" );
420 response -> print( (
const char*)
"\tMode: " );
422 switch( WiFi.getMode() ){
425 response -> println(
"Station" );
429 response -> println(
"Acces Point" );
432 case WIFI_MODE_APSTA:
433 response -> println(
"Acces Point & Station" );
437 response -> println(
"Unknown" );
442 response -> print( (
const char*)
"\tRSSI: " );
443 response -> print( WiFi.RSSI() );
444 response -> println(
"dBm" );
446 response -> print( (
const char*)
"\tMAC : " );
447 response -> println( WiFi.macAddress() );
455 bool hasLocked =
false;
457 response -> print( (
const char*)
"Scanning for available networks... " );
459 num = WiFi.scanNetworks();
461 response -> println( (
const char*)
"[ OK ]:" );
463 for( i = 0; i < num; i++ ){
465 if( WiFi.encryptionType( i ) != WIFI_AUTH_OPEN ){
467 response -> print(
"\t* " );
474 response -> print(
"\t " );
478 response -> print( WiFi.SSID( i ) );
480 response -> println();
485 response -> print( (
const char*)
"\r\n * means closed network." );
497 int daylightOffset_sec;
498 char ntpServer[32] =
"";
501 argResult = sscanf( args,
"%d %d %s", &gmtOffset_sec, &daylightOffset_sec, ntpServer );
503 if( argResult == 3 ){
505 configTime( gmtOffset_sec, daylightOffset_sec, ntpServer );
506 response -> print( (
const char*)
"Time configured." );
511 argResult = sscanf( args,
"%d %d", &gmtOffset_sec, &daylightOffset_sec );
513 if( argResult == 2 ){
515 configTime( gmtOffset_sec, daylightOffset_sec, (
const char*)
"pool.ntp.org" );
516 response -> print( (
const char*)
"Time configured with default NTP server: pool.ntp.org" );
523 response -> print( (
const char*)
"Argument error!" );
534 if( !getLocalTime( &timeInfo ) ){
536 response -> print(
"Failed to obtain time!" );
541 response -> print( &timeInfo,
"%A, %B %d %Y %H:%M:%S" );
551 uint32_t rowCounter = 0;
553 response -> print( F(
555 " :=*%@@@@%#+- :=*%@@@@%#+- \r\n"
556 " +%@@@@@@@@@@@@@#- :*@@@@@@@@@@@@@@*: \r\n"
557 " =@@@@@*=-:::-+#@@@@@= :#@@@@%*=::::-+%@@@@#. \r\n"
558 " *@@@@- .=@@@@%:*@@@@*: .#@@@@. \r\n"
559 "+@@@% +@@@@@@@%: .## +@@@% \r\n"
560 "@@@@- .+++++++ -@@@@@* -+*@@++- @@@@:\r\n"
561 "@@@@- .+++++++ .%@@@@+ =+*@@*+- %@@@:\r\n"
562 "*@@@# =@@@@@@@#. .## -@@@@ \r\n"
563 " #@@@%: -%@@@@=#@@@@+. +@@@@: \r\n"
564 " *@@@@%=:. :-*@@@@@* -%@@@@#=:. .:-*@@@@%: \r\n"
565 " :*@@@@@@@@@@@@@@@+. -#@@@@@@@@@@@@@@%= \r\n"
566 " -+#@@@@@@%*=: -+#@@@@@@%*=. \r\n"
569 response -> print( F(
"\033[" ) );
571 response -> print( F(
"A\033[51C" ) );
573 #ifdef NEOFETCH_FW_NAME
574 response -> print( F(
"\033[1;31mFW\033[0;37m: " ) );
576 response -> print( F(
"\r\n\033[51C" ) );
580 #ifdef NEOFETCH_CPU_TYPE
581 response -> print( F(
"\033[1;31mCPU\033[0;37m: " ) );
582 response -> print( F( NEOFETCH_CPU_TYPE ) );
583 response -> print( F(
"\r\n\033[51C" ) );
587 #ifdef NEOFETCH_CPU_TYPE_AUTO
588 response -> print( F(
"\033[1;31mCPU\033[0;37m: " ) );
590 #ifdef ARDUINO_AVR_UNO
591 response -> print( F(
"AVR - Arduino UNO" ) );
592 #elif ARDUINO_AVR_LEONARDO
593 response -> print( F(
"AVR - Arduino Leonardo" ) );
595 response -> print( F(
"Unknown" ) );
598 response -> print( F(
"\r\n\033[51C" ) );
602 #ifdef NEOFETCH_COMPILER
603 response -> print( F(
"\033[1;31mCompiler\033[0;37m: GCC " ) );
605 response -> print( F(
"\r\n\033[51C" ) );
609 #ifdef NEOFETCH_COMPILE_DATE
610 response -> print( F(
"\033[1;31mCompile Date\033[0;37m: " ) );
612 response -> print( F(
"\r\n\033[51C" ) );
616 #ifdef NEOFETCH_TERMINAL
617 response -> print( F(
"\033[1;31mTerminal\033[0;37m: " ) );
619 response -> print( F(
"\r\n\033[51C" ) );
623 #ifdef NEOFETCH_COMMAND_PARSER
624 response -> print( F(
"\033[1;31mCMD Parser\033[0;37m: " ) );
626 response -> print( F(
"\r\n\033[51C" ) );
630 #ifdef NEOFETCH_AUTHOR
631 response -> print( F(
"\033[1;31mAuthor\033[0;37m: " ) );
633 response -> print( F(
"\r\n\033[51C" ) );
637 #ifdef NEOFETCH_LICENSE
638 response -> print( F(
"\033[1;31mLicense\033[0;37m: " ) );
640 response -> print( F(
"\r\n\033[51C" ) );
644 response -> print( F(
"\033[" ) );
646 response -> print(
'B' );
652const char* neofetchLogo = {
654 " :=*%@@@@%#+- :=*%@@@@%#+- \r\n"
655 " +%@@@@@@@@@@@@@#- :*@@@@@@@@@@@@@@*: \r\n"
656 " =@@@@@*=-:::-+#@@@@@= :#@@@@%*=::::-+%@@@@#. \r\n"
657 " *@@@@- .=@@@@%:*@@@@*: .#@@@@. \r\n"
658 "+@@@% +@@@@@@@%: .## +@@@% \r\n"
659 "@@@@- .+++++++ -@@@@@* -+*@@++- @@@@:\r\n"
660 "@@@@- .+++++++ .%@@@@+ =+*@@*+- %@@@:\r\n"
661 "*@@@# =@@@@@@@#. .## -@@@@ \r\n"
662 " #@@@%: -%@@@@=#@@@@+. +@@@@: \r\n"
663 " *@@@@%=:. :-*@@@@@* -%@@@@#=:. .:-*@@@@%: \r\n"
664 " :*@@@@@@@@@@@@@@@+. -#@@@@@@@@@@@@@@%= \r\n"
665 " -+#@@@@@@%*=: -+#@@@@@@%*=. \r\n"
671 uint32_t rowCounter = 0;
673 response -> print( neofetchLogo );
675 response -> print(
"\033[" );
677 response -> print(
"A\033[51C" );
679 #ifdef NEOFETCH_FW_NAME
680 response -> print(
"\033[1;31mFW\033[0;37m: " );
682 response -> print(
"\r\n\033[51C" );
686 #ifdef NEOFETCH_CPU_TYPE
687 response -> print(
"\033[1;31mCPU\033[0;37m: " );
688 response -> print( NEOFETCH_CPU_TYPE );
689 response -> print(
"\r\n\033[51C" );
693 #ifdef NEOFETCH_CPU_TYPE_AUTO
694 response -> print(
"\033[1;31mCPU\033[0;37m: " );
697 response -> print(
"ESP32" );
699 response -> print(
"ESP8266" );
701 response -> print(
"Unknown" );
704 response -> print(
"\r\n\033[51C" );
708 #ifdef NEOFETCH_COMPILER
709 response -> print(
"\033[1;31mCompiler\033[0;37m: GCC " );
711 response -> print(
"\r\n\033[51C" );
715 #ifdef NEOFETCH_COMPILE_DATE
716 response -> print(
"\033[1;31mCompile Date\033[0;37m: " );
718 response -> print(
"\r\n\033[51C" );
722 #ifdef NEOFETCH_TERMINAL
723 response -> print(
"\033[1;31mTerminal\033[0;37m: " );
725 response -> print(
"\r\n\033[51C" );
729 #ifdef NEOFETCH_COMMAND_PARSER
730 response -> print(
"\033[1;31mCMD Parser\033[0;37m: " );
732 response -> print(
"\r\n\033[51C" );
736 #ifdef NEOFETCH_AUTHOR
737 response -> print(
"\033[1;31mAuthor\033[0;37m: " );
739 response -> print(
"\r\n\033[51C" );
743 #ifdef NEOFETCH_LICENSE
744 response -> print(
"\033[1;31mLicense\033[0;37m: " );
746 response -> print(
"\r\n\033[51C" );
750 response -> print(
"\033[" );
752 response -> print(
"B" );
761 response -> println( F(
"Rebooting..." ) );
763 response -> println( (
const char*)
"Rebooting..." );
766 #if defined( ESP32 ) || ( ESP8266 )
772 wdt_enable( WDTO_15MS );
788 float f = atof( args );
790 response -> print( sin( f ), 6 );
796 float f = atof( args );
798 response -> print( cos( f ), 6 );
807 argResult = sscanf( args,
"%d", &num );
809 if( argResult != 1 ){
812 response -> print( F(
"Argument error!" ) );
814 response -> print( (
const char*)
"Argument error!" );
821 response -> print( !num );
831 argResult = sscanf( args,
"%d %d", &min, &max );
833 if( argResult != 2 ){
836 response -> print( F(
"Argument error!" ) );
838 response -> print( (
const char*)
"Argument error!" );
848 response -> print( F(
"Argument erro! First argument is min, second is max!" ) );
850 response -> print( (
const char*)
"Argument erro! First argument is min, second is max!" );
857 response -> print( random( min, max ) );
863 float f = atof( args );
865 response -> print( abs( f ) );
void commander_wifiStat_func(char *args, Stream *response)
Premade function for wifiStat command.
void commander_sin_func(char *args, Stream *response)
Premade function for sin command.
void commander_uptime_func(char *args, Stream *response)
Premade function for uptime command.
void commander_digitalWrite_func(char *args, Stream *response)
Premade function for digitalWrite command.
void commander_digitalRead_func(char *args, Stream *response)
Premade function for digitalRead command.
void commander_millis_func(char *args, Stream *response)
Premade function for millis command.
void commander_not_func(char *args, Stream *response)
Premade function for not command.
void commander_dateTime_func(char *args, Stream *response)
Premade function for wifiScan command.
void commander_configTime_func(char *args, Stream *response)
Premade function for wifiScan command.
void commander_wifiScan_func(char *args, Stream *response)
Premade function for wifiScan command.
void commander_neofetch_func(char *args, Stream *response)
Premade function for neofetch command.
void commander_reboot_func(char *args, Stream *response)
Premade function for reboot command.
void commander_cos_func(char *args, Stream *response)
Premade function for cos command.
void commander_abs_func(char *args, Stream *response)
Premade function for abs command.
void commander_pinMode_func(char *args, Stream *response)
Premade function for pinMode command.
void commander_analogRead_func(char *args, Stream *response)
Premade function for analogRead command.
void commander_micros_func(char *args, Stream *response)
Premade function for micros command.
void commander_random_func(char *args, Stream *response)
Premade function for random command.
void commander_ipconfig_func(char *args, Stream *response)
Premade function for ipconfig command.
#define NEOFETCH_LOGO_HEIGHT
The neofetch logo have this many lines.
#define NEOFETCH_TERMINAL
#define NEOFETCH_COMMAND_PARSER
#define NEOFETCH_COMPILE_DATE
#define NEOFETCH_COMPILER