Marcin_K
(Marcin)
20 Marzec 2024 16:43
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?
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.
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.
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 polubienie
Marcin_K
(Marcin)
21 Marzec 2024 16:32
7
_Szczepan:
sim7600
fajnie, ale ja nie chce wysylac smsow. bo to kosztuje. gprs mam za 5zl za rok
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)
21 Marzec 2024 17:05
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?
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
21 Marzec 2024 17:59
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)
29 Sierpień 2024 20:53
12
Fajnie. Teraz tylko muszę mój komponent przerobic aby wspierał esp-idf