Initial commit

This commit is contained in:
Dirk Jahnke 2017-07-13 06:18:04 +02:00
commit bf5e39efb6
8 changed files with 156 additions and 0 deletions

14
README.md Normal file
View File

@ -0,0 +1,14 @@
# NeoPixel based app to control model railroad houses lightnings
## Overview
This app is based on the example mjs_base and addds service to control model house lightnings, based on the current clock (of fastclock).
## How to install this app
- Install and start [mos tool](https://mongoose-os.com/software.html)
- Switch to the Project page, find and import this app, build and flash it:
<p align="center">
<img src="https://mongoose-os.com/images/app1.gif" width="75%">
</p>

5
fs/index.html Normal file
View File

@ -0,0 +1,5 @@
<html>
<body>
<h1>Welcome to the empty project</h1>
</body>
</html>

42
fs/init.js Normal file
View File

@ -0,0 +1,42 @@
load('api_config.js');
load('api_gpio.js');
load('api_mqtt.js');
load('api_sys.js');
load('api_timer.js');
load("api_neopixel.js");
// Helper C function get_led_gpio_pin() in src/main.c returns built-in LED GPIO
let led = ffi('int get_led_gpio_pin()')();
let getInfo = function() {
return JSON.stringify({total_ram: Sys.total_ram(), free_ram: Sys.free_ram()});
};
// Blink built-in LED every second
GPIO.set_mode(led, GPIO.MODE_OUTPUT);
Timer.set(1000 /* 1 sec */, true /* repeat */, function() {
let value = GPIO.toggle(led);
print(value ? 'Tick' : 'Tock', 'uptime:', Sys.uptime(), getInfo());
}, null);
// Publish to MQTT topic on a button press. Button is wired to GPIO pin 0
GPIO.set_button_handler(0, GPIO.PULL_UP, GPIO.INT_EDGE_NEG, 200, function() {
let topic = '/devices/' + Cfg.get('device.id') + '/events';
let message = getInfo();
let ok = MQTT.pub(topic, message, 1);
print('Published:', ok ? 'yes' : 'no', 'topic:', topic, 'message:', message);
}, null);
function initNeopixel() {
let pin = 2, numPixels = 20, colorOrder = NeoPixel.GRB;
let strip = NeoPixel.create(pin, numPixels, colorOrder);
strip.setPixel(0 / pixel /, 12, 34, 56);
strip.show();
strip.clear();
strip.setPixel(1 / pixel /, 12, 34, 56);
strip.show();
}
initNeopixel();

46
mos.yml Normal file
View File

@ -0,0 +1,46 @@
version: "1.0"
arch: esp8266
author: mongoose-os
description: NeoPixel app to control model railroad house lightnings
mongoose_os_version: ${mos_version}
sources:
- src
filesystem:
- fs
extra_files: []
ffi_symbols: []
libs:
# common mgos libs
- origin: https://github.com/mongoose-os-libs/http-server
- origin: https://github.com/mongoose-os-libs/i2c
- origin: https://github.com/mongoose-os-libs/ota-http-server
- origin: https://github.com/mongoose-os-libs/rpc-loopback
- origin: https://github.com/mongoose-os-libs/rpc-mqtt
- origin: https://github.com/mongoose-os-libs/rpc-service-config
- origin: https://github.com/mongoose-os-libs/rpc-service-fs
- origin: https://github.com/mongoose-os-libs/rpc-service-gpio
- origin: https://github.com/mongoose-os-libs/rpc-service-i2c
- origin: https://github.com/mongoose-os-libs/rpc-service-ota
- origin: https://github.com/mongoose-os-libs/rpc-uart
- origin: https://github.com/mongoose-os-libs/spi
- origin: https://github.com/mongoose-os-libs/vfs-dev-spi-flash
# libs necessary for the current app
- origin: https://github.com/mongoose-os-libs/aws
- origin: https://github.com/mongoose-os-libs/mjs
config_schema:
- ["i2c.enable", true]
build_vars:
MGOS_ENABLE_ONEWIRE: 1
cflags: []
cxxflags: []
cdefs: {}
tags:
- c
libs_version: ${mos_version}
modules_version: ${mos_version}
conds: []
manifest_version: ""
skeleton_version: 2017-05-18
deps: []
libs_handled: []

5
mos_esp32.yml Normal file
View File

@ -0,0 +1,5 @@
libs:
- origin: https://github.com/mongoose-os-libs/atca
- origin: https://github.com/mongoose-os-libs/dns-sd
- origin: https://github.com/mongoose-os-libs/gcp
- origin: https://github.com/mongoose-os-libs/rpc-service-atca

5
mos_esp8266.yml Normal file
View File

@ -0,0 +1,5 @@
libs:
- origin: https://github.com/mongoose-os-libs/atca
- origin: https://github.com/mongoose-os-libs/dns-sd
- origin: https://github.com/mongoose-os-libs/gcp
- origin: https://github.com/mongoose-os-libs/rpc-service-atca

4
src/conf_schema.yaml Normal file
View File

@ -0,0 +1,4 @@
[
["mqtt.server", "cubieboard4:1883"],
["i2c.enable", true],
]

35
src/main.c Normal file
View File

@ -0,0 +1,35 @@
#include <stdio.h>
#include "common/platform.h"
#include "common/cs_file.h"
#include "fw/src/mgos_app.h"
#include "fw/src/mgos_gpio.h"
#include "fw/src/mgos_sys_config.h"
#include "fw/src/mgos_timers.h"
#include "fw/src/mgos_hal.h"
#include "fw/src/mgos_dlsym.h"
#include "mjs.h"
#if CS_PLATFORM == CS_P_ESP8266
#define LED_GPIO 2 /* On ESP-12E there is a blue LED connected to GPIO2 */
#elif CS_PLATFORM == CS_P_ESP32
#define LED_GPIO 21 /* No LED on DevKitC, use random GPIO close to GND pin */
#elif CS_PLATFORM == CS_P_CC3200
#define LED_GPIO 64 /* The red LED on LAUNCHXL */
#elif(CS_PLATFORM == CS_P_STM32) && defined(BSP_NUCLEO_F746ZG)
/* Nucleo-144 F746 */
#define LED_GPIO STM32_PIN_PB7 /* Blue LED */
#elif(CS_PLATFORM == CS_P_STM32) && defined(BSP_DISCO_F746G)
/* Discovery-0 F746 */
#define LED_GPIO STM32_PIN_PI1 /* Green LED */
#else
#error Unknown platform
#endif
int get_led_gpio_pin(void) {
return LED_GPIO;
}
enum mgos_app_init_result mgos_app_init(void) {
return MGOS_APP_INIT_SUCCESS;
}