NEWS
GSM Modul sim800l über ESPHome ansteuern
-
Hallo
Um Nachrichten und Mitteilungen zu versenden, möchte ich unabhängig von Messenger Diensten zu werden. Dazu hab ich ein sim800l GSM-Modul mit einem Wemos D1-mini verbunden. Dann hab ich ein yaml für ESP home erstellt.Aus den Beispielen von ESPHome:
Variable Empfang:
text_sensor: - platform: template id: sms_sender name: "Sms Sender" - platform: template id: sms_message name: "Sms Message" - platform: template id: caller_id_text_sensor name: "Caller ID" - platform: template id: ussd_message name: "Ussd Code"
Code Empfang:
uart: baud_rate: 9600 tx_pin: TX rx_pin: RX sim800l: on_sms_received: - lambda: |- id(sms_sender).publish_state(sender); id(sms_message).publish_state(message); on_incoming_call: - lambda: |- id(caller_id_text_sensor).publish_state(caller_id); on_call_connected: - logger.log: format: Call connected on_call_disconnected: - logger.log: format: Call disconnected on_ussd_received: - lambda: |- id(ussd_message).publish_state(ussd);
Code Senden:
button: - platform: template name: SMS-Senden id: SMS_Senden on_press: - sim800l.send_sms: recipient: '+xxxxxxxxxxxxx’ #TelNr message: test Nachricht
Dieses funktioniert auch sehr gut.
Aber jetzt zu meinem Problem. Ich möchte die Telefonnumer und Nachricht, welch versendet wird variable gestalten. dazu hab ich TelNr und Nachrichtentext über MQTT an den Wemos übertragen (MQTT, da ich gelesen hab das sonst eine Übertragung von IOBroker zu ESPHome per API nicht möglich ist).
text_sensor: - platform: mqtt_subscribe name: "SMS-Senden_TelNr" id: empfnr topic: GSM/telnr - platform: mqtt_subscribe name: "SMS-Senden-Text" id: smstext topic: GSM/sms_txt
Das funktioniert auch. Aber wie bekomme ich die Variablen id: empfnr und id: smstext nach
- sim800l.send_sms:
recipient: --> id:empfnr
message: --> id:smstxt
geschrieben.
Für Tips bedanke Ich mich.
- sim800l.send_sms:
-
Hallo
Jetzt ist ein Tag vergangen und ich hab noch einmal rumprobiert. Jetzt funktioniert es.
Eigentlich ganz einfach wenn man weis wiebutton: - platform: template name: SMS-Senden id: SMS_Senden on_press: - sim800l.send_sms: recipient: !lambda |- return id(empfnr).state ; message: !lambda |- return id(smstext).state ;
komplet sieht das Ganze jetzt so aus:
esphome: name: esp8266-wemos-gsm friendly_name: ESP8266-Wemos-GSM esp8266: board: d1_mini web_server: port: 80 mqtt: broker: 192.168.178.222 status_led: pin: number: GPIO2 inverted: true switch: - platform: restart name: "Restart-ESP8266-Wemos-GSM" sensor: - platform: sim800l rssi: name: "Sim800L RSSI" binary_sensor: - platform: sim800l registered: name: "Sim800L Registered" ####### Uart Parameter uart: baud_rate: 9600 tx_pin: TX rx_pin: RX text_sensor: ######## empfang - platform: template id: sms_sender name: "Sms Sender" - platform: template id: sms_message name: "Sms Message" - platform: template id: caller_id_text_sensor name: "Caller ID" - platform: template id: ussd_message name: "Ussd Code" ######## senden - platform: mqtt_subscribe name: "SMS-Senden_TelNr" id: sms_telnr_senden topic: GSM/telnr - platform: mqtt_subscribe name: "SMS-Senden-Text" id: sms_text_senden topic: GSM/sms_txt ####### senden bei Knopfdruck button: - platform: template name: SMS-Senden id: SMS_Senden on_press: - sim800l.send_sms: recipient: !lambda |- return id(sms_telnr_senden).state ; message: !lambda |- return id(sms_text_senden).state ; ####### sms Empfang sim800l: on_sms_received: - lambda: |- id(sms_sender).publish_state(sender); id(sms_message).publish_state(message); on_incoming_call: - lambda: |- id(caller_id_text_sensor).publish_state(caller_id); on_call_connected: - logger.log: format: Call connected on_call_disconnected: - logger.log: format: Call disconnected on_ussd_received: - lambda: |- id(ussd_message).publish_state(ussd); # Enable logging logger: baud_rate: 0 # disable uart logger on esp 8266 # Enable Home Assistant API api: encryption: key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ota: password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "ESP8266-Wemos-GSM" password: "xxxxxxxxxxxx" captive_portal:
Was bei der ganzen sache nicht so schön ist, dass die empfangenen SMS im ESPHome Pfad sind und die zu sendenen im MQTT Pfad. Das werde ich über den Alias Adapter machen dann hat man alle Datenpunkte in einem Pfad.
CU ichbinblue
-
@ichbinblue2010 Sehr interessantes Projekt, zumal für ein stand Alone Projekt, wo z.B. kein Internet besteht.
Wie ist das mit dem Pin der Simkarte gelöst? Den Pin raus genommen? und welche Netze gehen?
Grüße Heiko -
@kopterframe Hallo
Bei der SIM Karte ist die Pin deaktiviert. In der Doku hab ich auch keinen Parameter zur Pin Eingabe gefunden. Die Telefonkarte ist eine Pre-Paid Karte von Congstar. Das ist D1.CU IchBinBlue