Я создаю приложение для Android, которое отображает положение ребенка (лежа, сидя, стоя, вне кроватки) от датчиков луча, подключенных к RPI3. Я использую только соединение Wlan.
Это мой код на RPI3, который определяет положение ребенка и сохраняет его в базе данных.
import RPi.GPIO as GPIO
import time
import MySQLdb
db = MySQLdb.connect("localhost", "root", "raspberry", "cribdb")
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN) #Right level-1
GPIO.setup(16, GPIO.IN) #Right level-2
GPIO.setup(18, GPIO.IN) #Right level-3
GPIO.setup(11, GPIO.IN) #Middle level-1
GPIO.setup(13, GPIO.IN) #Middle level-2
GPIO.setup(15, GPIO.IN) #Middle level-3
GPIO.setup(36, GPIO.IN) #Left level-1
GPIO.setup(38, GPIO.IN) #Left level-2
GPIO.setup(40, GPIO.IN) #Left level-3
last_status = None
while True:
input12 = GPIO.input(12)
input16 = GPIO.input(16)
input18 = GPIO.input(18)
input11 = GPIO.input(11)
input13 = GPIO.input(13)
input15 = GPIO.input(15)
input36 = GPIO.input(36)
input38 = GPIO.input(38)
input40 = GPIO.input(40)
if (input12 == 1 or input11 == 1 or input36 == 1 and
input16 == 0 or input13 == 0 or input38 == 0 and
input18 == 0 or input15 == 0 or input40 == 0):
status = "Lying down"
elif (input12 == 1 or input11 == 1 or input36 == 1 and
input16 == 1 or input13 == 1 or input38 == 1 and
input18 == 0 or input15 == 0 or input40 == 0):
status = "Sitting/Crawling"
elif (input12 == 1 or input11 == 1 or input36 == 1 and
input16 == 1 or input13 == 1 or input38 == 1 and
input18 == 1 or input15 == 1 or input40 == 1):
status = "Standing"
elif (input12 == 0 or input11 == 0 or input36 == 0 and
input16 == 1 or input13 == 1 or input38 == 1 and
input18 == 1 or input15 == 1 or input40 == 1):
status = "Trying to climb out"
elif (input12 == 0 or input11 == 0 or input36 == 0 and
input16 == 0 or input13 == 0 or input38 == 0 and
input18 == 1 or input15 == 1 or input40 == 1):
status = "Almost out"
else:
status = "Out of the crib"
time.sleep(1)
if status != last_status:
print(status)
last_status = status
curs = db.cursor()
curs.execute(
"""INSERT INTO tbstatus values(NULL, %s)""", (status,)
)
db.commit()
number_of_rows= curs.execute("SELECT * FROM tbstatus")
if (number_of_rows >= 4):
curs.execute("""DELETE FROM tbstatus order by id LIMIT 1""")
db.commit()
Тогда после этого. Мое приложение для Android будет отображать положение ребенка с помощью веб-просмотра, получая URL-адрес веб-сервера, настроенного мной в RPI3.
MainActivity.java
public class MainActivity extends Activity {
@SuppressLint("SetJavaScriptEnabled") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
String url = "http://192.168.8.127";
WebView web = (WebView) findViewById(R.id.webView1);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setDomStorageEnabled(true);
web.loadUrl(url);
Мой вопрос: как мое приложение может уведомить меня (по вибрации или звуку), как только веб-сервер, который я установил в своем веб-просмотре, показывает положение ребенка "Из кроватки"?
Я надеюсь, что это также уведомит меня, даже приложение не открыто. Спасибо.