Erschließung von LTE Cat M1 und NB1 mit dem Pycom FiPy

Korrekt, geliefert wurde es mit der LTE-Firmware fürs CAT-M1 drauf … hab leider die Versionsnummer nicht notiert. Kann ich bei Interesse beim nächsten nochmal mitschreiben.

Ja.

Nix. Bei uns gibt es noch zu wenig M1.

Interessiert keine S… ;]. Falls doch: Oben bei Erschließung von LTE Cat M1 und NB1 mit dem Pycom FiPy - #35 by Andreas notiert. 5.0.0.0something, jetzt haben wir 6.0.0.0.

Die Ausgabe der neuen Firmware bzgl.

== CAPS ====================================
  . access stratum: R13
  . catM          : 1
  . nb-IoT        : 1

finde ich weiterhin interessant.

  • Basisinformation laut Pycom Dokumentation: Man muss die Firmware je nach Einsatzzweck wechseln.
  • Hypothese: Diese Firmware unterstützt beide Varianten.
  • Gegenargument: Warum gibt es dann weiterhin beide Varianten separat zum Download?

… soll uns aber erst einmal nicht weiter kümmern, hier gibt es derzeit nur NB1.

Next steps

Jetzt heißt es, die Schwummse bei der nächsten Gelegenheit und je nach Bedarf in einen entsprechenden Adapter umzufunktionieren und in das Terkin Network Subsystem einzubauen, am besten möglichst schlau.

1 Like

Achherrje! Dit is auch noch nen beworbenes “Feature”:
1nce-wolke

So ist das wohl im 21. Jahrhundert. Und für “IoT” auch irgendwie “standesgemäß”. (IPv4-only hinter nem NAT aus ner Amazon-Wolke mit ohne DNS … laut IETF darf man sowas doch schon lange nicht mehr “Internet” nennen. Auch nen Bestandsschutz ist bei dem Laden nicht argumentierbar.) Für die Nachwelt: Können wir bittebittebitte das ganze LoRa*-Thema nicht vernachlässigen?

3 Likes

Next steps “Auch mit LoRa funken”

I hear you, gern – hat aber leider auch andere obstacles. Gefunkt haben wir schon in echt (LoRa sowie LoRaWAN), das passt dann aber thematisch besser woanders hin.

Nun etwas ausgefuchster in verschiedener Hinsicht…

Features

  • Robustheit durch Pokemon exception handling
  • Anzeige der LTE-Signalstärke
  • Anzeige von Systemzuständen über LED-Farben

Mini-Dokumentation

Ausführlichere Details ggf. oben bei Erschließung von LTE Cat M1 und NB1 mit dem Pycom FiPy - #58 by wtf.

Hardware

Software

  • Firmware für Sequans Modem auf LTE Cat NB1 umstellen
  • MAX31865-Treiber von Kurt Albrecht für PT100 in den lib/-Ordner übertragen.
    Quelle: lopy_max31865.py
  • Code Quelltext beschaffen und anpassen. Es handelt sich um folgende Zeilen für die Einstellung des gewünschten Telemetrieziels.
    • client = MQTTClient("ef3423be2", "46.4.251.67", port=1883) # weather.hiveeyes.org
      Da über LTE derzeit keine DNS-Auflösung möglich ist, muss hier die IP-Adresse kodiert werden.
    • client.publish("umwelt/testdrive/basement/pt100-demo-42/data.json", payload)
      Die Adresskomponenten testdrive, basement und pt100-demo-42 können frei angepasst werden.
  • Code Quelltext als main.py in das Wurzelverzeichnis übertragen
  • SIM-Karte einlegen
  • System neustarten

Code Quelltext

:warning: Veraltet, bitte unter autonome-zelle / fipy-nbiot-rtd · GitLab weiterverfolgen

##!/usr/bin/env python
# fipy-nbiot-rtd v0.0.2, https://git.cicer.de/autonome-zelle/fipy-nbiot-rtd
# Connecting a Pt100-thermometer via an MAX31865 Adafruit-board at an PyCom FiPy via Narrow-Band-IoT-LTE to a MQTT-Server.
#
# by The Hiveeyes Project, https://hiveeyes.org/
# based on Software by Pycom Limited (2019, GPLv3)
#
# Known issues:
# - too many
#
# Legend: Initial discussion for creating this thing
# https://community.hiveeyes.org/t/erschliessung-von-lte-cat-m1-und-nb1-mit-dem-pycom-fipy/
#
# This software is licensed under the GNU GPL version 3 or any
# later version, with permitted additional terms. For more information
# see the Pycom Licence v1.0 document supplied with this file, or
# available at https://www.pycom.io/opensource/licensing

