IoT-Guru ihmettelyt ja muu mqtt-höpinä

iro

Vakionaama
Kerätään tänne tarinaa ja kokemuksia IoT-Gurusta ja muista mqtt-palveluista (jotka eivät kiinteästi liity johonkin muuhun keskusteluun). Postatkaa aiheeseen liittyviä kysymyksiä ja kokemuksia niin saadaan keskustelu liikkeelle!
 

puu

Aktiivinen jäsen
TIG-stackia suosittelen lämpimästi Mosquitto MQTT-brokerin kaveriksi, jos löytyy sopiva Linux-palvelin (esim. Raspberry Pi) ja taitoa sellaisen pystytykseen. Sen Grafana-käyttöliittymällä saa hyvin piirrettyä kuvaajia, ja sillä pystyy tekemään myös laskentaa, esimerkkinä COP:n laskeminen lämpötila- ja tehotietojen perusteella.

Mutta vaatii tosiaan hieman enemmän laittamista kuin esim. tuo IoT-Guru.


1675689897872.png
 

haraldh

Vakionaama
Koitan työntää tuohon iot-guruun dataa mutta mosquitto_sub pysyy vain hiljaa.

Tuollaisella komennolla haen viimeisen minuutin tehonkulutuksen Shelly Plug S:ästä, teen JSON-lausekkeen ja työnnän sen tuonne IoT Gurun palveluun;
Koodi:
#! /bin/bash
mosquitto_pub=mosquitto_pub
#mosquitto_pub=echo

##################
#These are Shelly Gen1 devices
model="Konttori"
id="123"
address="192.168.0.$id"
string="$(curl -s http://${address}/meter/0 | sed -e 's,{,,' | sed -e 's,},,')"
power=$(echo "{${string}}" | jq -r .counters | jq '.[0]') # power mean for last minute in wattminutes
sumpower=$(echo $sumpower + $power|bc)
${mosquitto_pub} -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}}"
Jos laitan toiseen shelliin mosquitto_sub ajamaan, ja ajan skripting näyttää tuolta:
Koodi:
$ mosquitto_sub 
Connection error: Connection Refused: identifier rejected.
$
Ja toisessa:
Koodi:
$ ./scripts/shelly-to-mqtt.sh 
Connection error: Connection Refused: identifier rejected.
Error: The connection was refused.
Tuossa tutorialissa ei kuitenkaan puhuta mistään rajoituksesta etteikö samalla tunnuksilla voisi sekä publishata ja subscribata.

Ja mihin se mun sinne työntämä data menee, mistä näen sen?
 

haraldh

Vakionaama
Minulla on tuollainen TIG-stack kone pyörimässä, ja saan ilmeisesti datan mun mqtt-skriptillä menemään InfluxDB kantaan mutta sitten kun pitäisi visualisoida on nuo mittaustiedot vain pisteitä kuvaajassa.

Miten saa Telegrain laittamaan esim "id" arvon tagiksi jotta voisin ryhmitellä mittausdatan kuvaajiksi?
telegraf.conf;
Koodi:
data_format = "json"
[[inputs.mqtt_consumer]]
servers = ["ssl://oma.palvelin:8883"]
topics = [
    "/oma/topic"
]
client_id = "telegraf@grafana"
username = "harald"
password = salasana
data_format = "json"
 

iro

Vakionaama
  • Keskustelun aloittaja
  • #5
Koitan työntää tuohon iot-guruun dataa mutta mosquitto_sub pysyy vain hiljaa
Pari asiaa tuli mieleen.
1) Jokaisella mqtt-palvelimeen (samanaikaisesti) liittvällä laitteella täytty olla oma Client_ID. IoT-Gurussa tuo tarkoittaa että jokaiselle laitteelle täytyy määritellä oma "Device".
==> luo IoT_Guruun tarvittava määrä Devicejä (Devicen alle ei välttämättä tarvitse määritellä mitään).
==>jokainen "Device" voi julkaista/tilata tietoa kaikkiin/kaikista saman käyttäjän topiceista (yli "Device"-rajojen).

2) IoT-Guru mqtt osaa välittää Json-muotoiset sanomat, mutta IoT_Guru ei osaa parsata niitä. Eli käppyrää syntyy vain jos mqtt-sanoma on yksittäinen numero.

3) Itse käytän Mqtt-Explorer'a, sillä pystyn katsomaan kaiken mitä IoT-Guruun lähetetään minun Username'n alla.
Käytän myös Android IoT MQTT Panelia, siinä ei voi käyttää #-merkkiä, mutta jos tietää tarkalleen minkä topicin haluaa tilata tai mihin julkaista niin sekin toimii
 

haraldh

Vakionaama
Ilmeisesti yksi "Device" voi lähettää dataa, mutta jos samalla device Id-llä yrittää tilata (sub) mqtt dataa heittää palvelin molemmat ulos.

Nyt se "device" eli mun skripti autentikoituu käyttäen Device credentials eli User name: user short identifier, Client id: device short identifier ja Password: device key.

Ja mun mosquitto_sub autentikoituu käyttäen User credentials eli User name: user short identifier, Client id: user short identifier + something unique whatever ja Password: your actual password

eli toisessa tapauksessa deviceid-unique1 esimerkiksi. Nyt lähti mosquitto_sub ikkunassa rullaamaan dataa.

