Sunt ocupat cu o aplicație de tip IoT care necesită hardware fizic conectat printr-un port serial. Am optat să folosim arhitectura Azure IoT Edge pentru a implementa aplicația pe PC-ul care există on-premise. Acest lucru ajută la ciclul nostru DevOps.
Pentru a utiliza Azure IoT Edge necesită ca aplicația noastră să fie containerizată și, prin urmare, expunerea porturilor seriale poate fi o provocare. PC-ul este pe 64 de biți și rulează Ubuntu 20.04 și are mai multe porturi USB, seriale și LAN la care putem conecta dispozitivele.
Am urmărit acest minunat tutorial de la Losant pentru a configura asta.
Opțiunile noastre de creare a containerelor arată astfel:
{
„HostConfig”: {
„PortBindings”: {
„80/tcp”: [
{
„HostPort”: „5000”
}
]
},
„Privilegiat”: adevărat,
„Volume”: {
„/dev”: {}
}
}
}
Mapăm aplicația portul 80 al aplicației noastre la portul 5000 de pe PC și setăm eticheta Volumes and Privileged așa cum este sugerat în linkul tutorial de mai sus.
Dispozitivul în sine este conectat prin USB și, prin urmare, a trebuit să instalăm un driver pe Ubuntu 20.04 de la Site-ul FTDI.
Intrebarea mea:
În unele cazuri, aplicația noastră va găsi portul serial (tty/USB0), dar în cele mai multe cazuri nu va găsi. Dacă pornim computerul cu dispozitivul conectat, aplicația găsește de obicei dispozitivul. Cum putem schimba configurarea PC-ului / configurarea dockerului / configurarea aplicației, astfel încât acesta să găsească întotdeauna dispozitivul?
NOTĂ: Aceasta este o duplicare a această întrebare pe StackOverflow, deoarece nu eram sigur dacă întrebarea aparține acolo sau aici.