# hello world
print("[system] Initial boot. Hello world.")
import time
import pycom
print("[system] time & pycom loaded")

# LEDs: test
print("[system] testing LEDs (3x0.333s R,G,B at 0x22)")
pycom.heartbeat(False)
print("[system] LEDs: cycle 0.33s R, G, B at 22")
# LED: red
print("[system] LED: red")
pycom.rgbled(0x220000)
time.sleep(0.333)
# LED: green
print("[system] LED: green")
pycom.rgbled(0x002200)
time.sleep(0.333)
# LED: blue
print("[system] LED: blue")
pycom.rgbled(0x000022)
time.sleep(0.333)

# system: modules
print("[system] loading modules (LED: very low gray)")
pycom.rgbled(0x010101)
import machine
from machine import RTC
from micropython import const
import ure
import utime
from lopy_max31865 import MAX31865
import network
from network import LTE
#import sqnsupgrade
#import uping
from mqtt import MQTTClient
print("[system] All modules loaded. Let's wait a second.")

# system: instances
print("[system] loading instances (LED: low gray)")
pycom.rgbled(0x050505	)
# rtc: instance
rtc = RTC()
print("[RTC] instanced.")

# rtd: instance
rtd = MAX31865()
print("[Pt100] instanced.")

# lte: instance
lte = LTE()
print("[LTE] instanced.")

# LTE: get infos from Modem
#lte.send_at_cmd('AT!="RRC:setDbgPerm full"')
#print(lte.send_at_cmd('AT!="RRC:showcaps"'))
#print(lte.send_at_cmd('AT!="showver"'))
#sqnsupgrade.info()

# LTE: init
print("[LTE] initializing ... (LED light-yellow)")
pycom.rgbled(0x090900)
try:
  lte.init()
  print("[LTE] initialized.")
except:
  print("[LTE] exception. will reset.")
  machine.reset()

# LTE: attach
print('[LTE] attaching ... (LED light-yellow)')
pycom.rgbled(0x131300)
try:
  lte.attach(band=8, apn="iot.1nce.net")
  while not lte.isattached():
    time.sleep(1)

    try:
      csq_at = lte.send_at_cmd("AT+CSQ")
      csq_line_regex = ure.compile("\n")
      csq_line=csq_line_regex.split(csq_at)
      csq_string_regex = ure.compile(" ")
      csq_string=csq_string_regex.split(csq_line[1])
      csq_comma=csq_string[1]
      csq_num_regex = ure.compile(",")
      csq_num=csq_num_regex.split(csq_comma)
      csq=csq_num[0]
      print("[LTE] attaching ... (CSQ: " + csq + ")")
    except:
      csq="-999"
      print("[LTE] CSQ not recevied: " + csq)

  print('[LTE] attached.')
except:
  print("[LTE] exception. will reset.")
  machine.reset()

# LTE: connect
print('[LTE] connecting ... (LED light-yellow)')
pycom.rgbled(0x171700)
try:
  lte.connect()
  while not lte.isconnected():
    time.sleep(1)
    print('[LTE] connected.')
except:
  print("[LTE] exception. will reset.")
  machine.reset()

# NTP
print('[NTP] syncing ... (LED low orange)')
pycom.rgbled(0x272000)
try:
  rtc.ntp_sync("192.53.103.108") # ptb ntp
  print('[NTP] synced.')
except:
  print("[NTP] exception. will reset.")
  machine.reset()

# MQTT: connect()
print('[MQTT] connecting ... (LED orange)')
pycom.rgbled(0x322500)
try:
  client = MQTTClient("ef3423be2", "46.4.251.67", port=1883) # weather.hiveeyes.org
  client.settimeout = 60
  client.connect()
  print("[MQTT] connected.")
except:
  print("[MQTT] exception. will reset.")
  machine.reset()

# LTE: disconnect
print('[LTE] disconnecting ... (LED light-yellow)')
pycom.rgbled(0x050500)
try:
  lte.disconnect()
  while lte.isconnected():
    time.sleep(0.25)
    print('[LTE] disconnected.')
except:
  print("[LTE] exception. will reset.")
  machine.reset()