Asensin tuon IoT MQTT Panel äppin Androidiin ja sain heti tehdä bugiraportin iotguru palveluun kun palvelin mqtt.iotcloud.guru:lla on IPv6-osoite DNS-palvelussa mutta se ei vastaa siihen jonka jälkeen äppi ei edes yritä IPv4 osoitteella. Use case minulla on että haluaisin konffata jonkun tällaisen äpin appiukolle josta se voisi seurata ILP:ien virrankulutusta minuuttitasolla kun Shellyjen käppyrät on liian ylimalkaisia siihen että niistä näkisi sulatusten tiheyden (nimimerkillä LN-25 ja LN-35 ILP).

Kiitos iro tuosta kohdasta 2. Luovutan tämän palvelun osalta ja koitan keksiä jotain muuta tapaa piirtää käppyrää appiukolle. Jos tekisin niin että kirjoittaisin numeroita (miten kerron laitteen, entäs mitä numeroa kirjoitan?) niin mihin nuo käppyrät tulee tuossa palvelussa?

Se data mikä lähtee yhteen topiciin mqtt-palveluun on nyt tämän näköistä;
Koodi:
{"time" : "2023-02-06 17:22:02", "model" : "Talo", "power" : 272.346, "id" : 9122}
{"time" : "2023-02-06 17:22:02", "model" : "SumPower", "power" : 289.446, "id" : 9999}
{"time" : "2023-02-06 17:23:01", "model" : "Konttori", "power" : 32.03, "id" : 9123}
{"time" : "2023-02-06 17:23:01", "model" : "Talo", "power" : 327.991, "id" : 9122}
{"time" : "2023-02-06 17:23:01", "model" : "SumPower", "power" : 360.021, "id" : 9999}
{"time" : "2023-02-06 17:24:01", "model" : "Talo", "power" : 344.359, "id" : 9122}
{"time" : "2023-02-06 17:24:02", "model" : "SumPower", "power" : 428.843, "id" : 9999}
{"time" : "2023-02-06 17:24:01", "model" : "Konttori", "power" : 84.484, "id" : 9123}
{"time" : "2023-02-06 17:25:02", "model" : "Talo", "power" : 349.07, "id" : 9122}
{"time" : "2023-02-06 17:25:01", "model" : "Konttori", "power" : 60.373, "id" : 9123}
{"time" : "2023-02-06 17:25:02", "model" : "SumPower", "power" : 409.443, "id" : 9999}

Minun olisi varmaan aloitttaa topiccien käyttämäminen aivan eri tavalla kuin nyt jotta olisin yhteensopiva noitten pilvipalveluitten kanssa. Ei sekään nyt varmaan ole mikään ongelma.

Onko esimerkkiä sellaisista MQTT viesteistä joita IoTguru ymmärtää?
 

iro

Vakionaama
  • Keskustelun aloittaja
  • #7
Jos tekisin niin että kirjoittaisin numeroita (miten kerron laitteen, entäs mitä numeroa kirjoitan?) niin mihin nuo käppyrät tulee tuossa palvelussa?

IoT-Gurussa "Field" sivulla on "Help"-välilehti, sen alta löytyy kyseisen Fieldin GENERIC MQTT TOPIC
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/delta

joka siis yksikäsittesesti kertoo minne tuolla osoitteella lähetetty tieto menee.

