Grobi Posted April 29, 2016 at 04:46 PM Posted April 29, 2016 at 04:46 PM Ich schlage mich gerade mit Überlegungen über eine halbwegs manipulationssichere Alarmanlage herum. Die gängigen Modelle kommunizieren ja meist über Funk mit den Sensoren, was alles andere als Manipulationssicher ist. Ich tüfftele an einer DIY-Lösung mit Tinkerforge-Bricks und Bricklets. Reedkontakte würden sich ja per I/O16-Bricklet überwachen lassen. Rauchmelder wohl auch denke ich. Das ganze könnte dann über LAN-Kabel im ganzen Haus vernetzt werden und per POE mit Strom versorgt werden. Steuern könnte man das ganze z.B. über einen Raspberry-Pi, der NICHT im Internetz hängt (wegen Manipulation etc). Was nutzt einem allerding die Beste Alarmanlage, wenn Sie einen Einbruch/Brand zwar bemerkt, aber keinem bescheid sagt? Dafür, und für jede andere Art der Fernüberwachung ohne Internet, währe ein GSM-Bricklet ideal. SIM-Karte rein und dann könnte man sich per SMS oä banachrichtigen lassen, bzw Sensorzustände auslesen, steuern etc.. Nicht so komfortabel wie übers I-Net, aber dafür sicherer und auch da, wo z.B. zwar ein Mobielfunknetz, aber kein W-Lan oä zur Verfügung steht. Absichern könnte man sich dabei auch, indem man z.B. bei jeder SMS ZUM Bricklet ein PW mitschicken muss. Was haltet Ihr von der Idee? Quote
m0d Posted April 29, 2016 at 05:41 PM Posted April 29, 2016 at 05:41 PM Solange es noch kein GSM-Bricklet gitb, könntest Du Dir z.B. mit einem GSM USB-Stick behelfen. Ich habe einen alten UMTS USB-Stick verwendet, um damit unter Linux mit Hilfe der SMS Server Tools [1] Nachrichten zu versenden. Soweit ich mich erinnern kann, kannst Du auch auf eingehende Nachrichten reagieren. Hoffe das hilft Dir weiter. --mod [1] http://smstools3.kekekasvi.com/ Quote
markus5766h Posted April 29, 2016 at 05:57 PM Posted April 29, 2016 at 05:57 PM Solange es noch kein GSM-Bricklet gitb, könntest Du Dir z.B. mit einem GSM USB-Stick behelfen. Ich habe einen alten UMTS USB-Stick verwendet, um damit unter Linux mit Hilfe der SMS Server Tools [1] Nachrichten zu versenden. Soweit ich mich erinnern kann, kannst Du auch auf eingehende Nachrichten reagieren ... ja, Kommunikation geht in beiden Richtungen (auch unter Windows) . . . Quote
Grobi Posted April 29, 2016 at 06:26 PM Author Posted April 29, 2016 at 06:26 PM Hm,, klingt schon einmal interessant, würde ja zu einen Raspberry Pi passen... Quote
m0d Posted April 29, 2016 at 07:22 PM Posted April 29, 2016 at 07:22 PM Hatte meine Installation auch auf einem Raspberry Pi laufen. Quote
Grobi Posted May 2, 2016 at 06:45 PM Author Posted May 2, 2016 at 06:45 PM OK, letztes Update 2012... So eine Systeminterne Lösung währe schon was sehr feines. Wie stehen denn die Chanchen auf ein GSM-Bricklet? Quote
photron Posted May 10, 2016 at 08:13 AM Posted May 10, 2016 at 08:13 AM Ein GSM Bricklet steht durchaus auf der Liste der Bricklets die wir irgendwann gerne hätte. Momentan ist da aber nichts in Arbeit, sprich kurzfristig passiert an der Front leider nichts. Quote
Guest piwo Posted May 24, 2016 at 07:40 AM Posted May 24, 2016 at 07:40 AM tf-usb dongle mit humod unter python -> rock solid ... Quote
Nic Posted May 24, 2016 at 09:29 AM Posted May 24, 2016 at 09:29 AM tf-usb dongle? humod? Die Chance, dass Normalsterbliche solche Beiträge begreifen oder gar Feedback geben, dürfte umso größer sein, je verständlicher der Inhalt. Quote
Guest piwo Posted June 17, 2016 at 05:33 PM Posted June 17, 2016 at 05:33 PM ein tf-dongle ist der stick (dongle) den tinkerforge verkauft wird ;-) humod ist die einzig brauchbare gsm-library die ich ausgemacht habe : https://github.com/oozie/pyhumod/ sie wird auch in den beispielen auf tinkerforge.com gebraucht und hat leider auch einige bugs bzw. "feinheiten". wichtig ist z.b. dass beim pin-initialisieren nur "EADY" zurückkommt & dass man das senden von sms ein bisschen "kreativer" gestalten muss .... (bemerkung : xpr() und xprexit() sind meine ausgaberoutinen ) import sys def xpr(*args): # ausgabe-routine pass def xprexit(*args): xpr(*args) sys.exit(1) import humod class ModemManager(): CMD_STR_CPIN = '+CPIN' # PIN management CMD_STR_COPS = '+COPS' # Operator management CMD_STR_CSCS = '+CSCS' # Character set management CMD_STR_CSCA = '+CSCA' # sms-center phone number #CMD_STR_CMGR = '+CMGR' # read message number #CMD_STR_CMGD = '+CMGD' # delete messages ERR_MSG_INIT_MODEM = 'ERROR: Failed to initialze modem' ERR_MSG_PUK = 'ERROR: SIM requires PUK code' ERR_MSG_PIN_EMPTY = 'ERROR: SIM requires PIN but no PIN provided' ERR_MSG_PIN_QUERY = 'ERROR: SIM query for PIN failed' ERR_MSG_PIN_APPLY = 'ERROR: Failed to apply PIN' ERR_MSG_PIN_WRONG = 'ERROR: Wrong PIN supplied' ERR_MSG_PIN_UNDEFINED = 'ERROR: Undefined PIN status' ERR_MSG_CMD_COPS_FAILED = 'ERROR: Setting auto search mode failed' ERR_MSG_SET_TEXTMODE_FAILED = 'ERROR: Setting text mode failed' ERR_MSG_SET_CHARACTER_SET_FAILED = 'ERROR: Failed to setup character set of the modem' ERR_MSG_CMD_SMSCENTER_FAILED = 'ERROR: Setting sms center number' ERR_MSG_NEW_SMS_CB_FAILED = 'ERROR: Failed register callback for new SMS' def __init__(self, tty_device_file, pin, csca): self.prober_started = False try: self.MODEM = humod.Modem(tty_device_file, tty_device_file) signal.signal(signal.SIGALRM, self._handler_timeout_signal) signal.alarm(10) self.MODEM.show_model() signal.alarm(0) except: self.handle_error(self.ERR_MSG_INIT_MODEM) try: pin_status = humod.at_commands._common_get(self.MODEM,self.CMD_STR_CPIN)[0] except: self.handle_error(self.ERR_MSG_PIN_QUERY) if 'IM PUK' in pin_status: self.handle_error(self.ERR_MSG_PUK) if 'IM PIN' in pin_status: if pin == '': self.handle_error(self.ERR_MSG_PIN_EMPTY) try: humod.at_commands._common_set(self.MODEM,self.CMD_STR_CPIN,pin) except: self.handle_error(self.ERR_MSG_PIN_APPLY) try: pin_status = humod.at_commands._common_get(self.MODEM,self.CMD_STR_CPIN)[0] except: self.handle_error(self.ERR_MSG_PIN_QUERY) if 'EADY' not in pin_status: self.handle_error(self.ERR_MSG_PIN_WRONG) if 'EADY' not in pin_status: self.handle_error(self.ERR_MSG_PIN_UNDEFINED) try: humod.at_commands._common_set(self.MODEM,self.CMD_STR_COPS,0) except: self.handle_error(self.ERR_MSG_CMD_COPS_FAILED) time.sleep(10) try: humod.at_commands._common_set(self.MODEM,self.CMD_STR_CSCS,'"GSM"') except: self.handle_error(self.ERR_MSG_SET_CHARACTER_SET_FAILED) try: self.MODEM.enable_textmode(True) except: self.handle_error(self.ERR_MSG_SET_TEXTMODE_FAILED) self.CSCA='"'+csca+'"' try: humod.at_commands._common_set(self.MODEM,self.CMD_STR_CSCA,self.CSCA) except: self.handle_error(self.ERR_MSG_CMD_SMSCENTER_FAILED) def _handler_timeout_signal(self, signal_number, frame): raise Exception def handle_error(self, message): xprexit("modem error : {}".format(message)) def stop_prober(self): if self.prober_started: try: self.MODEM.prober.stop() except: xpr("notice : prober stop on non-running prober attempted ...") def send_sms(self, numbers, message): try: humod.at_commands._common_set(self.MODEM,self.CMD_STR_CSCS,'"GSM"') humod.at_commands._common_set(self.MODEM,self.CMD_STR_CSCA,self.CSCA) self.MODEM.enable_textmode(True) for number in numbers: text_number = self.MODEM.sms_send(number,message) xpr("notice : sms sent : id {}".format(text_number)) except Exception , e: xpr("notice : sms send exception : {}".format(e.message)) den code für das empfangs-callback spr ich mir hier, aber er ist auch nicht sehr gross oder komplex .... damit kann man dann auch dumme dinge anstellen über spezifische antwort-sms ... ## SIM-Card specific SMSCSCA = "+436640501" # a1.net SMSPIN = "" ## SMSNUMBERS = ("+4311111111111111111111111",) #SMSNUMBERS = None if __name__ == "__main__": sms_mm = ModemManager(SMSTTY, SMSPIN, SMSCSCA) def notifyme(str): xpr("*** NOTIFY *** {} ***".format(str)) if sms_mm and SMSNUMBERS: sms_mm.send_sms(SMSNUMBERS,str) # # hier geschieht etwas ;-) # notifyme("eine katastrophe ...") if sms_mm: sms_mm.stop_prober() sys.exit(0) Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.