# main loop
print("[system] ==== starting main loop ... ====")
while True:

    print("[system] ------ main loop started ------")

    # Pt100: read measurement
    print("[Pt100] getting measurement ... (LED green)")
    pycom.rgbled(0x001000)
    try:
      temp = rtd.read()
      Tpoly = str(temp)
      print("[Pt100] got measurement Tpoly = {0}°C".format(temp))
      Tus = str(utime.ticks_us())
      Tseconds = str(utime.time())
      Ttime = Tseconds + Tus
    except:
      print("[Pt100] error (except). will reset.")
      machine.reset()

    # RTC: get time
    print("[RTC] getting time ... ")
    try:
      Tus = str(utime.ticks_us())
      Tseconds = str(utime.time())
      Ttime = Tseconds + Tus
      print("[RTC] it's now {0} seconds past 1970".format(Tseconds))
      print("[RTC] it's now {0} microseconds past 1970".format(Ttime))
    except:
      Ttime = ""
      print("[RTC] not time. setting empty.")

    # LTE: get CSQ
    print("[LTE] getting CSQ ... (LED light green)")
    pycom.rgbled(0x000500)
    try:
      csq_at = lte.send_at_cmd("AT+CSQ")
      csq_line_regex = ure.compile("\n")
      csq_line=csq_line_regex.split(csq_at)
      csq_string_regex = ure.compile(" ")
      csq_string=csq_string_regex.split(csq_line[1])
      csq_comma=csq_string[1]
      csq_num_regex = ure.compile(",")
      csq_num=csq_num_regex.split(csq_comma)
      csq=csq_num[0] + str(".99")
      print("[LTE] CSQ: " + csq)
    except:
      csq="-999.0"
      print("[LTE] CSQ not recevied: " + csq)

    # LTE: connect
    print('[LTE] connecting ... (LED yellow)')
    print("[system] LED: red")
    pycom.rgbled(0x171700)
    try:
      lte.connect()
      while not lte.isconnected():
        time.sleep(0.25)
        print('[LTE] connected.')
    except:
      print("[LTE] exception. will reset.")
      machine.reset()

    # Define telemetry payload
    payload = "{ \"Tpoly\": " + Tpoly + ", \"lte_csq\": " + str(csq) + ", \"time\": " + str(Tseconds) + " } "

    # MQTT: publish
    print("[MQTT] submitting ... (LED red)")
    pycom.rgbled(0x330000)
    try:
      client.publish("umwelt/testdrive/basement/pt100-demo-42", payload)
      print("[MQTT] done. sent: " + payload)
      time.sleep(1)
      print("[MQTT] submitted.")
    except:
      print("[MQTT] exception. will reset.")
      machine.reset()

    # LTE: disconnect
    print('[LTE] disconnecting ... (LED low yellow)')
    pycom.rgbled(0x050500)
    try:
      lte.disconnect()
      while lte.isconnected():
        time.sleep(1)
        print('[LTE] disconnected.')
    except:
      print("[LTE] exception. will reset.")
      machine.reset()

    # system: idle
    print("[system] 10s idle (LED blue)")
    # LED: green
    pycom.rgbled(0x000011)
    time.sleep(10)

Screenshot

Eine beispielhafte typische Log-Ausgabe für einen ersten Eindruck.