Eli lähettävässä Clientissä tuo merkkijono on topic ja sen perään sitten payload "raw"-muodossa, (olisiko niin että jos ei erikseen määritellä JSON-käyttöä Client lähettää "raw"-dataa")
IoT MQTT panel-esimerkki:
Topic: pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/delta
Payload: 23
==> IoT_Guru ko.käppyrälle ilmestyy 23
 

haraldh

Vakionaama
Pitäisikin varmaan käyttää jotain topic-rakennetta joka olisi ;
Koodi:
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/delta/laite1/teho
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/delta/laite1/temp
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/delta/laite2/teho
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/delta/laite3/teho
jne ja sitten vain kirjoittaa tuohon topiciin yhden numeron. Eli koodaa periatteessa laitteen nimen, mitatttava suuren topicin nimeen.
 

iro

Vakionaama
  • Keskustelun aloittaja
  • #9
Pitäisikin varmaan käyttää jotain topic-rakennetta joka olisi ;

Muodostavatko nuo (laite1, laite2, laite3) omat mqtt istuntonsa ?
Silloin noille tarvitaan määritellä omat "Devicet" ja jokaisen noiden alle luoda "Node" ja "Field" tasot.

Jos kaikki data halutaan keskittää yhteen paikkaan voisivat topicit olla:
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/laite1_teho pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/laite1_temp
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/laite2_teho

Haluttaessa voisi laitteet erottaa myös "Node" tasolla... eli vaihtoehtoja on useita
 

iro

Vakionaama
Asensin tuon IoT MQTT Panel äppin Androidiin ja sain heti tehdä bugiraportin iotguru palveluun kun palvelin mqtt.iotcloud.guru:lla on IPv6-osoite DNS-palvelussa mutta se ei vastaa siihen jonka jälkeen äppi ei edes yritä IPv4 osoitteella.
Tähän en nyt pääse kiinni...minulla IoT MQTT Panel kirjoittaa ja lukee nätisti IoT-Gurua. Brokerin osoitteena on iotguru.live, myös ip 195.201.219.208 käy.
 

iro

Vakionaama
Jos käytät IoT-Gurua (tai vaikka Mosquittoa raspissa) ja olet kiinnostunut seuraamaan miten mqtt-viestit kulkevat tai jos mqtt ei toimi haluamallasi tavalla kannattaa ottaa käyttöön MQTT-Explorer (löytyy sekä Windows- että MAC-sovelluskaupasta ilmaisena).
Googlaamalla löydät paljon MQTT Exploreriin liittyvää ohjeistoa, alla kuitenkin step-by-step ohje konfaamisesta IoT-Guru yhteydelle.

Esivalmisteluna mene IoT-Guruun ja määrittele sinne uusi "Device" (esim MQTT_Explorer), Devicen alle ei tarvitse määritellä mitään.

Käynnistä MQTT Explorer sovellus ja klikkaamalla "+" luo uusi "connection" (esim. Guru-client)
* kenttään "host" laita iotguru.live
* kenttään "Username" kopioi IoT-Guru välilehdeltä "Account" löytyvä "Short identifier" (tyypiä tQAz8YAINFxyzTbAft0R7Q)
* kenttään "Password" kopioi IoT-Guru välilehdeltä "Device/"MQTT_Explorer"/"Device details" löytyvä "Device key"(tyyppiä iwBR1HklmSfPlAV9ng8lMTA)
klikkaa "Advanced" ja avautuvaan näkymään
* kenttään "MQTT Client ID" kopioi IoT-Guru välilehdeltä "Device/"MQTT_Explorer"/"Device details" löytyvä "Device short identifier"
* kenttään "topic" kopioi IoT-Guru välilehdeltä "Account" löytyvä "Short identifier", lisää alkuun pub/ ja loppuun /# (eli on muotoa pub/tQAz8YAINFxyzTbAft0R7Q/#)
* klikkaa "ADD", "BACK", "SAVE" ja "CONNECT"
==> mqtt-yhteys IoT-Guruun muodostuu
* näkymän vasemmassa laidassa alkaa näkyä IoT-Guruun tulevat topicit ja viestit, topicia klikkaamalla voit edetä raketeessa alaspäin kunnes pohjalta löytyy lähetetty arvo (tai merkkijono)
* näkymän oikeassa reunassa näkyy valittu topic tai arvo yksityiskohtaisesti

Oikean laidan alaosassa on "Publish" osio. Kun tuohon "topic" kohtaan kopiot IoT-Gurusta "Device"/"Node"/"Field" kohdan välilehdetä "Help" lyötyvän "GENERIC MQTT TOPIC" merkkijonon (tyyppiä pub/tQAz8YAINFhhhTbAft0R7Q/l4xFwC126KX40UWQft0R7Q/rEWtD1fYqbatX1nggHMR7Q/tila), valitset "raw" ja annat arvon esim 25 ja klikkaat "PUBLISH" tuo arvo näkyy vastaavassa IoT-Gurun käppyrässä.

Jos haluat katsoa vain tästä hetkestä eteenpäin tulevaa liikennettä voit poistaa vanhat valitsemalla vasemmasta laidasta topicin "pub" ja klikkata oikeassa yläreunassa olevaa roskakorin kuvaketta.
 

iro

Vakionaama
pub/tQAz8YAINFNzHTbAjj0R7Q/l4xFwCiKxKkk0UWQft0R7Q/rEWtD1fYqNnnX1nggHMR7Q/delta/laite1/teho
IoT-Guru mqtt_serveri hyväksyy kuvaamasi rakenteen (eli syventää hierarkiaa) ja asetta "payloadin" oikeaan paikkaan josta sen voi tilata,.
Oman kokemukseni mukaan IoT-Guru ei kuitenkaan voi hyödyntää arvoa, sillä ainoa taso jolta IoT-Guru tallettaa historiaa (ja näyttää kuvaajaa) on tuossa tapauksessa pub/.../.../.../delta (ja tällöin payload täytyy numeroarvo).

Android IoT MQTT Panel pystyy hakemaan arvot. Jos tarve se osaa myös parsata arvot näkyviin JSON-muotoisesta MQTT-sanomasta.
Eli joku IoT_client voi lähettää JSON-sanomia IoT_Gurun mqtt-serverille josta IoT MQTT Panel voi tilata ne ja tulkita halutut arvot näkyviin.
 
Viimeksi muokattu:

wannabe

Aktiivinen jäsen
Olen tuon tavannut (mqtt sain connected), mutta ongelmana on, että internet/advanced- developer settings valikkoa ei löydy, vaan ainoastaan oheisen kuvan mukainen webbrowseri, josta tuota ei löydy.... (vastaavan liittymän saa myös shellyn pilvestä):

Settings --> Device Info ja siellä klikkaa DEVICE IP --> Internet & Security

Shelly UNI:ssa tuo Custom MQTT Prefix oli rajoitettu 32 merkkiin, mutta IoT GURU:ssa noita shortID:itä taas ei voi itse määritellä, ja automaattisesti generoidut ID:t ovat liian pitkiä. UNI:n osalta jäin siis umpikujaan tässä kohtaa.

Tuohon merkkimäärän rajoitukseen löytyi selitys firmware päivityksistä. Rajoitus tullut 1.10.5_RC1 firmwaressa, jos nyt oikein ymmärsin. https://m.facebook.com/groups/ShellyIoTCommunitySupport/posts/3796764140422922/

Tuolta https://sequr.be/blog/2020/11/force-update/downgrade-shelly-firmware/ on helppo vaihtaa vanhempaan firmwareen

Shellyn konfaamisesta IotGuruun ollut ihmettelyä muutamassa viestissä ja tämä kiinostaa myös minua. Aihetta on googlattu enemmän ku järkevä ihminen viitsii tehdä, mutta huonoin tuloksin kun etsinnässä ohje for dummies.

Ja edelleen on dummy olo :confused: Testipalikkana Shelly1, johon suurin toivein ja odotuksin vaihdoin 1.10.4 firmwaren ja ja ... en vaan kai osaa. Tolla https://iotguru.cloud/tutorials/shellies sivulla on oikein kuvien kans ohjeet ja taisteltu on niitä hyödyntäen, mutta ei vaan pelaa. Kännykällä iotGurusta Field Helpistä kopioitu topic menee prefix-kenttään, mutta läppärillä jos yrittää, niin edelleen on se 32 merkin rajoitus. Muistaako läppäri uudemman firmwaren rajoituksen ja siksi pitkä topic ei kelpaa? No, kun kännykällä syöttäen kelpaa, niin sillä siis testaamaan milloin mitäkin muuttaen ja MQTT-Explorerilla liikennettä seuraten. Läpi ei tule muuta kuin loistavan Mitsurunnerin data. On koitettu rebootilla ja ilman ja vaikka miten.

Jos joku yrittää ja saa toimimaan, niin kiittäen ja kumartaen ottaisin ohjeet vastaan.
 

iro

Vakionaama
Shellystä en mitään tiedä mutta IoT-Guruun (non secure) liittyen topicin pitää mielestäni alkaa pub/UserShortId/...
 

wannabe

Aktiivinen jäsen
Tossa tutorialsissa ei tosiaan tota pub/ alkua topic-mallissa ole. Kokeilin ilman pubiakin, mutta pääosin IoT-Gurusta Field --> Generic MQTT Topic kopioimalla copy - paste systeemillä, eli aivan samalla systeemillä kuin Mitsurunnerin platformiin topicit laitoin. Topicin pitäsisi siis olla Gurun hyväksymässä muodossa, joten joku muu siinä ahdistaa. Syötettäviä kohtiahan tuossa ei monta ole. Server-kohtaan tarjosin kaikkia mahdollisia esillä olleita osoitteita. Yritystä kyllä on ollut, mutta noob on noob, eikä aina onnistu edes säkällä :confused:
 

iro

Vakionaama
Yritystä kyllä on ollut, mutta noob on noob, eikä aina onnistu edes säkällä
Shellyn logista ei vissiin voi nähdä saako Shelly yhteyden MQTT-Brokeriin ?

MQTT-Explorer:lla tutkin joskus IoT-Gurun brokeria, Broker noteeraa vain sanomat, joiden topic'in alussa on pub/UserShortId/DeviceId/..., loppuosa voi olla mitä vaan (sekä UserShortId että DeviceId täytyy olla määritelty IoI-Gurussa).

Jos työkalupakissa olisi Shelly, MQTT-Explorer ja oma MQTT-Broker (esim Mosquitto) niin pääsisi tarkemmin katsomaan mitä tapahtuu.
Jos Shellyyn laittaa oman Brokeri osoitteen ja kirjautumistiedot mutta jättää muut asetukset IoT-Gurun mukaisesti . Laittaa MQTT-Explorerin seuraamaan oman Brokerin liikennettä. Siellä näkyä millaisilla topiceilla ja mitä tietoa Shelly lähettää.
 

iro

Vakionaama
MQTT-Explorer:lla tutkin joskus IoT-Gurun brokeria, Broker noteeraa vain sanomat, joiden topic'in alussa on pub/UserShortId/DeviceId/..., loppuosa voi olla mitä vaan (sekä UserShortId että DeviceId täytyy olla määritelty IoI-Gurussa).
NOTE: Jos IoT-Gurun liikennettä seuraa MQTT-Explorerilla täytyy sille IoT_Guruun määritellä oma "Device" (jokaisella MQTT-client'lla täytyy olla uniikki id).
 

Raspi

Jäsen
Settings --> Device Info ja siellä klikkaa DEVICE IP --> Internet & Security



Tuohon merkkimäärän rajoitukseen löytyi selitys firmware päivityksistä. Rajoitus tullut 1.10.5_RC1 firmwaressa, jos nyt oikein ymmärsin. https://m.facebook.com/groups/ShellyIoTCommunitySupport/posts/3796764140422922/

Tuolta https://sequr.be/blog/2020/11/force-update/downgrade-shelly-firmware/ on helppo vaihtaa vanhempaan firmwareen



Ja edelleen on dummy olo :confused: Testipalikkana Shelly1, johon suurin toivein ja odotuksin vaihdoin 1.10.4 firmwaren ja ja ... en vaan kai osaa. Tolla https://iotguru.cloud/tutorials/shellies sivulla on oikein kuvien kans ohjeet ja taisteltu on niitä hyödyntäen, mutta ei vaan pelaa. Kännykällä iotGurusta Field Helpistä kopioitu topic menee prefix-kenttään, mutta läppärillä jos yrittää, niin edelleen on se 32 merkin rajoitus. Muistaako läppäri uudemman firmwaren rajoituksen ja siksi pitkä topic ei kelpaa? No, kun kännykällä syöttäen kelpaa, niin sillä siis testaamaan milloin mitäkin muuttaen ja MQTT-Explorerilla liikennettä seuraten. Läpi ei tule muuta kuin loistavan Mitsurunnerin data. On koitettu rebootilla ja ilman ja vaikka miten.

Jos joku yrittää ja saa toimimaan, niin kiittäen ja kumartaen ottaisin ohjeet vastaan.
Mikäköhän versio mulla on kun ei tuota valikkoa löydy
 

Liitteet

  • shellynf.PNG
    shellynf.PNG
    27,6 KB · Katsottu: 129

iro

Vakionaama
Eikös tuon rajoituksen voi hoitaa jakamalla (IoT-Guru) topicin kahteen osaan?
* pre-fix osaan laittaa " pub/UserShortId/"
* ja varsinaiseen topiciin loput "DevicesShortId/NodeShortId/Field"
 

wannabe

Aktiivinen jäsen
Eikös tuon rajoituksen voi hoitaa jakamalla (IoT-Guru) topicin kahteen osaan?
* pre-fix osaan laittaa " pub/UserShortId/"
* ja varsinaiseen topiciin loput "DevicesShortId/NodeShortId/Field"

Ei pysty jakamaan kun ei ole kuin vain toi prefix, johon topicin voi laittaa. Vaihtamalla aiemmin mainitsemaani firmwareen pitkä topic menee prefixiin, mutta ei vaan pelaa. Jos joku kokeilee = jaksaa taistella, will the force be with you, niin muistakaa rebootata Shelly muutosten jälkeen. Oon polttanu tän googlaamisen kohtuuttoman paljon aikaa ja hermoa ja taidan nostaa kädet pystyyn ja laittaa tilaten ton https://www.ebay.de/itm/255283289482?hash=item3b7011dd8a:g:q18AAOSwUPxdQGiI

Muistikuva, että joku oli vastaavan clampin laittanu ja gonfannu Mitsurunneriin. Mitsurunner on tässäkin mielessä huipputuote, ei tarvii päiväkausia tapella (turhaan), että sais sen kommunikoimaan IotGurun kanssa. Muutama copy - paste ja VOLÀ, jo vain pelaa ja käppyrää piirtyy :bileet:.

Kuva kopioitu IotGurun Shelly ohjeesta ja juuri samanlainen aukeaa mulla. IotGurussa Shellylle oma device, node luotu ja sille field ja sen helpistä copy - pastaten pub/..... jne - topic tohon prefix-boxiin. Googlatessa törmäsin sellaiseen Shellyn dokumentoinnin antamaan tietoon, että yli 25 merkin custom prefixiä ei suositella. Oisko tämä syynä, että 1.10.4 tuoreemmissa firmwareissa merkkimäärä on rajattu 32:een. Ilmeisesti sellaisiakin MQTT-brokereita on, jotka on paremmissa väleissä Shellyn kans kuin IoTGuru.
 

Liitteet

  • 1676214109222.png
    1676214109222.png
    112,7 KB · Katsottu: 113

iro

Vakionaama
@wannabe ,tuosta kuvasta osui silmiin brokerin osoite... tuossa se on mqtt.iotguru.cloud,
Mitsurunnerissa käytetään osoitetta 95.201.219.208.
Osoite mqtt.iotguru.cloud ei toimi Mitsurunnerissa(kaan).
 

wannabe

Aktiivinen jäsen
Kokeiltu on kaikki mahdolliset eteen tulleet iotgurun osoitteet toi 95-alkuinen mukaan lukien. Omalla olemattomalla tiedolla näistä vahvalla mutulla arvaan, että Shelly kompastuu tohon pitkään topikkiin.

Todennäköisesti sorrun vielä yrittämään, koska on mahdollista, että kun pää punaisena :prkl:paukuttaa menemään, niin yritysten järjestelmällisyyteen ja huolellisuuteen saattaa lipsahtaa puutteita. Mutta kun pessimisti ei pety, niin vahva usko on, ettei tule onnistumaan.

Jos ja kun Shellystä en tule käyrää saamaan ulos ja päädyn virranmittausanturiin, niin mittauksen tarkkuus lienee parempi tuollaisessa 0 - 5A https://www.radioduo.fi/virranmittaus-anturi/p/WPSE355/ anturissa kuin aiemmin linkkaamassani 0 - 30A anturissa?
 
  • Tykkää
Reactions: iro

Raspi

Jäsen
Applen laitteet käytössä? Mulla Android ja Windows ja settingsistä edeten löytyy. Sun kuvan mukaista valikkoa ei mulla ole.
Ihan on wintoosa/android ympäristö ja kuvanmukainen härpätin.
Linuxin kanssa saan haettua "statuksen" josta ajattelin parsia tehon ja ajaa rrd databaseen, sieltä saa nätisti käppyröitä, eipähän jää pilveen mitään....

ile@Hima:~ $ curl -s 10.0.0.196/rpc/Shelly.GetStatus
{"ble":{},"cloud":{"connected":true},"input:0":{"id":0,"state":false},"mqtt":{"connected":false},"switch:0":{"id":0, "source":"SHC", "output":true, "apower":39.8, "voltage":232.4, "current":0.170, "aenergy":{"total":2.579,"by_minute":[55.280,0.000,0.000],"minute_ts":1676314645},"temperature":{"tC":48.2, "tF":118.8}},"sys":{"mac":"xxxxxx","restart_required":false,"time":"20:57","unixtime":1676314646,"uptime":1463,"ram_size":234592,"ram_free":155676,"fs_size":458752,"fs_free":94208,"cfg_rev":11,"kvs_rev":0,"schedule_rev":0,"webhook_rev":0,"available_updates":{}},"wifi":{"sta_ip":"10.0.0.196","status":"got ip","ssid":"xxxxx","rssi":-35},"ws":{"connected":false}}
ile@Hima:~ $
 

Liitteet

  • 20230213_210746.jpg
    20230213_210746.jpg
    101,5 KB · Katsottu: 116

iro

Vakionaama
@wannabe ,@Raspi , lähettääkö shelly mqtt viestit aina JSON-muodossa ? Jos noin on niin viestit kyllä menevät IoT-Guru MQTT_serverille mutta Guru ei osaa parsat niitä ==> käppyröille tule mitään dataa. Viestit pystyy tilaamaan Gurun palvelimelta clientille ja jos se osaa parsia ne niin datan saa näkymään (esim MQTT-Explorerilla näkee kaikki sanomat tilaamalla pub/UserId/DeviceId/# sanomat).
 
Viimeksi muokattu:

wannabe

Aktiivinen jäsen
Just samanlaisen härpättimen virittelin töpseliin ja pöydälle (ei siis käytössä vielä) ihan vaan katsoakseni miten tossa noi asetukset menee. Oliko sulla härpätin töpselissä ku valikoita etsit? Saatto meinaan olla niin, että kaikki ei näy, jos käikäle ei saa energiaa.

Eihän sulla sit mitään hätää ku Linux-osaamista. Mä en uskalla koskee pitkällä kepilläkään. Hyvä kun rohkenen kirjottaa linux :eek:
 

Raspi

Jäsen
Töpselissä oli ja vedin jo kerran sen factory asetuksille, mut samat valikot... No nyt on kiva saada tietää löytyykö sulta se valikko mihin kaikki ohjeetkin viittaavat.
 

wannabe

Aktiivinen jäsen
Näpyttele härpäkkeen IP-osoite selaimen osoitekenttään. Enter ja pitäs aueta tollanen valikko. Tässä Plussassa on tältä osin näköjään vähän erillainen valikko tässä kohtaa ja eteenpäin kuin peruspalikoissa.

Klikkaa Networks...



1676371512352.png


aukee tää. Alimmaisena on MQTT ja siitä ...


1676371582739.png


aukee tää.

1676371631312.png


Samalle tielle Settings-valikkojen kautta. Oot tehny Factory Resetin. Siinä samassa valikossa, josta teit resetin, Factory Reset-painikkeen alla on Device Information-painike. Sitä painamalla aukee uus valikko, jossa kolmantena on DEVICE IP. Sen painikke aukaisee suoraan ton eka kuvan valikon,, joten ei tarvetta näpytellä IP-osoitetta.


Onnea ja menestystä Shelly - IoTGuru taisteluun :p
 

wannabe

Aktiivinen jäsen
@wannabe ,@Raspi , lähettääkö shelly mqtt viestit aina JSON-muodossa ? Jos noin on niin viestit kyllä menevät IoT-Guru MQTT_serverille mutta Guru ei osaa parsat niitä ==> käppyröille tule mitään dataa. Viestit pystyy tilaamaan Gurun palvelimelta clientille ja jos se osaa parsia ne niin datan saa näkymään (esim MQTT-Explorerilla näkee kaikki sanomat tilaamalla pub/UserId/DeviceId/# sanomat).
Tuohon JSON-muotokysymykseen vastaan vahvalla ehkällä. Ei siis ollu mitään hajua, mutta aikani googlattuani päädyin vahvaan ehkään... mutta siitäkään en ota mitään vastuuta ;D.

MQTT Explorerissa ei Shellyn liikennettä näy. Mitsurunnerin topicit se näkee ja arvot muuttuu asiaankuuluvasti. Eli ymmärsinkö oikein, että jos käikäle lähettää viestinsä JSON-muodossa, niin niitä ei voi nähdä MQTT Explorerilla, koska se muoto on iotgurulle yhtä hebreaa ku nää jutut on mulle? Mutta eiköhän tää tästä, opetellaan.

Mitä muotoa toi iotguru ymmärtää?

Iso kiitos iro:lle kun jaksat neuvoa ja opastaa. Arvostan! :hattu:
 

haraldh

Vakionaama
Ihan on wintoosa/android ympäristö ja kuvanmukainen härpätin.
Linuxin kanssa saan haettua "statuksen" josta ajattelin parsia tehon ja ajaa rrd databaseen, sieltä saa nätisti käppyröitä, eipähän jää pilveen mitään....

ile@Hima:~ $ curl -s 10.0.0.196/rpc/Shelly.GetStatus
{"ble":{},"cloud":{"connected":true},"input:0":{"id":0,"state":false},"mqtt":{"connected":false},"switch:0":{"id":0, "source":"SHC", "output":true, "apower":39.8, "voltage":232.4, "current":0.170, "aenergy":{"total":2.579,"by_minute":[55.280,0.000,0.000],"minute_ts":1676314645},"temperature":{"tC":48.2, "tF":118.8}},"sys":{"mac":"xxxxxx","restart_required":false,"time":"20:57","unixtime":1676314646,"uptime":1463,"ram_size":234592,"ram_free":155676,"fs_size":458752,"fs_free":94208,"cfg_rev":11,"kvs_rev":0,"schedule_rev":0,"webhook_rev":0,"available_updates":{}},"wifi":{"sta_ip":"10.0.0.196","status":"got ip","ssid":"xxxxx","rssi":-35},"ws":{"connected":false}}
ile@Hima:~ $
Asenna linuxiin paketti nimeltään 'jq' niin voit parsata JSON:ia.

Minulla on tuon tyylinen skripti joka minuutin välein käy eri shellyssä hakemassa tehonkulutuksen viimeisen minuutin osalta, laskee lopuksi vielä synteettisen summaluvun ja työntää tämän MQTT-palvelimelle;
Koodi:
#! /bin/bash
# 2022-12-15 Harald

# see ~/.config/mosquitto_pub for servername, username, passwords and such

sumpower="0"

##################
#These are Shelly Gen1 devices
model="ShellyIVTILP"
id="224"
address="10.0.0.$id"
string="$(curl -s http://${address}/meter/0 | sed -e 's,{,,' | sed -e 's,},,')"
#energy=$(echo "{${string}}" | jq -r '.total')
#power=$(echo "{${string}}" | jq -r '.power') # power in watts
power=$(echo "{${string}}" | jq -r .counters | jq '.[0]') # power mean for last minute in wattminutes
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}}"

##########
model="ShellySula"
id="214"
address="10.0.0.$id"
string="$(curl -s http://${address}/meter/0 | sed -e 's,{,,' | sed -e 's,},,')"
power=$(echo "{${string}}" | jq -r .counters | jq '.[0]') # power mean for last minute in wattminutes
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}}"

