文章目录
前言
一个简单的小项目,下面是代码部分和物理效果展示。
[En]
A simple small project, the following is the code part and physical effects show.
一、整体系统框图
; 二、代码部分
- main.c
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "contrlDevices.h"
#include "inputCommand.h"
pthread_t voiceThread;
pthread_t socketThread;
pthread_t fireThread;
pthread_t cameraThread;
pthread_t clientWemosThread;
struct InputCommander *pCommandHead = NULL;
struct Devices *pdeviceHead = NULL;
struct InputCommander *socketHandler = NULL;
struct InputCommander *clientHandler = NULL;
pthread_mutex_t mutex;
int c_fd;
#define true 1
#define false 0
typedef unsigned int bool;
char* faceRes = NULL;
struct Devices *findEquipByName(char *name,struct Devices *phead)
{
if(phead == NULL){
return NULL;
}
while(phead != NULL){
if(strstr(phead->deviceName,name) != NULL){
return phead;
}
phead = phead->next;
}
return NULL;
}
struct InputCommander *findCommandByName(char *name,struct InputCommander *phead)
{
if(phead == NULL){
return NULL;
}
while(phead != NULL){
if(strcmp(phead->commandName,name) == 0){
return phead;
}
phead = phead->next;
}
return NULL;
}
void *camera_thread(void *datas)
{
const char* openCamera = "/home/pi/mjpg-streamer/mjpg-streamer-experimental/start.sh";
system(openCamera);
}
size_t handle(void *ptr, size_t size, size_t nmemb, void *stream){
int ssize = strlen(ptr) + 1;
faceRes = (char*)malloc(ssize);
memset(faceRes, '\0', ssize);
strncpy(faceRes, ptr, ssize);
}
char* getBase64(char* photoPath){
char cmd[256] = {'\0'};
sprintf(cmd, "base64 %s > photoBase64File", photoPath);
system(cmd);
int fd,size;
fd = open("./photoBase64File", O_RDWR);
size = lseek(fd, 0, SEEK_END) + 1;
lseek(fd, 0, SEEK_SET);
char* res = (char*)malloc(size);
memset(res, '\0', size);
read(fd, res, size);
close(fd);
system("rm photoBase64File");
return res;
}
bool cameraContrlPostUrl()
{
CURL *curl;
CURLcode res;
struct Devices *linkHandler = NULL;
char* message = NULL;
char* img1 = getBase64("./host.jpg");
system("wget http://192.168.137.104:8080/?action=snapshot -O ./visitor.jpg");
char* img2 = getBase64("./visitor.jpg");
char* key = "QYRbM22W52hMrHaUWkdKEN";
char* secret = "30e80f34e0b04a2f863ff4ff615c2661";
int typeId = 21;
char* format = "xml";
int size = strlen(img1)+strlen(img2)+strlen(key)+strlen(secret)+strlen(format)+3;
message = (char*)malloc(size);
memset(message, '\0', size);
sprintf(message, "&img1=%s&img2=%s&key=%s&secret=%s&typeId=%d&format=%s",
img1, img2, key, secret, typeId, format);
curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://netocr.com/api/faceliu.do");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, message);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, handle);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
printf("%s\n",faceRes);
printf("shibiechenggong\n");
if(strstr(faceRes, "是") != NULL){
printf("tongyigeren\n");
linkHandler = findEquipByName("lock",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
sleep(3);
linkHandler->close(linkHandler->pinNum);
}
else{
printf("bushitongyigeren\n");
}
printf("shibiejieshu\n");
}
free(faceRes);
free(img1);
free(img2);
}
void *voice_thread(void *arg)
{
int i = 0;
int nread;
struct InputCommander *voiceHandler = NULL;
struct Devices *linkHandler = NULL;
voiceHandler = findCommandByName("voice",pCommandHead);
if(voiceHandler == NULL){
printf("find voiceHandler error\n");
pthread_exit(NULL);
}else{
if(voiceHandler->Init(voiceHandler) < 0){
printf("voice init error\n");
pthread_exit(NULL);
}else{
printf("%s init success\n",voiceHandler->commandName);
}
while(1){
memset(voiceHandler->command,'\0',sizeof(voiceHandler->command));
nread = voiceHandler->getCommand(voiceHandler);
if(nread == 0){
printf("noData from voice,please say again\n");
}
else{
printf("Get voice command:%s\n",voiceHandler->command);
if(strcmp("kycd\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
printf("open bathroomlight\n");
}
if(strcmp("gycd\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
printf("已关闭浴室灯\n");
}
if(strcmp("kwsd\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gwsd\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("kktd\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gktd\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("kfs\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("fan",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gfs\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("fan",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("km\r\n",voiceHandler->command) == 0){
cameraContrlPostUrl();
}
if(strcmp("gm\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("lock",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("kqbd\r\n",voiceHandler->command) == 0){
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("face",voiceHandler->command) == 0){
cameraContrlPostUrl();
}
}
}
}
}
void *fire_thread(void *datas)
{
int status;
struct Devices *fireDeviceTmp = NULL;
struct Devices *buzzerDeviceTmp = NULL;
fireDeviceTmp = findEquipByName("fire",pdeviceHead);
buzzerDeviceTmp = findEquipByName("buzzser",pdeviceHead);
fireDeviceTmp->deviceInit(fireDeviceTmp->pinNum);
buzzerDeviceTmp->deviceInit(buzzerDeviceTmp->pinNum);
printf("fire_thread init\n");
while(1){
delay(2000);
status = fireDeviceTmp->readStatus(fireDeviceTmp->pinNum);
if(status == 0){
buzzerDeviceTmp->open(buzzerDeviceTmp->pinNum);
}else{
buzzerDeviceTmp->close(buzzerDeviceTmp->pinNum);
}
}
}
void *read_thread(void *datas)
{
int n_read;
struct Devices *linkHandler = NULL;
while(1){
memset(socketHandler->command,'\0',sizeof(socketHandler->command));
n_read = read(c_fd,socketHandler->command,sizeof(socketHandler->command));
if(n_read == -1){
perror("read_thread");
}else if(n_read > 0){
printf("getCommand:%s\n",socketHandler->command);
if(strcmp("kycd",socketHandler->command) == 0){
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gycd",socketHandler->command) == 0){
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("kwsd",socketHandler->command) == 0){
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gwsd",socketHandler->command) == 0){
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("kktd",socketHandler->command) == 0){
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gktd",socketHandler->command) == 0){
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("kfs",socketHandler->command) == 0){
linkHandler = findEquipByName("fan",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gfs",socketHandler->command) == 0){
linkHandler = findEquipByName("fan",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("km",socketHandler->command) == 0){
linkHandler = findEquipByName("lock",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gm",socketHandler->command) == 0){
linkHandler = findEquipByName("lock",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("kqbd",socketHandler->command) == 0){
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->open(linkHandler->pinNum);
}
if(strcmp("gqbd",socketHandler->command) == 0){
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
if(strcmp("gqbdq",socketHandler->command) == 0){
linkHandler = findEquipByName("bedroomlight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
linkHandler = findEquipByName("yongchilight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
linkHandler = findEquipByName("livingroomLight",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
linkHandler = findEquipByName("fan",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
linkHandler = findEquipByName("lock",pdeviceHead);
linkHandler->close(linkHandler->pinNum);
}
}
else{
printf("client quit\n");
exit(-1);
}
}
}
void *socket_thread(void *datas)
{
int n_read = 0;
pthread_t readPthread;
struct sockaddr_in c_addr;
memset(&c_addr,0,sizeof(struct sockaddr_in));
int clen = sizeof(struct sockaddr_in);
socketHandler = findCommandByName("socketContrl",pCommandHead);
if(socketHandler == NULL){
printf("find socketHandler error\n");
pthread_exit(NULL);
}else{
printf("%s init success\n",socketHandler->commandName);
}
if(socketHandler->Init(socketHandler) < 0){
printf("socketControl init error\n");
pthread_exit(NULL);
}
while(1){
c_fd = accept(socketHandler->sfd,(struct sockaddr *)&c_addr, &clen);
pthread_create(&readPthread,NULL,read_thread,NULL);
}
}
int main()
{
char name[32] = {'\0'};
if(wiringPiSetup() == -1){
printf("硬件接口初始化失败\n");
return -1;
}
pthread_mutex_init(&mutex,NULL);
pCommandHead = addVoiceContrlToInputCommanderLink(pCommandHead);
pCommandHead = addsocketContrlToInputCommanderLink(pCommandHead);
pdeviceHead = addyongchilightToDeviceLink(pdeviceHead);
pdeviceHead = addfanToDeviceLink(pdeviceHead);
pdeviceHead = addlivingroomLightToDeviceLink(pdeviceHead);
pdeviceHead = addbedroomlightToDeviceLink(pdeviceHead);
pdeviceHead = addFireToDeviceLink(pdeviceHead);
pdeviceHead = addBuzzerToDeviceLink(pdeviceHead);
pdeviceHead = addlockToDeviceLink(pdeviceHead);
struct Devices *tmpequiphead = pdeviceHead;
while(tmpequiphead != NULL){
tmpequiphead->deviceInit(tmpequiphead->pinNum);
tmpequiphead = tmpequiphead->next;
}
pthread_create(&voiceThread,NULL,voice_thread,NULL);
pthread_create(&socketThread,NULL,socket_thread,NULL);
pthread_create(&fireThread,NULL,fire_thread,NULL);
pthread_create(&cameraThread,NULL,camera_thread,NULL);
pthread_join(voiceThread,NULL);
pthread_join(socketThread,NULL);
pthread_join(fireThread,NULL);
pthread_join(cameraThread,NULL);
pthread_mutex_destroy(&mutex);
return 0;
}
- socketContrl.c
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "inputCommand.h"
int socketgetCommand(struct InputCommander *socketMes)
{
int c_fd;
int n_read;
struct sockaddr_in c_addr;
memset(&c_addr,0,sizeof(struct sockaddr_in));
int clen = sizeof(struct sockaddr_in);
c_fd = accept(socketMes->sfd,(struct sockaddr *)&c_addr, &clen);
n_read = read(c_fd,socketMes->command,sizeof(socketMes->command));
if(n_read == -1){
perror("read");
}else if(n_read > 0){
printf("\nget:%d\n",n_read);
}else{
printf("client quit\n");
}
return n_read;
}
int socketInit(struct InputCommander *socketMes)
{
int s_fd;
struct sockaddr_in s_addr;
memset(&s_addr,0,sizeof(struct sockaddr_in));
s_fd = socket(AF_INET,SOCK_STREAM,0);
if(s_fd == -1){
perror("socked");
exit(-1);
}
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons(atoi(socketMes->port));
inet_aton(socketMes->ipAdress,&s_addr.sin_addr);
bind(s_fd, (struct sockaddr *)&s_addr,sizeof(struct sockaddr_in));
listen(s_fd,10);
printf("socket Server listening......\n");
socketMes->sfd = s_fd;
}
struct InputCommander socketContrl = {
.commandName = "socketContrl",
.command = {'\0'},
.port = "8085",
.ipAdress = "192.168.137.104",
.Init = socketInit,
.getCommand = socketgetCommand,
.log = {'\0'},
.next = NULL
};
struct InputCommander *addsocketContrlToInputCommanderLink(struct InputCommander *phead)
{
if(phead == NULL){
return &socketContrl;
}else{
socketContrl.next = phead;
phead = &socketContrl;
}
return phead;
}
- voiceContrl.c
#include
#include
#include
#include
#include
#include
#include "inputCommand.h"
int getCommand(struct InputCommander *voicer)
{
int nread = 0;
memset(voicer->command,'\0',sizeof(voicer->command));
nread = read(voicer->fd,voicer->command,sizeof(voicer->command));
return nread;
}
int voiceInit(struct InputCommander *voicer)
{
int fd;
if((fd = serialOpen(voicer->deviceName,9600)) == -1){
exit(-1);
}
voicer->fd = fd;
return fd;
}
struct InputCommander voiceContrl = {
.commandName = "voice",
.deviceName = "/dev/ttyAMA0",
.command= {'\0'},
.Init = voiceInit,
.getCommand = getCommand,
.log = {'\0'},
.next = NULL
};
struct InputCommander *addVoiceContrlToInputCommanderLink(struct InputCommander *phead)
{
if(phead == NULL){
return &voiceContrl;
}else{
voiceContrl.next = phead;
phead = &voiceContrl;
}
return phead;
}
- bedroomlight.c
#include "contrlDevices.h"
int bedroomlightOpen(int pinNum)
{
digitalWrite (pinNum,LOW);
}
int bedroomlightClose(int pinNum)
{
digitalWrite (pinNum,HIGH);
}
int bedroomlightCloseInit(int pinNum)
{
pinMode (pinNum, OUTPUT);
digitalWrite (pinNum,HIGH);
}
int bedroomlightCloseStatus(int status)
{
}
struct Devices bedroomlight = {
.deviceName = "bedroomlight",
.pinNum = 27,
.open = bedroomlightOpen,
.close = bedroomlightClose,
.deviceInit = bedroomlightCloseInit,
.changStatus = bedroomlightCloseStatus,
.next = NULL
};
struct Devices *addbedroomlightToDeviceLink(struct Devices *phead)
{
if(phead == NULL){
return &bedroomlight;
}else{
bedroomlight.next = phead;
phead = &bedroomlight;
}
return phead;
}
- buzzer.c
#include "contrlDevices.h"
int buzzerOpen(int pinNum)
{
digitalWrite (pinNum,LOW);
}
int buzzerClose(int pinNum)
{
digitalWrite (pinNum,HIGH);
}
int buzzerInit(int pinNum)
{
pinMode (pinNum, OUTPUT);
digitalWrite (pinNum,HIGH);
}
struct Devices buzzer = {
.deviceName = "buzzser",
.pinNum = 7,
.open = buzzerOpen,
.close = buzzerClose,
.deviceInit = buzzerInit,
.next = NULL
};
struct Devices *addBuzzerToDeviceLink(struct Devices *phead)
{
if(phead == NULL){
return &buzzer;
}else{
buzzer.next = phead;
phead = &buzzer;
}
return phead;
}
- fan.c
#include "contrlDevices.h"
int fanOpen(int pinNum)
{
digitalWrite (pinNum,LOW);
}
int fanClose(int pinNum)
{
digitalWrite (pinNum,HIGH);
}
int fanCloseInit(int pinNum)
{
pinMode (pinNum, OUTPUT);
digitalWrite (pinNum,HIGH);
}
int fanCloseStatus(int status)
{
}
struct Devices fan = {
.deviceName = "fan",
.pinNum = 28,
.open = fanOpen,
.close = fanClose,
.deviceInit = fanCloseInit,
.changStatus = fanCloseStatus,
.next = NULL
};
struct Devices *addfanToDeviceLink(struct Devices *phead)
{
if(phead == NULL){
return &fan;
}else{
fan.next = phead;
phead = &fan;
}
return phead;
}
- fire.c
#include "contrlDevices.h"
int fireInit(int pinNum)
{
pinMode (pinNum,INPUT);
digitalWrite (pinNum,HIGH);
}
int readFireStatus(int pinNum)
{
return digitalRead(pinNum);
}
struct Devices fire = {
.deviceName = "fire",
.pinNum = 25,
.deviceInit = fireInit,
.readStatus = readFireStatus,
.next = NULL
};
struct Devices *addFireToDeviceLink(struct Devices *phead)
{
if(phead == NULL){
return &fire;
}else{
fire.next = phead;
phead = &fire;
}
return phead;
}
- livingroomLight.c
#include "contrlDevices.h"
int livingroomLightOpen(int pinNum)
{
digitalWrite (pinNum,LOW);
}
int livingroomLightClose(int pinNum)
{
digitalWrite (pinNum,HIGH);
}
int livingroomLightCloseInit(int pinNum)
{
pinMode (pinNum, OUTPUT);
digitalWrite (pinNum,HIGH);
}
int livingroomLightCloseStatus(int status)
{
}
struct Devices livingroomLight2 = {
.deviceName = "livingroomLight",
.pinNum = 26,
.open = livingroomLightOpen,
.close = livingroomLightClose,
.deviceInit = livingroomLightCloseInit,
.changStatus = livingroomLightCloseStatus,
.next = NULL
};
struct Devices *addlivingroomLightToDeviceLink(struct Devices *phead)
{
if(phead == NULL){
return &livingroomLight2;
}else{
livingroomLight2.next = phead;
phead = &livingroomLight2;
}
return phead;
}
- lock.c
#include "contrlDevices.h"
int lockOpen(int pinNum)
{
digitalWrite (pinNum,HIGH);
}
int lockClose(int pinNum)
{
digitalWrite (pinNum,LOW);
}
int lockCloseInit(int pinNum)
{
pinMode (pinNum, OUTPUT);
digitalWrite (pinNum,LOW);
}
int lockCloseStatus(int status)
{
}
struct Devices lock = {
.deviceName = "lock",
.pinNum = 5,
.open = lockOpen,
.close = lockClose,
.deviceInit = lockCloseInit,
.changStatus = lockCloseStatus,
.next = NULL
};
struct Devices *addlockToDeviceLink(struct Devices *phead)
{
if(phead == NULL){
return &lock;
}else{
lock.next = phead;
phead = &lock;
}
return phead;
}
- yongchilight.c
#include "contrlDevices.h"
int yongchilightOpen(int pinNum)
{
digitalWrite (pinNum,LOW);
}
int yongchilightClose(int pinNum)
{
digitalWrite (pinNum,HIGH);
}
int yongchilightCloseInit(int pinNum)
{
pinMode (pinNum, OUTPUT);
digitalWrite (pinNum,HIGH);
}
int yongchilightCloseStatus(int status)
{
}
struct Devices yongchilight = {
.deviceName = "yongchilight",
.pinNum = 29,
.open = yongchilightOpen,
.close = yongchilightClose,
.deviceInit = yongchilightCloseInit,
.changStatus = yongchilightCloseStatus,
.next = NULL
};
struct Devices *addyongchilightToDeviceLink(struct Devices *phead)
{
if(phead == NULL){
return &yongchilight;
}else{
yongchilight.next = phead;
phead = &yongchilight;
}
return phead;
}
- contrlDevices.h
#include
#include
#include
typedef unsigned int bool;
struct Devices
{
char deviceName[128];
int status;
int pinNum;
int (*open)(int pinNum);
int (*close)(int pinNum);
int (*deviceInit)(int pinNum);
int (*readStatus)(int pinNum);
int (*changStatus)(int status);
CURL *curl;
char *key;
char *secret;
int typeId;
char *format;
bool (*cameraInit)(struct Devices *camera);
int yesNum;
int noNum;
struct Devices *next;
};
struct Devices *addyongchilightToDeviceLink(struct Devices *phead);
struct Devices *addfanToDeviceLink(struct Devices *phead);
struct Devices *addlivingroomLightToDeviceLink(struct Devices * phead);
struct Devices *addlockToDeviceLink(struct Devices *phead);
struct Devices *addbedroomlightToDeviceLink(struct Devices *phead);
struct Devices *addFireToDeviceLink(struct Devices *phead);
struct Devices *addBuzzerToDeviceLink(struct Devices *phead);
struct Devices *addcameraContrlToDeviceLink(struct Devices *phead);
- inputCommand.h
#include
#include
struct InputCommander
{
char commandName[128];
char deviceName[128];
char command[32];
int (*Init)(struct InputCommander *voicer);
int (*getCommand)(struct InputCommander *voicer);
char log[1024];
int fd;
char port[12];
char ipAdress[32];
int sfd;
int cfd;
struct InputCommander *next;
};
struct InputCommander *addVoiceContrlToInputCommanderLink(struct InputCommander *phead);
struct InputCommander *addsocketContrlToInputCommanderLink(struct InputCommander *phead);
struct InputCommander *addclientContrlToInputCommanderLink(struct InputCommander *phead);
二、APP客户端
参考博文:https://blog.csdn.net/bhbhhyg/article/details/115694774?spm=1001.2014.3001.5501
; 1.MainActivity.java
package com.example.smarthome;
import java.io.OutputStream;
import java.net.Socket;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
Button kycd;
Button gycd;
Button kws;
Button gws;
Button kkt;
Button gkt;
Button kfs;
Button gfs;
Button km;
Button gm;
Button kqbd;
Button gqbd;
Button ljms;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
WebView wb = (WebView) findViewById(R.id.web);
wb.setWebViewClient(new WebViewClient());
String s="http://192.168.137.104:8080/?action=stream";
wb.loadUrl(s);
kycd=(Button)findViewById(R.id.kycd);
gycd=(Button)findViewById(R.id.gycd);
kws=(Button)findViewById(R.id.kws);
gws=(Button)findViewById(R.id.gws);
kkt=(Button)findViewById(R.id.kkt);
gkt=(Button)findViewById(R.id.gkt);
kfs=(Button)findViewById(R.id.kfs);
gfs=(Button)findViewById(R.id.gfs);
km=(Button)findViewById(R.id.km);
gm=(Button)findViewById(R.id.gm);
kqbd = (Button)findViewById(R.id.kqbd);
gqbd = (Button)findViewById(R.id.gqbd);
ljms=(Button)findViewById(R.id.ljms);
kycd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("kycd").sendMessage();
}
});
gycd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("gycd").sendMessage();
}
});
kws.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("kwsd").sendMessage();
}
});
gws.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("gwsd").sendMessage();
}
});
kkt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("kktd").sendMessage();
}
});
gkt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("gktd").sendMessage();
}
});
kfs.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("kfs").sendMessage();
}
});
gfs.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("gfs").sendMessage();
}
});
km.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("km").sendMessage();
}
});
gm.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("gm").sendMessage();
}
});
kqbd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("kqbd").sendMessage();
}
});
gqbd.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("gqbd").sendMessage();
}
});
ljms.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
new NetUtils("gqbdq").sendMessage();
}
});
}}
2.NetUtils.java
package com.example.smarthome;
import java.io.OutputStream;
import java.net.Socket;
import android.os.Handler;
public class NetUtils {
public String message;
public String reTurnMes;
public Handler handler;
public NetUtils(String message) {
this.message = message;
}
public NetUtils(String message, Handler handler) {
this.message = message;
this.handler = handler;
}
public void sendMessage() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Socket client = new Socket("192.168.137.104",8085);
OutputStream out = client.getOutputStream();
out.write(message.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
三、实物展示
Original: https://blog.csdn.net/mantouyouyou/article/details/125120893
Author: 秃秃秃秃哇
Title: 基于树莓派的智能家居设计
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/512589/
转载文章受原作者版权保护。转载请注明原作者出处!