[system] Initial boot. Hello world.
[system] time & pycom loaded
[system] testing LEDs (3x0.333s R,G,B at 0x22)
[system] LEDs: cycle 0.33s R, G, B at 22
[system] LED: red
[system] LED: green
[system] LED: blue
[system] loading modules (LED: very low gray)
[system] All modules loaded. Let's wait a second.
[system] loading instances (LED: low gray)
[RTC] instanced.
[Pt100] instanced.
[LTE] instanced.
[LTE] initializing ... (LED light-yellow)
[LTE] initialized.
[LTE] attaching ... (LED light-yellow)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attaching ... (CSQ: 24)
[LTE] attached.
[LTE] connecting ... (LED light-yellow)
[NTP] syncing ... (LED low orange)
[NTP] synced.
[MQTT] connecting ... (LED orange)
('46.4.251.67', 1883)
[MQTT] connected.
[LTE] disconnecting ... (LED light-yellow)
[system] ==== starting main loop ... ====
[system] ------ main loop started ------
[Pt100] getting measurement ... (LED green)
[Pt100] got measurement Tpoly = 25.02577°C
[RTC] getting time ... 
[RTC] it's now 1564196613 seconds past 1970
[RTC] it's now 156419661342589480 microseconds past 1970
[LTE] getting CSQ ... (LED light green)
[LTE] CSQ: 24.99
[LTE] connecting ... (LED yellow)
[system] LED: red
[MQTT] submitting ... (LED red)
[MQTT] done. sent: { "Tpoly":25.02577, "lte_csq": 24.99, "time": 1564196613 } }
[MQTT] submitted.
[LTE] disconnecting ... (LED low yellow)
[system] 10s idle (LED blue)
[system] ------ main loop started ------
[Pt100] getting measurement ... (LED green)
[Pt100] got measurement Tpoly = 24.9921°C
[RTC] getting time ... 
[RTC] it's now 1564196633 seconds past 1970
[RTC] it's now 156419663362199533 microseconds past 1970
[LTE] getting CSQ ... (LED light green)
[LTE] CSQ: 24.99
[LTE] connecting ... (LED yellow)
[system] LED: red
[MQTT] submitting ... (LED red)
[MQTT] done. sent: { "Tpoly":24.9921, "lte_csq": 24.99, "time": 1564196633 } }
[MQTT] submitted.
[LTE] disconnecting ... (LED low yellow)
[system] 10s idle (LED blue)
1 Like

Saustark, vielen Dank! oO, jetzt werden die Programme immer länger. Die hätten schon längst in ein Repositorium… Ich leg da mal eins an, nehme damit hoffentlich ein wenig Arbeit ab und hoffe, dass es gefällt.

Ich finde, ein dedizierter PT100-Datenlogger hätte ein eigenes Repository verdient. Unabhängig davon bedienen wir uns gerne am Code für die Integration des LTE-Supports in den Supercollider.

Dass dieser ultralange Thread nun dank einer fertigen Implementierung vielleicht endlich seinen Abschluß finden kann, freut uns sehr.

1 Like

Hier noch mal im Detail und fürs Archiv das Upgrade der LTE Modem Firmware von ‘so wurde geliefert’ zu ‘latest’ beim Upgradevorgang über die SD-Karte.

>>> import sqnsupgrade
>>> sqnsupgrade.info()
<<< Welcome to the SQN3330 firmware updater [1.2.5] >>>
>>> FiPy with firmware version 1.20.0.rc11
Your modem is in application mode. Here is the current version:
UE5.0.0.0d
LR5.1.1.0-39529