##########
model="ShellyTalli"
id="215"
address="10.0.0.$id"
string="$(curl -s http://${address}/meter/0 | sed -e 's,{,,' | sed -e 's,},,')"
power=$(echo "{${string}}" | jq -r .counters | jq '.[0]') # power mean for last minute in wattminutes
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}}"

model="ShellyMitsuILP"
id="222"
address="10.0.0.$id"
string="$(curl -s http://${address}/meter/0 | sed -e 's,{,,' | sed -e 's,},,')"
power=$(echo "{${string}}" | jq -r .counters | jq '.[0]') # power mean for last minute in wattminutes
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}}"

# Shelly4PM is a gen2 device

# vessalattia
model="ShellyPM4-0"
id="225"
address="10.0.0.$id"
power=$(curl -s -X POST -d '{"id":0,"method":"Switch.GetStatus","params":{"id":0}}' http://${address}/rpc | jq -r '.result'|jq -r '.apower')
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}0}"

# saunalattia
model="ShellyPM4-1"
address="10.0.0.$id"
power=$(curl -s -X POST -d '{"id":1,"method":"Switch.GetStatus","params":{"id":1}}' http://${address}/rpc | jq -r '.result'|jq -r '.apower')
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}1}"

model="ShellyPM4-2"
address="10.0.0.$id"
power=$(curl -s -X POST -d '{"id":2,"method":"Switch.GetStatus","params":{"id":2}}' http://${address}/rpc | jq -r '.result'|jq -r '.apower')
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}2}"

model="ShellyPM4-3"
address="10.0.0.$id"
power=$(curl -s -X POST -d '{"id":3,"method":"Switch.GetStatus","params":{"id":3}}' http://${address}/rpc | jq -r '.result'|jq -r '.apower')
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}3}"

id="149"
model="ShellyTalliILP"
address="10.0.0.$id"
power=$(curl -s -X POST -d '{"id":3,"method":"Switch.GetStatus","params":{"id":0}}' http://${address}/rpc | jq -r '.result'|jq -r '.apower')
sumpower=$(echo $sumpower + $power|bc)
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"${model}\", \"power\" : ${power}, \"id\" : 9${id}3}"

#### Publish sum of all powers
mosquitto_pub -m "{\"time\" : \"$(date "+%Y-%m-%d %H:%M:%S")\", \"model\" : \"SumPower\", \"power\" : ${sumpower}, \"id\" : 9999}"

Jaa mielellään miten teet RRD-toolilla? Eikös tuo ole MRTG:n seuraaja?
 

iro

Vakionaama
Mitä muotoa toi iotguru ymmärtää
IoT-Gurussa on kaksi palikkaa.
1) MQTT-brokerille (jonne MQTT-cleint lähettää sanomat) kelpaa kaiken muotoiset sanomat sillä sen tehtävä on vain välittää sanomia tilaajille.
* MQTT Explorerilla voi kokeilla tätä määrittelemällä Explorerin "Advanced"-välilehdellä kohtaan topic pub/User Short identifier/# , klikkaa Add ==> Explorer tilaa kaikki pub/User Short identifier tunnuksen alle lähetetyt sanomat itselleen. Klikkaa "Save" ja "Connent".
Jos Mitsurunner lähettää sanomia IoT-Gurulle nuo sanomat pitäisi näkyä Explorerissa. Voit kokeilla lähettää Explorerilla sanoman IoT-Gurulle kirjoittamallan "Publish/topic" riville pub/User Short identifier/Device Short identifier/ , valitse "raw" ja kirjoita vaikka heippa, klikkaa "publish" ==> sanoman pitäisi nyt lähteä Gurulle ja palautua sieltä vasempaan näkymään.

2) Gurun toinen palikka on historiatietojen talletus ja käppyröiden piirtäminen. Tuo palikka siis tilaa Brokerilta määriteltyjen "Fieldien" sanomat. Tuolla ei ole parseria, joten sille kelppaa vain numero-arvot.

(hieman sekava sepustus mutta kysy lisää...) ;)
 

Raspi

Jäsen
Näpyttele härpäkkeen IP-osoite selaimen osoitekenttään. Enter ja pitäs aueta tollanen valikko. Tässä Plussassa on tältä osin näköjään vähän erillainen valikko tässä kohtaa ja eteenpäin kuin peruspalikoissa.

Klikkaa Networks...



katso liitettä 84837

aukee tää. Alimmaisena on MQTT ja siitä ...


katso liitettä 84838

aukee tää.

katso liitettä 84839

Samalle tielle Settings-valikkojen kautta. Oot tehny Factory Resetin. Siinä samassa valikossa, josta teit resetin, Factory Reset-painikkeen alla on Device Information-painike. Sitä painamalla aukee uus valikko, jossa kolmantena on DEVICE IP. Sen painikke aukaisee suoraan ton eka kuvan valikon,, joten ei tarvetta näpytellä IP-osoitetta.


Onnea ja menestystä Shelly - IoTGuru taisteluun :p
Meillä samat hilavitkuttimet mutta eri käyttäjäliitäntä. Firmware näyttäis sulla olevan vanhempi, zekkaa firmwaresta ja vertaa tähän mun kuvaan onko myös 'web build id' eriävä. Eli täällä edelleen ko. valikko kateissa...
Kokeilin myös varuiksi eri selaimilla ja sammuttamalla firewallin.
Tämä jo hiukka huvittaa
 

Liitteet

  • firmware.png
    firmware.png
    41,3 KB · Katsottu: 125
  • shellyhome.png
    shellyhome.png
    31,1 KB · Katsottu: 107

wannabe

Aktiivinen jäsen
Meillä samat hilavitkuttimet mutta eri käyttäjäliitäntä. Firmware näyttäis sulla olevan vanhempi, zekkaa firmwaresta ja vertaa tähän mun kuvaan onko myös 'web build id' eriävä. Eli täällä edelleen ko. valikko kateissa...
Kokeilin myös varuiksi eri selaimilla ja sammuttamalla firewallin.
Tämä jo hiukka huvittaa
Some odness going on :hmm:

Mitäs jos vaihtasit vanhempaan firmwareen? Onnistuu heleposti tuolta https://sequr.be/blog/2020/11/force-update/downgrade-shelly-firmware/ Jos toi 0.13.0 firmware on viä ns. vaiheessa. Mulla ei edes tarjonnu firmwarepäivitystä kun virittelin käyttöön testiä varten. Kahdella muulla palikalla leikkiny, niin niihin tarjonnu päivitystä.

Kuvakaappaus tuolta https://community.home-assistant.io/t/adding-shelly-h-t-via-mqtt/518378/5
 

Liitteet

  • 1676491410275.png
    1676491410275.png
    38 KB · Katsottu: 112

Raspi

Jäsen
Ei ole onnistunut downgrade, päivitysohjeet ovat vain gen1 värkeille. Mistään en löytänyt shelly 1PM plus (gen2) ohjetta sw:n downgradelle.
Onko kellään neuvoja ??
 

wannabe

Aktiivinen jäsen

Raspi

Jäsen
Jaa mielellään miten teet RRD-toolilla? Eikös tuo ole MRTG:n seuraaja?
Nyt käppyrät syntyy omalle himalinuxille simppeli skriptillä. Pyörii cronissa nyt 2min ajalla.
RRD:stä löytyy paljon esimerkkejä/ohjeita netistä, virallinen: https://oss.oetiker.ch/rrdtool/doc/rrdtool.en.html

-----------------------------------------
Koodi:
General
#!/bin/bash
#tämä skripti hakee ja parsii shelly 1PM plussalta tehon ja energian. Tallentaa rrd-databaseen kuten myös levyllä olevat lampotilat.

a=`curl -s 10.0.0.196/rpc/Shelly.GetStatus | tr '\,' '\n' | awk 'match($0,/apower:*/){print substr($0,RSTART+8)}' | sed -r 's/.{2}$//$
b=`curl -s 10.0.0.196/rpc/Shelly.GetStatus | tr '\,' '\n' | awk 'match($0,/aenergy:*/){print substr($0,RSTART+18)}' | sed -r 's/.{4}$$

let bb=$b/1000
#echo "$bb"
echo $a >/home/ile/shelly/currentpower   #nama talletukset sivuille tämänhetken tilannetiedot
echo $bb >/home/ile/shelly/totalpowerk

c=$(</var/www/html/tempera/himaulko)
d=$(</home/ile/shelly/tempemitsu)
#echo "$c"      #echos for testing
#echo "$d"
let aa=$a/10
#echo "$aa"
rrdtool update /var/www/html/shelly3/powertempera.rrd N:$aa:$c:$d
exit
-------------------------------------------------------
skripti mikä piirtää kuvat rrd-databasesta:
--------------------------------------------------------
#!/bin/bash

RRDPATH="/var/www/html/shelly3/"
RAWCOLOUR1="#00FF00"
RAWCOLOUR2="#0000FF"
RAWCOLOUR3="#FF0000"

#10min
rrdtool graph $RRDPATH/10min.png --start -10m \
-w 480 -h 240 -a PNG \
--vertical-label "Temperatures ouside & heatinside C" \
--slope-mode \
--watermark "Current_power=`cat /home/ile/shelly/currentpower` W  Total_energy=`cat /home/ile/shelly/totalpowerk` kWh since 2.3-23"  \
--right-axis-label "Power green line W" \
--right-axis 10:0 \
DEF:temp1=$RRDPATH/powertempera.rrd:Power:AVERAGE \
DEF:temp2=$RRDPATH/powertempera.rrd:tempeulko:AVERAGE \
DEF:temp3=$RRDPATH/powertempera.rrd:tempemitsu:AVERAGE \
LINE3:temp1$RAWCOLOUR1:"10 minutes power W" \
LINE1:temp2$RAWCOLOUR2:"outside temp C" \
LINE1:temp3$RAWCOLOUR3:"inside heat temp C" \

#hour
rrdtool graph $RRDPATH/hour.png --start -1h \
-w 480 -h 240 -a PNG \
--vertical-label "Temperatures ouside & heatinside C" \
jne....

code
 

Liitteet

  • shellypic.PNG
    shellypic.PNG
    603,4 KB · Katsottu: 126

wannabe

Aktiivinen jäsen
Yritin taas vaihteeks saada Shellystä käppyrää IoTGuruun, mutta ei onnistu ei. Shelly hyväksyy Custom MQTT prefix kohtaan vain 32 merkkiä ja Gurun topic on muistaakseni 63 merkkiä piiiitkä. Tuli mieleen, että voisko Shellyn tarjoaman prefixin kikkailla scriptillä Gurulle kääntämällä Shellyn tarjoama lyhyt prefix (esim. shelly1_244xxxxxxxxx) Gurun hyväksymäksi topiciksi :hmm: Oisin sitä tietty jo kokeillu, mutta jääny pelkäksi pohdinnaksi, kun ei oo osaamista noihin koodihommiin :(
 
Back
Ylös Bottom