Browse Source

Version fuer den 8266

Chris Hoelzel 4 năm trước cách đây
mục cha
commit
9103f5cddc
3 tập tin đã thay đổi với 61 bổ sung31 xóa
  1. 36 10
      SIM.py
  2. 14 14
      boot.py
  3. 11 7
      main.py

+ 36 - 10
SIM.py

@@ -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")

+ 14 - 14
boot.py

@@ -1,22 +1,22 @@
-## final muss hier die WLAN Abschalung rein
-
 import network
 
-WIFI_SSID='WSH-GAST'
-WIFI_PW='0551G1p5fu55'
+wlan = network.WLAN(network.STA_IF) # create station interface
+wlan.active(False)
+
+# sytem setup
+import machine
+machine.freq(80000000) # set the CPU frequency to 160 MHz
+
+import esp
+esp.osdebug(None)       # turn off vendor O/S debugging messages
 
-wlan = network.WLAN(network.STA_IF)
-wlan.active(True)
-if not wlan.isconnected():
-    print('connecting to network...')
-    wlan.connect(WIFI_SSID, WIFI_PW)
-    while not wlan.isconnected():
-        pass
-        
-print('network config:', wlan.ifconfig())
 #import webrepl
 #webrepl.start()
 
 # Der folgende Begehl koppelt das Terminal von den seriellen Ports ab, dann ist das ganze Teil nicht mehr bedienbar.
-#import os
+import os
+import time
+
+print("Warte 5 Sekunden bevor das Terminal abgehangen wird und das Hauptprogramm startet")
+time.sleep(5)
 #os.dupterm(None,1)

+ 11 - 7
main.py

@@ -5,24 +5,28 @@
 from machine import Pin
 from machine import Timer
 
-# Wir brauchen unsere Variablen
-import config
-import SIM
-
+from SIM import *
 
 znr = "017643609376"
 atxt = "Alarm in Garage 1 ausgeloest"
 wz = 600
+tty = 1
+baud = 115200
+simpin = 2389
+
+
+sim = SIM(tty, baud, simpin)
 
 # INPUT Callback Funktion
 #   GPIO4
 def INcheckCallback(t):
     p4 = Pin(4, Pin.IN, Pin.PULL_UP)    # create input pin on GPIO4 aber Bitte PullUP, weil das hier ja ein Taster ist
-    print("Taster = " + str(p4.value()))       # get value, 0 or 1
-
+    #print("Taster = " + str(p4.value()))       # get value, 0 or 1
+    #print("SIM is on TTY: " + str(sim.getTTY()))
+    #sim.sendSMS(znr, atxt)
 
 
-# das ist der Timer zur Tasterabfrage
+# das ist der Timer zur Tasterabfrage (in Klammern die ID)
 tim = Timer(1)
 
 # periodic with 100ms period