IMEI: xxxxxxxxxxxx
>>> from machine import SD
>>> sd = SD()
>>> os.mount(sd, '/sd')
>>> os.listdir('/sd')
['NB1-41019.dup', 'updater.elf', 'upgdiff_33080-to-41019.dup', 'upgdiff_39529-to-41019.dup', 'upgdiff_40343-to-41019.dup', 'upgdiff_41065-to-41019.dup']
>>> sqnsupgrade.run('/sd/NB1-41019.dup', '/sd/updater.elf')
<<< Welcome to the SQN3330 firmware updater [1.2.5] >>>
>>> FiPy with firmware version 1.20.0.rc11
/sd/updater.elf is not required. Resumining normal upgrade.
Firmware file is too big to load via FFF method. Using ON_THE_FLY
Attempting AT wakeup...
Session opened: version 1, max transfer 8192 bytes
Sending 5835531 bytes: [########################################] 100%
Waiting for modem to finish the update...
<<<=== DO NOT DISCONNECT POWER ===>>>
Resetting................................
Your modem has been successfully updated.
Here is the current firmware version:

UE6.0.0.0
LR6.0.0.0-41019

IMEI: xxxxxxxxxxxxxxxxxx

Modem Firmware Update

2 Likes

Merci für den Bericht!

Danke fürs Zusammensammeln der kompletten Liste aller inkrementellen Upgrade-Dateien. Wie kriegen wir die am besten gebündelt? Könntest Du sie gschwind in einem .tar.gz-Archiv zusammenfassen?

das ist schon alles beinander.

ich habe da nur den inhalt von NB1-41019.zip von software.pycom.io
benutzt und vorher auf eine sdkarte entpackt.

1 Like

Beware of the dragons. Melde mich grad von einem kleinem Testbetrieb in der Brandenburger Pampa. Die CSQ liegt hier zw. 5 und 15, nicht mehr bei 20-30. Der initial attach braucht etwas länger.

Bugs so far detected:

  • lte.disconnect/lte.connect langt nicht für nen Zellwechsel (es gibt im NB-IoT (LTE Cat-NB1) ja wohl kein Roaming handover).
  • Der verwendete MQTT-client ignoriert seine Timeoutangabe und probiert es auch mal ewig erfolglos.
  • der lte.attach braucht auch mal gefühlte Ewigkeiten, wir sollten gucken obs hier timeouts gibt/wir welche wollen.

Aber man muss festhalten, dass sich an den beiden Standorten auch Mobiltelefone zwischen 4G, EDGE und not-connected bewegen und es dafür ganz gut scheint, wenn das NB-IoT mit obiger Software auch mal ne Nacht lang durchgelaufen ist und Werte lieferte.

3 Likes

… oder workaroundable …

Done. Noch am langsam-Wachsen:

Wesentlich Änderungen in der Software zu v0.0.3-rc1 (die beiden hier in diesem Thread vorher geposteten Versionen heißen hier jetz v0.0.1 und v0.0.2):

  • LTE: hard resetting Modem, wenn was im Netzwerk fishy ist (wichtig, passiert bei machine-reset sonst nicht!)
  • LTE: pppsuspend/-resume statt disconnect/reconnect (immernoch kein hand-over!)
  • NTP: Misstrauen bei zu niedrigen Timestamps
  • Serial-Output: Hübschere Abstände
2 Likes

Hier auch noch mehr zum Thema.

Wie immer: It’s a feature, not a bug!

With that in mind, all in all, it makes 100% sense not to have DNS in LTE-NB1 … and all we have to do is design our solutions around this factor.

So ein Quatsch!

Viel schlimmer als fehlendes DNS finde ich das hier.

Furthermore, in some cases like Vodafone in Ireland (the info I got from someone there), is that “the network” is only a “local network” inside Vodafone … so you’d have to send your data to a Vodafone server (via IP) … and then pull it out via MQTT / API’s from their server into your Portal …

Ist auf alle fälle der Tod für IoT und Roaming über verschiedene Anbieter sowie für Plug&Play beim Endverbraucher wie soll das gehen?
Hoffe mal bei den Deutschen Anbietern ist das nicht auch so.
Kein wunder das sich in der Richtung so wenig bewegt.

TLDR; macht euch nich so viel kopp ueber solche detaillimitationen. ;)

ich denke da habt ihr nb1 und m1 falsch verstanden… das ist fuer ‘ich baue viele davon’ … dann ist der setupaufwand fuer einmal eher vernachlaessigbar
gegenteil… mit ohne internet dazwischen ist man flexibler und braucht sich um vieles weniger kopf machen (wie z.b. dns)
die simkarten wie wir sie nutzen waren und sind nicht dafuer gedacht direkt bezogen zu werden.
das ist und wird vermutlich auf ein paar jahre ein produkt bleiben das man idr direkt mit dem device kauft.
bei einem modernen auto steckt auch ne sim drin. die hat da natuerlich der hersteller reingesteckt und nicht der kunde oder die werkstatt. man braucht ja eh noch das ‘backend’ mit dem $iot-device (da zaehle ich autos und co zu) das dem kunden dann das userinterface gibt (die cloud platform)

;)

wir muessen wir eh fuer jedes transportmedium dinge wegabstrahieren:

  • lora ist erstmal kein ip… kann man selber machen
  • lorawan ist furchtbar langweilig was bandbreite /traffic angeht. - backend nicht open
  • lte-nb ist ip.(ohne dns)… oder sms - backend carrier (das bekannte uebel)
  • lte-m1 ist ip mit alle lampen an - sms gibts hier auch. - backend carrier (s.o.)
  • bei 2g kann man ip machen, aber es gibt bei beidem ja auch sms… frueher habs noch csd (9600 baud)
  • sigfox kennich nicht, ist aber closed und ism… sowas find ich unsexy - backend ist closed.
  • wlan ist easy, und das einzige medium was vermutlich keine traffic oder bandbreitenknappheit hat. kann man selber machen

alles transportmedien die ihre eigenheiten haben. das alles komplett generalisieren wird nicht klappen.
da wir aber nur ‘einen klumpen json von node zu server’ bringen muessen… findet sich da sicher fuer jedes medium ein passender weg.
auf ip haben wir mqtt… das passt da super.
das bei nb1 das dns fehlt finde ich nich schlimm (openvpn -> statische ip vom server im tunnel) dafuer ist der rest ‘einfach’ weil auch ip.

