|
|
@@ -4,9 +4,9 @@
|
|
|
# 2022-03-02 - devnull - initial
|
|
|
# 2022-03-06 - devnull - Schritt 1 : Anpassung für ESP ohne Auslesefunktionalitäten
|
|
|
|
|
|
-import sys
|
|
|
-import io
|
|
|
+import sys, os
|
|
|
from machine import UART
|
|
|
+from machine import Timer
|
|
|
|
|
|
class SIM:
|
|
|
|
|
|
@@ -14,6 +14,7 @@ class SIM:
|
|
|
tty = None
|
|
|
ser = None
|
|
|
pin = None
|
|
|
+ pinentered = False
|
|
|
baud = None
|
|
|
sio = None
|
|
|
devInfo = None
|
|
|
@@ -21,6 +22,7 @@ class SIM:
|
|
|
devSN = None
|
|
|
devProd = None
|
|
|
devRev = None
|
|
|
+ SIMtim = Timer(2)
|
|
|
|
|
|
|
|
|
|
|
|
@@ -42,7 +44,7 @@ class SIM:
|
|
|
# Verbindung oeffnen
|
|
|
#PC: self.ser = serial.Serial(self.getTTY(), self.getBaud(), timeout=1) # PC
|
|
|
#PC: self.sio = io.TextIOWrapper(io.BufferedRWPair(self.ser, self.ser)) # PC
|
|
|
- self.sio = UART(self.getTTY(), baudrate=self.getBaud())
|
|
|
+ self.sio = UART(self.getTTY(), baudrate=self.getBaud()) # ESP
|
|
|
self.devSetup()
|
|
|
|
|
|
#try:
|
|
|
@@ -52,28 +54,28 @@ class SIM:
|
|
|
sys.stderr.write('Could not open serial port {}: {}\n'.format(self.getTTY(), e))
|
|
|
sys.exit(1)
|
|
|
|
|
|
-
|
|
|
-
|
|
|
# sammle Modem Informationen
|
|
|
+ # wir brauchen hier einen Timer, der dann in regelmaessigen Abstaenden die Modeminfos holt
|
|
|
#self.devInfo()
|
|
|
#self.devProd()
|
|
|
#self.devRev()
|
|
|
#self.devSN()
|
|
|
#self.devTemp()
|
|
|
+ self.SIMtim.init(period=1000, callback=self.devRuntime)
|
|
|
|
|
|
# PIN Übergabe
|
|
|
self.sendESPPIN(pin)
|
|
|
|
|
|
|
|
|
- # PIN senden
|
|
|
-
|
|
|
#übermittelt ein AT Command, aber bitte nur eine Zeile als Rückgabewert
|
|
|
def sendAT(self,AT):
|
|
|
self.sio.write(AT + '\n')
|
|
|
#PC: self.sio.flush() # it is buffering. required to get the data out *now*
|
|
|
-
|
|
|
#PC: return self.cleanOutput(self.sio.readlines())
|
|
|
|
|
|
+ #os.dupterm(None,1)
|
|
|
+
|
|
|
+
|
|
|
# Antwort DICT bereinigen
|
|
|
def cleanOutput(self,output):
|
|
|
# erstmal suchen wir nach einem OK in der Ausgabe
|
|
|
@@ -112,6 +114,13 @@ class SIM:
|
|
|
def getPIN(self):
|
|
|
return self.pin
|
|
|
|
|
|
+ # PIN entered Setter
|
|
|
+ def setPINentered(self,entered=False):
|
|
|
+ self.pinentered=entered
|
|
|
+
|
|
|
+ def getPINentered(self):
|
|
|
+ return self.pinentered
|
|
|
+
|
|
|
# Baud setter/getter
|
|
|
def setBaud(self,baud):
|
|
|
self.baud = baud
|
|
|
@@ -134,6 +143,22 @@ class SIM:
|
|
|
def devInfo(self):
|
|
|
self.devInfo = self.sendAT('ATI')
|
|
|
|
|
|
+ # PIN State
|
|
|
+ def devPINstate(self):
|
|
|
+ if 'ready' in self.sendAT('AT+CPIN?'):
|
|
|
+ self.pinentered=True
|
|
|
+ else:
|
|
|
+ self.pinentered=False
|
|
|
+
|
|
|
+ # Laufzeitinformationen vom Modem abfragen
|
|
|
+ def devRuntime(self):
|
|
|
+ self.devInfo()
|
|
|
+ self.devProd()
|
|
|
+ self.devRev()
|
|
|
+ self.devSN()
|
|
|
+ self.devTemp()
|
|
|
+ self.devPINstate()
|
|
|
+
|
|
|
def devProd(self):
|
|
|
self.devProd = self.sendAT('AT+GMM')
|
|
|
|
|
|
@@ -145,18 +170,19 @@ class SIM:
|
|
|
|
|
|
# setzt den PIN auf dem Modem
|
|
|
def sendPIN(self,pin):
|
|
|
- if not 'ready' in self.sendAT('AT+CPIN?'):
|
|
|
+ if not pinentered:
|
|
|
# PIN fehlt, hier noch eintragen
|
|
|
self.sendAT('AT+CPIN=' + str(pin))
|
|
|
|
|
|
# temporaer: ESP setzt den PIN auf dem Modem
|
|
|
def sendESPPIN(self,pin):
|
|
|
self.sendAT('AT+CPIN=' + str(pin))
|
|
|
+ self.setPINentered(True)
|
|
|
|
|
|
|
|
|
def sendSMS(self,number,text):
|
|
|
self.sendAT('AT+CMGS="'+ str(number) + '"\n' + str(text) + '\x1A')
|
|
|
|
|
|
#print (ser.out_waiting)
|
|
|
-#mdm = SIM('/dev/ttyUSB1', 115200, 2389)
|
|
|
+#mdm = SIM(1, 115200, 2389)
|
|
|
#mdm.sendSMS("017643609376", "neue Testnachricht")
|