# Środowiska programistyczne dostępne na bramce

**URL:** <https://ai-speaker.discourse.group/t/srodowiska-programistyczne-dostepne-na-bramce/380>\
**Category:** Programowanie\
**Created:** [17 Kwiecień 2020 12:56 UTC](https://ai-speaker.discourse.group/t/srodowiska-programistyczne-dostepne-na-bramce/380 "2020-04-17T12:56:51Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Autor:** ![araczkowski](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/araczkowski/32/6_2.png) [@araczkowski](https://ai-speaker.discourse.group/u/araczkowski)\
**Data wpisu:** [17 Kwiecień 2020 12:56 UTC](https://ai-speaker.discourse.group/t/srodowiska-programistyczne-dostepne-na-bramce/380/1 "2020-04-17T12:56:52Z")

</div>

# Środowiska programistyczne dostępne na bramce

Na bramce **DEV** dostępne są środowiska programistyczne, dzięki czemu nie tylko można uruchamiać gotowe programy ale też pisać i uruchamiać własne programy bezpośredion na urządzeniu.

> 🖥 Bramka AIS dom w wersji DEV może być używana tworzenia oprogramowania, edukacji informatycznej i eksperymentów. W kategorii **Programowanie** umieścimy kilka postów z informacjami o tym, jak zacząć programowanie na bramce. Skupimy się na językach w których napisany jest system Asystent domowy (C, Python, JavaScript i Java).

## C, C++

### Pakiet Clang

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/1/1e04d996daeeb6c64753683661891c7ed3818fc8.png)

### Opis

Front-end kompilatora dla języków C, C++ oraz Objective-C, który używa LLVM jako back-end (generator kodu natywnego i optymalizator). Jest to alternatywa dla kompilatora z projektu GCC. Prace nad nim sponsorowane są przez Apple, a sam program wydany jest na licencji BSD.

### Rola na bramce

Podstawa dla wszystkiego, co działa na bramce. Programy w postaci kodu maszynowego (w postaci binarnej, w slangu komputerowym binarki), które działają na bramce, są kompilowane kompilatorem Clang. Normalnie nie budujemy pakietów na bramce, ale w kontenerze i dostarczamy na bramkę już skompilowane paczki, z naszego repozytorium pakietów apt: [https://ai-speaker.com/apt/](https://ai-speaker.com/apt/) Pakiety takie jak Python, Node.js, rclone, Mosquito (broker mqtt) i dziesiątki innych pakietów dostarczane są na bramkę w postaci binarnej z repozytorium apt. Dostępność pakietu Clang na bramce umożliwia też kompilowanie programów bezpośrednio na urządzeniu.

### Przykład programu

Można skopilować program w C bezpośrednio na bramce, a następnie uruchomić go z Asystenta domowego. Pokazujemy jak to zrobić na przykładzie:

> [@Hello.c Przykład najprostszego programu w C](https://ai-speaker.discourse.group/t/hello-c-przyklad-najprostrzego-programu-w-c/395):
>
> Przykład najprostszego programu w C Opiszę, jak skompilować program w C bezpośrednio na bramce, a następnie uruchomić go z Asystenta domowego. Tworzymy folder z programami cd AIS/ mkdir programs cd programs Dodajemy nowy plik z kodem cd ~/AIS/programs nano hello.c Kod programu: #include \<stdio.h\> int main(void) { printf("Hello\n"); return 0; } Kompilujemy nasz program clang hello.c Uruchamiamy skompilowaną wersję ./a.out Uruchamiamy program z Asystenta domoweg…

* * *

## Python

### Pakiet python2 i python3

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/4/4f3c7e122c4428b9ba0abfe828de30c58afd0fd5.png)

### Opis

Python jest językiem programowania ogólnego przeznaczenia. Ponieważ jest interpretowany, dlatego nie da się instalować pakietów Pythona bez obecności środowiska programistycznego Python na bramce. Obecnie świat używa Python 3, ale wciąż istnieją projekty korzystające z Python 2 dlatego mamy oba te środowiska na urządzeniu.

### Rola na bramce

Home Assistant napisany jest w języku Python, wszystkie integracje Home Assistant są napisane w języku Python i najczęściej korzystają z dodatkowych pakietów też napisanych w języku Python.

### Przykład programu

Można napisać własny program w Python bezpośrednio na bramce, a następnie uruchomić go z Asystenta domowego. Pokazujemy jak to zrobić na przykładzie:

> [@Hello.py Przykład najprostszego programu w Python](https://ai-speaker.discourse.group/t/hello-py-przyklad-najprostszego-programu-w-python/401):
>
> Przykład najprostszego programu w Python Opiszę, jak dodać program w języku Python, a następnie uruchomić go z Asystenta domowego. Tworzymy folder z programami (jeżeli jeszcze go nie mamy) cd AIS/ mkdir programs cd programs Dodajemy nowy plik z naszym pierwszym kodem cd ~/AIS/programs nano hello.py Kod programu: print("Hello Jolka") Uruchamiamy program python hello.py Interpreter Python na bramce Język Python jest interpretowany, dlatego nie kompilujemy kodu do kodu m…

* * *

## JavaScript

### Pakiet node

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/86d202f4fd2b3ea45e8ac2b0fd2da81f4d1571d2.png)

### Opis

Node.js to wieloplatformowe środowisko uruchomieniowe o otwartym kodzie do tworzenia aplikacji typu server-side napisanych w języku JavaScript. Podobnie jak Python JavaScript nie jest kompilowany tylko interpretowany, dlatego nie da się instalować pakietów Node.js bez obecności środowiska programistycznego Node.js na bramce.

### Rola na bramce

Menedżer procesów działających na bramce to PM2, jest napisany w JavaScript. Te procesy to serwery: ssh, ftp, mqtt, ais (Home Assistant), a także tunnel (zdalny dostęp), webssh (dostęp do konsoli z aplikacji). Dodatkowo po włożeniu dongla zigbee uruchamiany jest proces zigbee2mqtt. Pakiet Zigbee2Mqtt też napisany jest w JavaScript i działa na Node.JS.

### Przykład programu

Można napisać własny program w JavaScript bezpośrednio na bramce, a następnie uruchomić go z Asystenta domowego. Pokazujemy jak to zrobić na przykładzie:

> [@Hello.js Przykład najprostszego programu w Node.js](https://ai-speaker.discourse.group/t/hello-js-przyklad-najprostszego-programu-w-node-js/402):
>
> Przykład najprostszego programu w Node.js Opiszę, jak dodać program w języku Node.js, a następnie uruchomić go z Asystenta domowego. Tworzymy folder z programami (jeżeli jeszcze go nie mamy) cd AIS/ mkdir programs cd programs Dodajemy nowy plik z naszym pierwszym kodem cd ~/AIS/programs nano hello.js Kod programu: var http = require('http'); console.log('Serwer na porcie 8080'); console.log('Naiśnij Ctrl+c żeby zatrzymać'); http.createServer(function (req, res) { res.writeHead(200, {'Con…