alles was nicht ip ist… muss man am ende erst wieder kapseln und das ist nun leider manchmal etwas unterschiedlich

ps: ich finde bisher keine definitive aussage das dns bei nb1 garnicht geht, sondern nur das es diesen bug bei pycom oder den implementationen bei den carriers gibt. vll loest sich das auch mit zeit einfach auf.

1 Like

DNS geht, was habt Ihr denn alle… ! B)

>>> import usocket
>>> usocket.dnsserver(0,'9.9.9.9')
>>> usocket.dnsserver()
('9.9.9.9', '0.0.0.0')
>>> print(usocket.getaddrinfo("weather.hiveeyes.org", 80)[0][-1])
('46.4.251.67', 80)

klappte gerade mit @wtf’s FiPy.


Manchmal klebt es:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 202] EAI_FAIL

update: der EAI error kommt u.a. dann, wenn als zweiter DNS server bogus eingetragen ist (0.0.0.0) , die Dinger werden alternierend abgefragt - daher mußte er dort abbrechen.

Der Fehler kommt auch, wenn man nicht attached und connected ist! ;)

3 Likes

rocknroll… d.h. der ‘bug’ ist nicht das nutzen von dns an sich (waer auch komisch, iss ja nur udp) sondern das vom ‘netz’ kein nameserver gesetzt wird %-) … also DAS ist einfach zu fixen :) (solange man nicht bei vd2 ist , die offenbar in uk dns auf alle ausser ihre server filtern)

1 Like

Finde nicht das Ich /Wir das falsch verstanden haben, sondern die Anbieter solcher Karten. Die wirklich großen wie die Autoindustrie haben bereits schon ihre Lösung durch Sonderverträge und dergleichen. Der Mittelstand und die kleinen Krauter haben wie immer das Nachsehen. Ach ja und genau dafür würde NB1 gerade Anfangs ja beworben.

finde ich auch das DNS kein must have ist. Finde nur eher blöd, wenn mann da auf einem Anbieter und ein Portal dazwischen ausgebremst wird, das man zusätzlich evtl auch noch umständlich konfigurieren und sich alles andere danach verbiegen muss.

Ist auch noch sehr begrenzt in der Bandbreite, eine Nachricht darf nur 12 Byte haben und es dürfen pro Tag nur 140 Nachrichten verschickt werden. Geht daher eher nur für sehr wenige Sensoren oder Status und Fehlermeldungen. Ach ja und wider so ein Blödes unübersichtliches Portal was die Daten weiterverteilen soll. Der einzige Vorteil den Sigfox hat ist das wir mit dem FiPy eine Jahreslizenz for Free haben.

wenn der krauter keinen openvpn aufgesetzt bekommt sollte er vielleicht kein b2b produkt kaufen. das ist in dem fall eine echt niedrige huerde.

und ich seh da genau garkeinen zielgruppenfehler auf seiten von carriern wie 1nce.
das ist fuer menschen die wissen wie die technologie funktioniert die pro kunde tausende sims brauchen. rent-a-netzbetreiber. ist doch super. einfacher geht nicht.
kundensupport pro sim ist dann der job desjenigen der das produkt verteilt. und das kann hier ja ab der ersten sim jeder sein. dafuer bekommt man ja das webinterface (fuers reinschnuppern) und die api (um das dann in die eigene plattofrm zu integrieren.
deswegen kann man auch simkarten per api bestellen usw.

d.h. der unbedarfte der mitspielen will kauft nicht bei 1nce die sim sondern beim plattformbetreiber… also z.b. uns?

normalerweise bekommt man so tollen zugriff auf ein gsmnetz nur wenn man einen sehr teuren vertrag und ein paar (zig)tausend sims minimum braucht.
das hat dann monate vorlaufzeit und tunnels fuer sowas sind idr ipsec und brauchen diverse lange telcos ueber mehrere wochen zum aufsetzen.

das als ‘ich bestell was im webshop’ zu retargeten ist schon extrem positiv fuer uns.

ich bin jedenfalls bisher positiv ueberrascht. naja… more classy hosting als amazon waere schick, aber sonst faellt mir echt keine kritik ein. das ist echt selten fuer mich im kontext carrier! ;)

2 Likes