Marcin_K
(Marcin)
March 20, 2024, 4:43pm
1
Cześć
Tam, gdzie potrzebuje odczytywacćwodomierze nie mam wifi. czy jest opcja, zeby pożenić to w jakiś sposób np z modułem sim900a, żeby korzystając z gprs wysyłać dane na serwer?
szopen
March 20, 2024, 5:56pm
3
Jak może zauważyłeś w poście powyżej integracja z modułami GSM nie służy połączeniu z internetem lecz obsłudze połączeń i SMS.
Użyj routera z WiFi (może być i bez WiFi byleby miał Ethernet i o ile ogarniesz obsługę sieci czyli użyjesz odpowiedniej konstrukcji).
A gdyby tak uzyc dwoch modolow gsm jeden przy licznikach drugi tam gdzie jest ha
Ha moglby wysylac sms do “licznikow” i wtedy “liczniki” odsylaly by sms z aktualnymi stanami. Albo w ogole liczniki mogłyby slac sms co okreslony przedzial czasowy.
szopen
March 20, 2024, 6:05pm
5
Pewnie by mogły, ale jest jeden problem - takie rozwiązanie nie istnieje w postaci gotowca, więc jeśli sobie napiszesz to będziesz miał.
Gotowy kod upublicznij na githubie i oczywiście podlinkuj na forum.
_Szczepan
(Szczepan)
March 20, 2024, 7:31pm
6
Bez sensu.
Zrób tak. Dajesz ESP32 + CC1101 + jakiś sim7600.
Spinasz to wszystko przy pomocy TinyGSM + mqttClient + mój kod dla CC1101 (przerobiony bo już nie będzie to ESPHome).
CC1101 odbiera ramki wM-Bus, ESP32 je obrabia i wysyła poprzez MQTT do jakiegoś brokera a HA z tego brokera zaciąga co chce.
1 Like
Marcin_K
(Marcin)
March 21, 2024, 4:32pm
7
_Szczepan:
sim7600
fajnie, ale ja nie chce wysylac smsow. bo to kosztuje. gprs mam za 5zl za rok
_Szczepan
(Szczepan)
March 21, 2024, 4:54pm
8
Dlatego zaproponowałem libkę Tiny GSM. Przy jej pomocy będziesz miał ‘normalny internet’.
Poniżej masz przykład MqttClient’a
/**************************************************************
*
* For this example, you need to install PubSubClient library:
* https://github.com/knolleary/pubsubclient
* or from http://librarymanager/all#PubSubClient
*
* TinyGSM Getting Started guide:
* https://tiny.cc/tinygsm-readme
*
* For more MQTT examples, see PubSubClient library
*
**************************************************************
* This example connects to HiveMQ's showcase broker.
*
* You can quickly test sending and receiving messages from the HiveMQ webclient
* available at http://www.hivemq.com/demos/websocket-client/.
*
* Subscribe to the topic GsmClientTest/ledStatus
* Publish "toggle" to the topic GsmClientTest/led and the LED on your board
* should toggle and you should see a new message published to
Ten plik został obcięty. pokaż oryginał
Marcin_K
(Marcin)
March 21, 2024, 5:05pm
9
To z innej beczki, bo taka kombinacja bedzie drozsza niz jakis uzywany router gsm z wifi. Czy esp+cc1101 z Twoim kodem i esphome musi miec non stop polaczenie z wifi czy moze trzymac w jakim buforze sczytane ramki i przeslac hurtem jak polaczy sie z siecia?
_Szczepan
(Szczepan)
March 21, 2024, 5:12pm
10
Zależy za ile wszystko kupisz. Na szybko to poniżej masz HW
https://pl-m.banggood.com/LILYGO-TTGO-T-SIM-A7670G-A7670E-A7670SA-R2-Wireless-Module-ESP32-Chip-4G-LTE-CAT1-MCU32-Development-Board-Support-GSM-or-GPRS-or-EDGE-p-1951293.html
Tak ESPHome na bieżąco wysyła dane.
Ale już rozwiązanie z TinyGSM zależy od tego jak połączysz te “klocki”. Tu nie ma gotowca - misisz sam poskładać soft. Dzieki temu masz władzę.
szopen
March 21, 2024, 5:59pm
11
Taka moją propozycja, by odciąć ten temat w osobny wątek o rozsądnym tytule.
Bo związek z opisywanym tu rozwiązaniem jest raczej mierny.
edit - coś drgnęło w temacie obsługi połączania danych GSM w ESPHome (istniejący komponent sim800l
obsługuje tylko SMS), betatesterzy poszukiwani
esphome:dev
← oarcher:gsm
opened 08:48PM - 11 May 24 UTC
# What does this implement/fix?
This implement pppos tcp/ip for esp32. it con… flict with `wifi` or `ethernet` component.
## Types of changes
- [ ] Bugfix (non-breaking change which fixes an issue)
- [X] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Other
**Related issue or feature (if applicable):**
https://github.com/esphome/feature-requests/issues/2303
https://github.com/esphome/feature-requests/issues/477
https://github.com/esphome/feature-requests/issues/1379
**Pull request in [esphome-docs](https://github.com/esphome/esphome-docs) with documentation (if applicable):** esphome/esphome-docs#<esphome-docs PR number goes here>
## Test Environment
- [ ] ESP32
- [X] ESP32 IDF
- [ ] ESP8266
- [ ] RP2040
- [ ] BK72xx
- [ ] RTL87xx
## Example entry for `config.yaml`:
<!--
Supplying a configuration snippet, makes it easier for a maintainer to test
your PR. Furthermore, for new integrations, it gives an impression of how
the configuration would look like.
Note: Remove this section if this PR does not have an example entry.
-->
```yaml
# While not merged, this PR is also available as an externa component
external_components:
- source: github://pr#6721
components: [ network modem ]
# Currently, to power cycle the modem, we will use an external package
# at https://github.com/oarcher/piotech/blob/main/packages/lilygo_tsim.yaml
# this will create a binary sensor 'modem_ready' that the component will use
# to check the modem state.
# it works for LilyGo T-SIM7600, but might be adaptated for other devices
# This is needed, because ( at least on Lilygo T-SIM, a warm reboot doesn't reset the modem,
# and it's not responding to AT commands )
substitutions:
pwr_pin: GPIO04
pwr_pin_inverted: "True"
status_pin: GPIO34
flight_pin: GPIO25
packages:
modem_power:
url: https://github.com/oarcher/piotech
files: [ packages/lilygo_tsim.yaml ]
refresh: 10min
modem:
id: atmodem
ready: modem_ready # The binary sensor that reports the modem state
rx_pin: 26
tx_pin: 27
model: SIM7600 # or BG96 SIM7000 SIM800
apn: orange
username: orange
password: orange
pin_code: "0000"
# we can send initial AT commands at setup
# here to configure GNSS and poweron GPS
init_at:
- AT+CGNSSMODE=15,1 # GNSS all navigation systems
- AT+CGPS=1 # GPS on
mqtt:
# mqtt with a public brocker available is mandatory, because it's currently the only way to reach the device
# on a private and foreign network.
# the DCE is available to others components here an example that feed
# a text sensor with a google map url
text_sensor:
- platform: template
name: "gmap"
update_interval: 60s
lambda: |-
std::string gnss_info;
esp_modem::command_result err;
err = id(atmodem)->dce->at("AT+CGNSSINFO", gnss_info, 3000);
if (err != esp_modem::command_result::OK) {
return { "AT+CGNSSINFO ERROR" };
}
std::string data = gnss_info.substr(12);
std::vector<std::string> parts;
size_t pos = 0;
std::string delimiter = ",";
while ((pos = data.find(delimiter)) != std::string::npos) {
parts.push_back(data.substr(0, pos));
data.erase(0, pos + delimiter.length());
}
parts.push_back(data);
if (parts.size() < 14) {
return { "Invalid GNSS data: " + gnss_info };
}
std::string latitude = parts[4];
std::string lat_direction = parts[5];
std::string longitude = parts[6];
std::string lon_direction = parts[7];
if (latitude.empty() || lat_direction.empty() || longitude.empty() || lon_direction.empty()) {
return { "Invalid GNSS data: " + gnss_info };
}
double lat_deg = std::stod(latitude.substr(0, 2));
double lat_min = std::stod(latitude.substr(2));
double lat = lat_deg + (lat_min / 60.0);
if (lat_direction == "S") lat = -lat;
double lon_deg = std::stod(longitude.substr(0, 3));
double lon_min = std::stod(longitude.substr(3));
double lon = lon_deg + (lon_min / 60.0);
if (lon_direction == "W") lon = -lon;
std::string google_maps_link = "https://www.google.com/maps/search/?api=1&query=" + std::to_string(lat) + "," + std::to_string(lon);
return { google_maps_link };
```
## Checklist:
- [x] The code change is tested and works locally.
- [x] Tests have been added to verify that the new code works (under `tests/` folder).
If user exposed functionality or configuration variables are added/changed:
- [ ] Documentation added/updated in [esphome-docs](https://github.com/esphome/esphome-docs).
_Szczepan
(Szczepan)
August 29, 2024, 8:53pm
12
Fajnie. Teraz tylko muszę mój komponent przerobic aby wspierał esp-idf