Skip to content

Instantly share code, notes, and snippets.

@neuberfran
Created June 9, 2024 01:24
Show Gist options
  • Save neuberfran/74679666860132158c82e161814f97ec to your computer and use it in GitHub Desktop.
Save neuberfran/74679666860132158c82e161814f97ec to your computer and use it in GitHub Desktop.
package neuberfran.com.jfran
import android.app.Activity
import android.os.Bundle
import android.os.Handler
import android.util.Log
import com.google.android.gms.tasks.Task
import com.google.android.gms.tasks.Tasks
import com.google.android.things.pio.Gpio
import com.google.android.things.pio.GpioCallback
import com.google.android.things.pio.PeripheralManager
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.DocumentSnapshot
import com.google.firebase.firestore.FirebaseFirestore
import com.google.firebase.firestore.SetOptions
import kotlinx.coroutines.Delay
import kotlinx.coroutines.delay
import neuberfran.com.jfran.BoardDefaults
import neuberfran.com.jfran.model.FireFran
import neuberfran.com.jfran.model.FireFranB
import neuberfran.com.jfran.repository.FireRepositoryB
import timber.log.Timber
import java.io.IOException
import java.util.logging.Logger
var data1 = hashMapOf("cercastate" to false)
var data2 = hashMapOf("cercastate" to true)
var data3 = hashMapOf("garagestate" to false)
var data4 = hashMapOf("garagestate" to true)
var data5 = hashMapOf("gpiocercastate" to false)
var data6 = hashMapOf("gpiogaragestate" to false)
class MainActivity : Activity() {
private val LOG = Logger.getLogger(this.javaClass.name)
private val TAG = MainActivity::class.java.simpleName
var db = FirebaseFirestore.getInstance()
var gpcercastate = db.collection("device-configs").document("cerca")
var gpgaragestate = db.collection("device-configs").document("garagem")
private var gpiocercastateb: Gpio? = null
private var gpiogaragestateb: Gpio? = null
private lateinit var buttoncerca: Gpio
private lateinit var buttonGarage: Gpio
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Timber.plant(Timber.DebugTree())
val manager = PeripheralManager.getInstance()
var gpiocercastateb: Gpio? = null
var gpiogaragestateb: Gpio? = null
try {
gpiocercastateb = manager.openGpio(BoardDefaults.getGPIOForButton5())
this.gpiocercastateb = gpiocercastateb
gpiocercastateb.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW)
gpiocercastateb.setActiveType(Gpio.ACTIVE_LOW)
gpcercastate.addSnapshotListener { snapshot, e ->
if (e != null) {
Log.w(LOG.toString(), "Listen failed.", e)
return@addSnapshotListener
}
var vlrgpcerca = snapshot?.toObject(FireFran::class.java)?.value?.get("on")
var vlrgpiocercastateC=snapshot?.toObject(FireFran::class.java)?.gpiocercastate
Log.w(TAG, "Listen 94333 94333 94333." + vlrgpcerca)
if (vlrgpcerca == true && vlrgpiocercastateC!!) { // && !vlrcercastate!!) {
gpiocercastateb?.setValue(!gpiocercastateb!!.getValue())
Log.w(TAG, "Listen 94347 94347 94347." + vlrgpcerca)
Handler().postDelayed({
gpiocercastateb?.setValue(!gpiocercastateb!!.getValue())
}, 700)
Log.w(TAG, "Listen 94347_2 94347_2 94347_2" + vlrgpcerca)
db.collection("device-configs").document("cerca")
.set(data5, SetOptions.merge())
} else if (vlrgpcerca == false && vlrgpiocercastateC!!) { // && vlrgaragestab!!) {
gpiocercastateb?.setValue(!gpiocercastateb!!.getValue())
Log.w(TAG, "Listen 94348 94348 94348" + vlrgpcerca)
Handler().postDelayed({
gpiocercastateb?.setValue(!gpiocercastateb!!.getValue())
}, 700)
db.collection("device-configs").document("cerca")
.set(data5, SetOptions.merge())
Log.w(TAG, "Listen 94348_2 94348_2 94348_2" + vlrgpcerca)
}
}
} catch (e: IOException) {
Timber.d(e.toString(), "Error on PeripheralIO API")
}
// var gpiogaragestateb: Gpio? = null
try {
gpiogaragestateb = manager.openGpio(BoardDefaults.getGPIOForButton13())
this.gpiogaragestateb = gpiogaragestateb
gpiogaragestateb.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW)
gpiogaragestateb.setActiveType(Gpio.ACTIVE_LOW)
gpgaragestate.addSnapshotListener { snapshot, e ->
if (e != null) {
Log.w(LOG.toString(), "Listen failed.", e)
return@addSnapshotListener
}
var vlrgaragesta=snapshot?.toObject(FireFranB::class.java)?.value?.get("openPercent")
var vlrgpiogaragestateC=snapshot?.toObject(FireFranB::class.java)?.gpiogaragestate
Log.w(TAG, "Listen 94336 94336 94336" + vlrgaragesta)
if (vlrgaragesta == 100 && vlrgpiogaragestateC!!) { // && !vlrgaragestab!!) {
gpiogaragestateb?.setValue(!gpiogaragestateb!!.getValue())
Log.w(TAG, "Listen 94337 94337 94337." + vlrgaragesta)
Handler().postDelayed({
gpiogaragestateb?.setValue(!gpiogaragestateb!!.getValue())
}, 700)
Log.w(TAG, "Listen 94337_2 94337_2 94337_2" + vlrgaragesta)
db.collection("device-configs").document("garagem")
.set(data6, SetOptions.merge())
} else if (vlrgaragesta == 0 && vlrgpiogaragestateC!!) { // && vlrgaragestab!!) {
gpiogaragestateb?.setValue(!gpiogaragestateb!!.getValue())
Log.w(TAG, "Listen 94338 94338 94338" + vlrgaragesta)
Handler().postDelayed({
gpiogaragestateb?.setValue(!gpiogaragestateb!!.getValue())
//doSomethingHere()
}, 700)
db.collection("device-configs").document("garagem")
.set(data6, SetOptions.merge())
Log.w(TAG, "Listen 94338_2 94338_2 94338_2" + vlrgaragesta)
}
}
} catch (e: IOException) {
Timber.d(e.toString(), "Error on PeripheralIO API")
}
var cercastate: Gpio? = null
try {
cercastate = manager.openGpio(BoardDefaults.getGPIOForButton20())
Timber.d("98 98 98 ")
cercastate.setDirection(Gpio.DIRECTION_IN)
// Step 3. Enable edge trigger events.
cercastate.setEdgeTriggerType(Gpio.EDGE_BOTH)
cercastate.registerGpioCallback(cercaStateFun)
if (cercastate.value) {
db.collection("device-configs").document("cerca2")
.set(data2, SetOptions.merge())
} else if (!cercastate.value) {
db.collection("device-configs").document("cerca2")
.set(data1, SetOptions.merge())
}
} catch (e: IOException) {
Timber.d(e.toString(), "Error on PeripheralIO API")
}
var garagestate: Gpio? = null
try {
garagestate = manager.openGpio(BoardDefaults.getGPIOForButton21())
Timber.d("99 99 99 ")
garagestate.setDirection(Gpio.DIRECTION_IN)
garagestate.setEdgeTriggerType(Gpio.EDGE_BOTH)
garagestate.registerGpioCallback(garageStateFun)
if (garagestate.value) {
db.collection("device-configs").document("garagem2")
.set(data4, SetOptions.merge())
} else if (!garagestate.value) {
db.collection("device-configs").document("garagem2")
.set(data3, SetOptions.merge())
}
} catch (e: IOException) {
Timber.d(e.toString(), "Error on PeripheralIO API")
}
}
var cercaStateFun = object : GpioCallback {
override fun onGpioEdge(buttoncerca: Gpio): Boolean {
Thread(Runnable {
if (buttoncerca.value) {
db.collection("device-configs").document("cerca2")
.set(data2, SetOptions.merge())
Timber.d("passei 910_1 passei 910_1 passei 910_1")
} else if (!buttoncerca.value) {
db.collection("device-configs").document("cerca2").set(
data1, SetOptions.merge()
)
Timber.d("passei 911 passei 911 passei 911" + buttoncerca.value)
}
}).start()
return true
}
override fun onGpioError(gpio: Gpio?, error: Int) = Timber.d("$gpio Error event $error")
}
var garageStateFun = object : GpioCallback {
override fun onGpioEdge(buttonGarage: Gpio): Boolean {
Thread(Runnable {
Timber.d("GPIO changed, button 920 920 920" + buttonGarage.value)
if (buttonGarage.value) {
db.collection("device-configs").document("garagem2")
.set(data4, SetOptions.merge())
Timber.d("passei 920_1 passei 920_1 passei 920_1")
} else if (!buttonGarage.value) {
db.collection("device-configs").document("garagem2").set(
data3, SetOptions.merge()
)
Timber.d("passei 921 passei 921 passei 921" + buttonGarage.value)
}
}).start()
return true
}
override fun onGpioError(gpio: Gpio?, error: Int) = Timber.d("$gpio Error event $error")
}
override fun onStop() {
super.onStop()
gpiocercastateb?.close()
gpiogaragestateb?.close()
}
override fun onStart() {
super.onStart()
// loginFirebase()
}
// private fun loginFirebase() {
// val firebase = FirebaseAuth.getInstance()
// firebase.signInAnonymously()
// .addOnSuccessListener { Timber.d("Firebase logged in successfully") }
// .addOnFailureListener { Timber.e("Failed to login $it") }
// }
override fun onDestroy() {
super.onDestroy()
buttoncerca.unregisterGpioCallback(cercaStateFun)
buttoncerca.close()
buttonGarage.unregisterGpioCallback(garageStateFun)
buttonGarage.close()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment