ik vind het er eerder op lijken dat er een probleem is met de stroomvoorziening. zonder simkaart doet de radio niets en is er weinig stroomverbruk, wanneer de radio actief is met de simkaart is er meer stroomverbruik. wellicht crasht de boel daardoor? (ik heb soms een spontane reboot van mijn sim7000 vanwege een mogelijk stoomvoorzieningsprobleem)
Posts made by supersjimmie
-
RE: Geen AT response met SIM kaart
-
RE: Graag advies :)
Nog een aanvulling waar ik momenteel mee bezig ben.
In plaats van op een lokale rasp-pi kan de dataconversie ook bijvoorbeeld worden gedaan in de gratis versie van de online “repl.it”, waar vanuit je het kan laten doorsturen naar de gratis versie van de online ThingsBoard.Dus grofweg:
[Arduino+sim7000e] -> [tmobile callback url] -> [conversie bij repl.it] -> [thingsboard]
-
RE: Graag advies :)
Ik heb dat werkend met een sim7000e voor de nb-iot communicatie, die heeft ook gps aan boord. Die logt zijn data naar thingsboard. Zie mijn iets eerdere post over de sim7000e (accepteert commandos niet) en over Thingsboard via…
De sim7000e laat ik aansturen door een esp8266, wat precies zo met een kleine arduino kan (esp8266 heeft ook wifi maar dat is hier overbodig). En ik draai thingsboard on-premise op een raspberry-pi, maar je zou ook de gratis cloudversie kunnen gebruiken met wat truukjes.
Het enige wat iets lastiger is, is de data die “uit” het tmobile netwerk naar internet gaat via de callback url niet direct in ee bruikbaar formaat is. Ik laat dat door een scriptje op de raspberry pi omzetten, maar ook daarvoor zijn diverse gratis online varianten voor te bedenken.
Houd wel rekening met de grootte en frequentie van je data. Ik stuur(de) json maar dat kan veel kleiner. En met de gratis tmobile evaluatie mag je max 120x per dag sturen.
-
RE: ThingsBoard via
Het is gelukt!
Vanaf mijn sim7000e gaat het bericht nu naar een raspberry-pi bij mij thuis. (jaja, het kan beter)
Daar komt het in Python Flask terecht, die niets anders doet dan de json data uitkleden en ombouwen.
Flask zet de uitgeklede json data door naar een lokaal op die raspberry-pi geinstalleerde ThingsBoard.Helaas niet zonder een “lokale server” maar op een oude raspberry-pi Model B uit mijn rommelkast kost deze demo omgeving met alsnog “niets”.
Het zal in Flask vast netter kunnen, maar dit is zoals het nu werkt:
Vanuit de sim7000e stuur ik een pakketje json-style data:
AT+CIPSTART=“UDP”,“172.27.131.100”,15683
AT+CIPSEND=48
{“latitude”: 52.136421, “longitude”: 5.262903}(fake locatie!)
De Callback URL wijst naar het IP adres van mijn router, waarop een Port-Forward is ingesteld van buiten [80] naar binnen [8081]. Flask draait dan op [8081]. (Thingsboard draait op [8080] en is vooralsnog alleen voor mij binnen bereikbaar)
In Flask wordt het mega-pakket van T-Mobile gestript:
from flask import Flask, request, jsonify, json
import requests
app = Flask(__name__)
@app.route(‘/api/v1/Pca6uieWinGX6FjubpA6/telemetry’, methods=[‘POST’])
def hello():
data = request.data
data = data.replace(“u’”,“'”)
data = data.replace(“'”,“\”“)
data = data.replace(“L,”,”,")
msg = json.loads(data)
s = msg[‘reports’][0][‘value’].decode(‘hex’)
newmsg = json.loads(s)
json_str = ‘{“longitude”: ‘+ str(newmsg[‘longitude’]) + ’ ,“longitude”: ’ + str(newmsg[‘latitude’]) +’}’
url = ‘http://localhost:8080/api/v1/[key]/telemetry’
r = requests.post(url, json_str)
return ‘’,200if __name__ == ‘__main__’:
app.run(host= ‘0.0.0.0’,port=8081,debug=True)En in Thingsboard heb ik een Device die de longitude en longitude omzet naar een plattegrond.
Overigens liep ik hier ook even tegen het probleem aan dat de Callback URL alleen kan worden aangepast (naar mijn huis-router) wanneer een lege body toch een http code 200 teruggeeft. Maar met eenmalig een return ‘’,200 bovenin de hello-functie (die daarna weg kon) was dat nu snel opgelost.
Nu nog voor de show een https certificaat regelen bij Let’s-Encrypt en zien of/hoe dat met Flask geregeld kan worden…
En het viel me op dat ik soms een veel uitgebreidere json binnenkrijg dan de andere keren.
De grote versie begint met{“responses”:
Terwijl de kleine versie begint met
{“reports”:
Ik twijfel nog of ik het Flask script conditioneel moet laten strippen, afhankelijk van welke variant er binnenkomt?
-
RE: ThingsBoard via
@stefan-de-lange dat biedt wel weer nieuw licht… Ik ga toch eerst eens oefenen om er een aws lambda functie tussen te hangen, dat vind ik ook wel “stoer”… En als dat niet wil ga ik nog de tijd en energie overwegen van een rPI. Ik heb nog wel een hele oude rpi liggen (model 1b) die me al vaker met kleinigheidjes uit de brand hielp…
-
RE: ThingsBoard via
@ericbarten Ik koos voor thingsboard omdat ik had verwacht dat het daarmee relatief eenvoudig zou zijn. Op de help-pagina’s stond thingsboard genoemd en ik ging er vanuit dat het dan altijd zou werken.
En omdat er een gratis versie van (demo.)thingsboard(.io) is had ik verwacht dat ik het daarmee kon testen en vooral demo-en.Wellicht ben ik een vreemde eend in de bijt, maar ik ben met dit soort projectjes privé bezig. Mijn werk is wel ICT en ik verwacht in de redelijk nabije toekomst heel veel IoT werk, maar vooralsnog ben ik bezig om uit te zoeken en te laten zien hoe dingen werken om mensen te enthousiasmeren. Omdat het allemaal privé is, is het een extra regel dat het zeer low-budget is. De aanschaf van een sim7000e en overige benodigdheden was mijn enige investering, wat ik graag nog even zou houd.
Daarbij komt dat ik vind dat een dergelijke oplossing puur in de cloud moet kunnen worden gebouwd, zonder on-premise zaken. En dan dus ook nog in de gratis hoeken van de cloud.
Nu langzaamaan blijkt dat er geen “gratis” oplossing is (een maand is me te kort) vrees ik dat ik op thingsboard doodloop.
Ik twijfel nog of ik ga onderzoeken of ik bij AWS een free variant van de Lambda service kan gebruiken, dan gaat de data vanaf t-mobile naar de Lambda functie, die accepteert de data 1:1, verbouwt het tot thingsboard-compatible data en zet het door naar thingsboard. (Daarvoor moet ik me dan eerst verdiepen in wat allemaal free en haalbaar is in AWS)
-
RE: ThingsBoard via
Helaas, na het toch maar aanmaken van een extra beeceptor url kon ik er even mee verder.
Maar het blijkt dat ThingsBoard niet overweg kan met de uitgebreide json code. Zodra er dingen als […] in zitten dan werkt het niet meer, en ik kan niet vinden hoe ik vooraf de data kan strippen.Als @afzal_m of @ericbarten nog meelezen, zou iemand me kunnen tippen?
-
RE: ThingsBoard via
@stefan-de-lange Haha, thanks, dat is me in ThingsBoard ook al gelukt.
Wat ik nu doe is:
- Mijn sim7000e stuurt een blokje json-data,
- De callback url is mijn beeceptor url met daarachter het /api/v1/[token]/telemetry gedeelte,
- beeceptor ingesteld om altijd een 200 terug te geven,
- beeceptor is proxy naar demo.thingsboard.io,
- In thingsboard wordt de string opgehaald met de relevante json-data,
- De string wordt van HEX (31d1fa45d3a3-blabla) omgezet naar een text-string,
- Overtollige backslashes uit de vorige stap worden geschoond,
- Er wordt weer een json object gemaakt,
- Die nieuwe json-data wordt doorgezet naar het thingsboard-device,
- Het thinksboard-device geeft de data weer in het thingsboard dashboard.
Theoretisch zou dit het moeten zijn.
Ik vond het best goed verzonnen voor een eerste keer.Alleen ben ik te fanatiek geweest met bouwen en testen met curl -> beeceptor -> thingsboard, want nu ik dan eindelijk echt vanaf mijn sim7000e wil gaan verzenden is precies de dag-limiet van het gratis beeceptor account verlopen. En een nieuw account maken (en overal aanpassen) voor vanavond vind ik dan net teveel gedoe. Dus wachten tot morgen…
To-do:
- Wachten tot ik weer met beeceptor mag spelen,
- Zoeken hoe ik beeceptor er tussenuit kan krijgen, want die is puur om de callback-url check te doorstaan…
-
RE: ThingsBoard via
@techniek Thanks. Om een http 200 terug te krijgen (om door de callback url validatie heen te komen) heb ik er voor het gemak beeceptor tussen geduwd. Dus de callback url gaat naar beeceptor, die heb ik ingesteld om altijd een http 200 terug te geven. Vervolgens staat in beeceptor de proxy ingesteld om het naar Thingsboard door te proxy-en.
Maar wat je nu zegt over die ingepakte data had ik me nog niet gerealiseerd. Dat betekent dus dat mijn verzonden json data niet 1:1 bij de ontvanger terechtkomt. Ik zal dus inderdaad nu nog moeten uitzoeken hoe ik de value (met mijn json) uit de uplinkMsg/0/data van de grote json kan plukken, om die weer als bruikbare json in Thingsboard te gebruiken… (het is dus een json-in-json)
-
RE: ThingsBoard via
Resultaat is inderdaad (als ik de callback via de API probeer toe te kennen):
{“msg”:“Callback URL not accessible”,“code”:2000}
Feitelijk is de url wel accessible, alleen geeft die zonder body een 400 terug.
@stefan-de-lange Tsja, ik had een demo-projectje op het oog wat voortborduurt in thingsboard, dat dan weer ombouwen naar node-red omdat we hier thingsboard niet kunnen voeren maakt het allemaal nog complexer voor mij.
Ook hier, net als vorige week met het gebruiken van een sim7000e, een beetje mist is een korte uitleg. Soms is een klein beetje hulp genoeg voor mij om het verder weer zelf te kunnen.Als @afzal_m of @ericbarten (of iemand anders) mij opweg kunnen helpen om thingsboard als callback url erin te krijgen dan denk ik dat ik een heel eind verder kom…
-
RE: ThingsBoard via
@stefan-de-lange Ah zo.
Dat wordt dan lastig, want:curl -v -X POST https://demo.thingsboard.io/api/v1/[mijntoken]/telemetry --header “Content-Type:application/json”
geeft Required request body is missing.
En deze:
curl -v -X POST https://demo.thingsboard.io/api/v1/[mijntoken]/telemetry --header “Content-Type:application/json” -d “{“ts”:1451649600512, “values”:{“key1”:“value1”, “key2”:“value2”}}”
resulteert netjes in een 200.
Kan ik bij het opgeven van de callback url dan al een body meegeven om door die test heen te komen?
-
ThingsBoard via
Nu ik een begin heb om data te verzenden, wil ik deze naar buiten ontsluiten.
Om het nog even gratis te kunnen testen lijkt thingsboard me een goede start.Via het portal wil ik dan mijn callback URL naar:
https://demo.thingsboard.io/api/v1/[mijntoken]/telemetry
Ik zie niet wat ik daar verkeerd intik, maar het portal zelf weigert die url al:Something went wrong with editing your callback URL
Doe ik iets fout? Ik zou daar toch gewoon een url moeten kunnen invoeren?
Welke controle wordt hier op de achtergrond gedaan waaraan ik blijkbaar niet voldoe? -
RE: SIM7000E accepteert de genoemde commandos niet
@stefan-de-lange Tja, als T-Mobile roept dat de sim7000e geschikt is om in ieder geval mee te testen ( https://docs.iot.t-mobile.nl/docs/hardware ) dan zou het fijn zijn als ook duidelijk is hoe te beginnen. Ik denk dat er momenteel veel “pioniers” zijn die dergelijke projecten willen gaan uitproberen, net als ik. Maar als dat “uitproberen” neerkomt op “zoek het zelf maar uit” dan zal het grootste deel afhaken. Gemiste kans voor t-mobile.
Een volgende uitdaging zal zijn om iets met de data te doen. Want met de data in het gesloten netwerk en alleen een Callback URL die uitsluitend de data 1:1 als header meestuurt is niet handig. Dus zal er nog flink in de API geknutseld moeten worden. Ook dat zal nog wel een kluif worden.
Heel eerlijk gezegd neig ik toch naar iets als een Hologram SIM te gaan. De combi van een sim7000e en een Hologram SIM is veel breder gedragen op internet. Ik vind al allerlei leuke projectjes die in ieder geval genoeg aanknopingspunten geven om vanuit daar zelf wat te gaan bouwen. De komende tijd zal ik proberen om de API hier te snappen…
-
RE: SIM7000E accepteert de genoemde commandos niet
Voor wie hier ooit nog eens mee komt te zitten, hierbij de commandos waarmee het bij mij werkt van begin tot eind.
// Set Phone Functionality: 1 Full functionality (Default)
AT+CFUN=1// Enable the scrambling feature in NB-IOT network
AT+NBSC=1// Preferred mode: LTE only
AT+CNMP=38// Preferred selection: CAT-M and NB-IoT (1=CAT-M, 2=NB-IOT, 3=Both)
AT+CMNB=3// Configure CAT-M Or NB-IOT Band, set to band 8
AT+CBANDCFG=“NB-IOT”,8// Define PDP Context: cid, pdp_type, apn
AT+CGDCONT=1,“IP”,“cdp.iot.t-mobile.nl”// Operator Selection: 20416=t-mobile, 9=User-specified LTE NB S1 access technology
AT+COPS=1,2,“20416”,9// Start Task and Set APN, USER NAME, PASSWORD. The write and execution of this command is valid only at the state of IP INITIAL. After this command is executed, the state will be changed to IP START.
AT+CSTT=“cdp.iot.t-mobile.nl”//AT+CIPSTATUS
// STATE: IP START// Deactivate GPRS PDP Context
AT+CIPSHUT// Start Up TCP or UDP Connection
AT+CIPSTART=“UDP”,“172.27.131.100”,15683// Send Data Through TCP or UDP Connection: 11 bytes
AT+CIPSEND=11// Send workload
Hello World// Close TCP or UDP Connection
AT+CIPCLOSE -
RE: SIM7000E accepteert de genoemde commandos niet
OKe, snappen doe ik het nog niet, maar ik kan dus wel gewoon data versturen:
AT+CIPSTART=“UDP”,“172.27.131.100”,15683
AT+CIPSEND=10
> 1234567890
SEND OK
AT+CIPCLOSEDie komt in de beeceptor aan:
“value”:“31323334353637383930”Vraag me niet waarom.
-
RE: SIM7000E accepteert de genoemde commandos niet
@stefan-de-lange Zeker, die ben ik helemaal aan het doorpluizen op zoek naar wat ik mis.
Maar wat me opvalt is dat op dit forum vooral mensen zijn waarbij het ofwel nog niet gelukt is, ofwel waarbij het wel is gelukt maar waarbij niet staat hoe.Zoals ik het bekijk heb ik wel een connectie, al is die wel roaming.
AT+CPSI?
+CPSI: LTE NB-IOT,Online,204-16,0x0511,5596262,503,EUTRAN-BAND8,3747,0,0,-3,-73,-72,15
AT+CGREG?
+CGREG: 0,5
Ik heb een IP adres, maar ik kan geen ping doen (zo te zien omdat ik geen ping commando heb).Waar ik nu niet uitkom is of de connectie wel volledig is en hoe ik dat dan test.
Daarna de stap hoe ik dan iets verzend, want ook daarvoor werken de commando’s van de gewone t-mobile documentatievoorbeelden niet. -
RE: SIM7000E accepteert de genoemde commandos niet
Dus hier geen
+COPS: 1,2,“20416”,9
maar alleen
+COPS: 2Ik vrees dat ik niet goed weet hoe ik met deze module moet starten zonder een helpend handje…
En een laatste update. Na het omwisselen van AT+COPS=1,2,“20416”,9 en AT+CREG=1 lijk ik weer terug bij een connectie zonder ping ofzo.
AT+CGPADDR=1
+CGPADDR: 1,10.128.1.45
AT+CGDCONT?
+CGDCONT: 1,“IP”,“cdp.iot.t-mobile.nl”,“0.0.0.0”,0,0,0,0OK
AT+CGATT?
+CGATT: 1Dus dat lijkt goed, maar geen ping mogelijk:
AT+NPING=“172.27.131.100”
ERROR
AT+CIPPING=“172.27.131.100”
ERRORIk zal moeten wachten tot iemand meer kan vertellen, ik lees op het forum wel van mensen met een sim7000e maar die topics lijken een beetje dood te lopen?
-
RE: SIM7000E accepteert de genoemde commandos niet
En na een nieuwe poging (reset, schone start), lijkt het toch niet te werken.
Op een gegeven moment:AT+COPS=1,2,“20416”,9
OK
+CREG: 2+CREG: 3
+CREG: 2
+CREG: 3
+CREG: 0
AT+COPS?
+COPS: 2Dus hier geen
+COPS: 1,2,“20416”,9
maar alleen
+COPS: 2Ik vrees dat ik niet goed weet hoe ik met deze module moet starten zonder een helpend handje…
-
RE: SIM7000E accepteert de genoemde commandos niet
Oke, puur toevallig staat er net voor mij een andere post over een sim7000.
Door domweg de commandos daaruit te kopieren, kom ik volgens mij wel verder:
ATZ
OK
AT+CFUN=0
+CPIN: NOT READYOK
AT+CNMP=38
OK
AT+CMNB=2
OK
AT+NBSC=0
OK
AT+CBANDCFG=“NB-IOT”,8
OK
AT+CFUN=1
OK+CPIN: READY
SMS Ready
AT+CREG=1
OK
AT+COPS=1,2,“20416”,9OK
AT+COPS?
+COPS: 1,2,“20416”,9OK
AT+CREG?
+CREG: 1,0OK
AT+CGREG?
+CGREG: 0,5OK
AT+CGATT?
+CGATT: 1OK
AT+CPSI?
+CPSI: LTE NB-IOT,Online,204-16,0x04FD,2480743,125,EUTRAN-BAND8,3747,0,0,-4,-87,-83,15OK
AT+CGPADDR
+CGPADDR: 1,10.128.1.45
+CGPADDR: 13,0.0.0.0OK
AT+NPING=“172.27.131.100”
ERROR
AT+CIPPING=“172.27.131.100”
ERRORAlleen lijkt het wel alsof er 1 entries voor het eigen IP adres zijn, en de ping lukt nog niet…
-
SIM7000E accepteert de genoemde commandos niet
Vol enthousiasme en vooral goede moed wil ik mijn vandaag ontvangen SIM start in gebruik gaan nemen…
De sim7000e had ik al een paar dagen, dus ik kon haast niet meer wachten!Ik probeer met mijn sim7000e te beginnen bij het begin, en tik dus het volgende in.
AT
OK
Mooi, die werkt.Dan volgens de t-mobile handleiding, waarvan alles faalt:
AT+NRB
ERROR
AT+NCONFIG=“AUTOCONNECT”,“TRUE”
ERROR
AT+NCONFIG=“CR_0354_0338_SCRAMBLING”,“TRUE”
ERROR
AT+NCONFIG=“CR_0859_SI_AVOID”,“TRUE”
ERROR
AT+NCONFIG?
ERROR
AT+CGDCONT=0,“IP”,“cdp.iot.t-mobile.nl”
ERRORDit valt toch wel een beetje tegen…
Wie kan me op weg helpen?