Android-baserade hemautomation via internet och Ethernet- (5 / 8 steg)
Steg 5: Programvara (Android apps av apps uppfinnare, Firmware av MPLAB)
#include "fileheader.h"
CONST char huvudsida [] = "C %0";
CONST char time_page [] = "T %1";
char debug [7].
Int32 http_get_page(char *file_str)
{
Int32 file_loc = 0;
int8 jag = 0;
int8 dagar = 0;
int8 månad = 0;
int8 år = 0;
int8 timme = 0;
int8 min = 0;
int8 andra = 0;
int8 dow = 0;
statiska char dimmer [] = "/ D";
statiska char fläkt [] = "/ F";
statiska char powersocket [] = "/ S";
statiska char alarmsystem [] = "/a";
statiska char magneticlock [] = "/ L";
statiska char stödberättigandelistanMedlemsstatenKontrollera [] = "/ C";
statiska char rtc_io [] = "/ T";
Felsöka [0] = file_str [0];
Felsöka [1] = file_str [1].
Felsöka [2] = file_str [2].
Felsöka [3] = file_str [3].
Felsöka [4] = file_str [4].
Dimmer kontroll
om (stricmp(file_str[1],dimmer[1])==0)
{
Jag =(file_str[2] & 0b11001111) * 100 + (file_str [3] & 0b11001111) * 10 + (file_str [4] & 0b11001111);
bulb_brightness(i);
file_loc=label_address(main_page);
}
larm kontroll
om (stricmp(file_str,alarmsystem)==0)
{
toggle_alarm_state();
file_loc=label_address(main_page);
}
rtc_io
om (stricmp(file_str[1],rtc_io[1])==0)
{
IF(file_str[2]=='s') //set tid
{
dagar = (file_str [3] & 0b11001111) * 10 + (file_str [4] & 0b11001111);
månad = (file_str [5] & 0b11001111) * 10 + (file_str [6] & 0b11001111);
år = (file_str [7] & 0b11001111) * 10 + (file_str [8] & 0b11001111);
Dow = (file_str [9] & 0b11001111);
timme = (file_str [10] & 0b11001111) * 10 + (file_str [11] & 0b11001111); min = (file_str [12] & 0b11001111) * 10 + (file_str [13] & 0b11001111);
för det andra = (file_str [14] & 0b11001111) * 10 + (file_str [15] & 0b11001111); ds1307_set_date_time(Days,Month,year,Dow,Hour,min,Second);
file_loc=label_address(time_page);
}
IF(file_str[2]=='g') //get tid
{file_loc=label_address(time_page);}
IF(file_str[2]=='r') //configuration rtc io
set_rtc_io (på/av, som i/o-hr till på, min till på, hr off, min off)
{set_rtc_io(file_str[3] & 0b11001111, file_str[4] & 0b11001111, (file_str[5] & 0b11001111) * 10 + (file_str [6] och 0b11001111), (file_str [7] & 0b11001111) * 10 + (file_str [8] och 0b11001111), (file_str [9] & 0b11001111) * 10 + (file_str [10] och 0b11001111), (file_str [11] & 0b11001111) * 10 + (file_str [12] & 0b11001111)); file_loc=label_address(time_page);} }
för fan om (stricmp (file_str [1], fan [1]) == 0) {if(stricmp(file_str[2],'1')==0) {fan_speed1();} if(stricmp(file_str[2],'2')==0) {fan_speed2();} if(stricmp(file_str[2],'3')==0) {fan_speed3();} if(stricmp(file_str[2],'o')==0) {fan_off();} if(stricmp(file_str[2],'r')==0) {fan_rotate_toggle();} file_loc=label_address(main_page);}
för magnetiska lås om (stricmp(file_str,magneticlock)==0) {toggle_magnetic_lock_state(); file_loc=label_address(main_page);}
för eluttag om (stricmp (file_str [1], powersocket [1]) == 0) {if(stricmp(file_str[2],'1')==0) {toggle_power_socket1_state();} if(stricmp(file_str[2],'2')==0) {toggle_power_socket2_state();} if(stricmp(file_str[2],'3')==0) {toggle_power_socket3_state();} file_loc=label_address(main_page);}
för staten kontrollera om (stricmp (file_str, stödberättigandelistanMedlemsstatenKontrollera) == 0) {file_loc=label_address(main_page);}
Return(file_loc); }
int8 http_format_char (int32 fil, char-id, char * str, int8 max_ret) {char new_str [50]; int8 len = 0;
* str = 0;
Switch(ID) {
ärende '0': sprintf(new_str,"%2d%2d%2d%3d%d%d%d%d%d%d%d%d%d%d%d%s",hr,min,get_temperature(), get_bulb_brightness(), input_state(speed1), input_state(speed2), input_state(speed3), input_state(rotate), input_state(magnetic_lock_signal),input_state(power_socket_signal1),input_state(power_socket_signal2),input_state(power_socket_signal3),input_state(voice_sensor_signal) , input_state(alarm_signal),T,debug); len=strlen(new_str); bryta;
case '1': sprintf(new_str,"%2d%2d%1d%1d%1d%2d%2d%2d%2d%2d%2d%2d%2d%2d%2d%2d%2d",hr,min,rtc.io0,rtc.io1,rtc.io2,hr_on_io0,min_on_io0,hr_off_io0,min_off_io0,hr_on_io1,min_on_io1,hr_off_io1,min_off_io1,hr_on_io2,min_on_io2,hr_off_io2,min_off_io2); len=strlen(new_str); bryta; } om (len) {om (len > max_ret) {len = max_ret;} memcpy(str,new_str,len);}
Return(len); }
void http_exec_cgi (int32 fil, char * nyckel, char * val) {;}
void main(void) {
delay_ms(1000);
rtc_io_init();
power_socket_init();
bulb_dimmer_init();
voice_control_alarm_system_init();
magnetic_lock_init();
temperature_sensor_init();
fan_init();
MACAddrInit();
IPAddrInit();
StackInit();
delay_ms(10);
While(true)
{
StackTask();
}
}