【Djnago】カスタムテンプレートタグ

 

project/app/ templatetagsフォルダ作成 — my_tag.py

 

my_tag.py


from django.template import Library, Node, Variable, VariableDoesNotExist, TemplateSyntaxError

register = Library()

@register.tag
def cut(value, arg):
return value.replace(arg, ”)

 

このテンプレートタグを使って、uuidの-をカットする例

 

template

var marker_icon_{{ uuid|cut:”-” }} = new google.maps.Marker({

 

 

HDC1050

main.ino

#include "I2C.h"

I2C i2c;

byte buf[8];
float temp;

void setup() 
{
  //I2C
  i2c.setup();
   
  Serial.begin(115200);
  while (!Serial) ;
}

void loop()
{
  // Manifacture ID
  i2c.read_reg(buf, 0x40, 0xfe, 2);
  for(int i=0; i<2; i++){
    Serial.print(buf[i] ,HEX);
  }
  Serial.println("");

  // temperature
  unsigned short _t;
  i2c.read_reg(buf, 0x40, 0x00, 2);
  _t = buf[0];
  temp = 165.0 * ((_t << 8) | buf[1]) / 65536-40;
  Serial.println(temp);

  // humidity
  i2c.read_reg(buf, 0x40, 0x02, 2);
  _t = buf[0];
  temp = 100.0 * ((_t << 8) | buf[1]) / 65536;
  Serial.println(temp);

  delay(1000);

}

I2C.h

#ifndef I2C_H
#define I2C_H

#include "Wire.h"

class I2C {

  public:
    I2C();
    
    int setup();
    byte* I2C::read_reg(byte* buf, uint8_t addr,uint8_t reg, int num);
    
};
#endif

I2C.cpp

#include "Arduino.h"
#include "I2C.h"

I2C::I2C() {

}

int I2C::setup() {

  Wire.begin();

}

byte* I2C::read_reg(byte* buf, uint8_t addr,uint8_t reg, int num){

  Wire.beginTransmission(addr);
  Wire.write(reg);
  Wire.endTransmission();

  delay(50);
  
  Wire.requestFrom(addr, num);
  while (!Wire.available());

  for (int i=0; i < num; i++) {
    buf[i] = Wire.read();
  }

  return buf;
}

【Bootstrap3】File Upload

<form method=”post” enctype=”multipart/form-data” role=”form” data-toggle=”validator”>

{% csrf_token %}
<p><input type=”file” name=”app_file”></p>

<div class=”row”>
<label for=”version” class=”col-sm-1 control-label text-right”>Version</label> –>
<div class=”col-sm-2″>
<input type=”text” pattern=”^[0-9]{1,}$” class=”form-control col-sm-2″ id=”version” name=”version” placeholder=”数値のみ” required >
</div>
<input type=”submit” value=”アップロード” class=”btn btn-primary btn-sm pull-left” >
</div>
</form>

【python】exif tag


import os

from PIL import Image
from PIL.ExifTags import TAGS,GPSTAGS
from os import path

class Point:
def __init__(self, lat, lon, alt, datetime):
self.lat = lat
self.lon = lon
self.alt = alt
self.datetime = datetime

def main():

files = os.listdir('/Users/mknod/git/ProblemMapping/exif_dec/images')

for file in files:

exif = {}
exif = getImageExif("images/" + file)

pt = getExifGps(exif)

print(pt.lon)
print(pt.lat)
print(pt.alt)
print(pt.datetime)

def getImageExif(filename):

image = Image.open(filename)

try:
exif = image._getexif()
return exif

except AttributeError:
return {}

def getExifGps(exif):

exif_data = {}
gpsinfo = {}
datetime = {}
lon_ref = 1
lat_ref = 1

pt = Point(None,None,None,None)

for tag, value in exif.items():

decoded = TAGS.get(tag, tag)

if decoded == "GPSInfo":

gps_data = {}
for t in value:

dec = GPSTAGS.get(t, t)
if dec == "GPSLongitude":
pt.lon = decimal_deg(value[t])
elif dec == "GPSLongitudeRef":
if value[t] == "W":
lon_ref = 1.0
elif value[t] == "E":
lon_ref = -1.0
elif dec == "GPSLatitudeRef":
if value[t] == "N":
lat_ref = 1.0
elif value[t] == "S":
lat_ref = -1.0
elif dec == "GPSLatitude":
pt.lat = decimal_deg(value[t])
pt.lat *= lat_ref
elif dec == "GPSAltitude":
pt.alt = value[t]

exif_data[decoded] = gps_data

elif decoded == "DateTime":
pt.datetime = value

return pt

def decimal_deg(coordinate):

hour, minute, second = coordinate
dec_hour = hour[0] * 1.0 / hour[1]
dec_min = minute[0] * 1.0 / minute[1] * 1.0 / 60.0
dec_sec = second[0] * 1.0 / second[1] * 1.0 / 60.0 / 60.0
dec_deg = dec_hour + dec_min + dec_sec

return dec_deg

# === main ===
main()

# {
# 'Flash': 0,
# 'Orientation': 0,
# 'ImageWidth': 3264,
# 'SubsecTimeDigitized': '077941\x00',
# 'JpegIFOffset': 482,
# 'ImageLength': 2448,
# 'Model': 'Nexus 5',
# 'DateTimeDigitized': '2015:02:27 11:40:57',
# 'WhiteBalance': 0,
# 'FocalLength': (3970, 1000),
# 'DateTime': '2015:02:27 11:40:57',
# 'LightSource': 0,
# 'Make': 'LGE',
# 'GPSInfo': {
# 1: 'N',
# 2: ((14, 1), (9, 1), (38626, 1000)),
# 3: 'E',
# 4: ((121, 1), (13, 1), (42257, 1000))
# },
# 'JpegIFByteCount': 38663,
# 'MeteringMode': 65535,
# 'SubsecTime': '077941\x00',
# 'ExifOffset': 452,
# 'SubsecTimeOriginal': '077941\x00'
# }

# ((14, 1), (9, 1), (38626, 1000)) = 14/1, 9/1, 38626/1000 = 14度9分38.626秒
# 14 + (9 / 60) + (38.626 / 60 / 60) = 14.16072944

# ((121, 1), (13, 1), (42257, 1000)) = 121/1, 13/1, 42257/1000 = 121度13分42.257秒

# 14.16072944,121.2284047

【UE4】シーソー  物理Constraint

・Blueprintを作成、コンポーネントを追加する。

・親コンポーネントに、支点と動きの制約を設定する。

Physics > Simulate Physics

MassInKg  100kg

Linear Damping     縦横方向の減衰

Angular Damping    軸方向の減衰力(大きい=動きずらい)

・コンストレイン

ポジションロック 線形方向の動作ロック

回転をロック 軸方向の動作ロック

 

ここではシーソーの動きにしたので、一軸だけロックした。

 

キャプチャ

【UE4】夜ライト

ディレクションライト

intensity = 10

Light> Light Color

255,255,255

 

ディレクションライト

intensity = 0.125

Light> Light Color 197,209,255

 

大気フォグ

Atomosphere > SunMultiplier 1 -> 0.013

lighting > Default Lighting Color > 7,7,7,255

dynamic material

マテリアルインスタンスを作成し、可変したい部分をパラメーターにする。

キャプチャ

 

右クリックで、マテリアルインスタンスを作りParentを設定する。

変更するパラメータ部分にチェックする。

ここではtextureと、brightness。

キャプチャ

 

Shapeオブジェクトの初期化時、dynamic materialを作成し、変数に設定。

dynamic_material1

 

動的にマテリアルを変更

キャプチャ

Raspberry PI CM3

flash eMMC 

https://www.raspberrypi.org/documentation/hardware/computemodule/cm-emmc-flashing.md

・windows Installerをinstall

https://www.raspberrypi.org/documentation/hardware/computemodule/CM-Boot-Installer.exe

・usb slaveにWindows PCをつなぐ

・power inにつなぐ

・RpiBoot.exeを実行するとmass storage認識する。

 

Install OS

RASPBIAN JESSIE LITE

Minimal image based on Debian Jessie
Version:January 2017
Release date:2017-01-11
Kernel version:4.4

Raspbian

 

https://www.raspberrypi.org/documentation/installation/installing-images/windows.md

 

・HDMIをつないで起動

id:  pi

pass: raspberry

 

・config変更

raspi-config

 

・serial consoleを使う

raspi-config > advanced options > A8 serial で enable

/boot/config.txtで、

dtparam=uart0=on

pi3-disable-bt      #(turn off Bluetooth and restore serial0 UART)
#pi3-miniuart-bt     #(set Bluetooth to use the mini-UART and restore serial0 UART)

を追加し、再起動

GPIO14(TX) — FTDI3.3Vの黄色

GPIO15(RX) — FTDI3.3Vのオレンジ

 

・UARTをアプリケーションで使う

raspi-config > advanced options > A8 serial で disable

・bluetooth停止 on-boardのbluetooth uartを停止して、uartをremapする。

※ /boot/overlays/READMEを参照

sudo systemctl disable hciuart

・/boot/config.txtを編集

dtoverlay=pi3-disable-bt

 dtparam=uart0=on

enable_uart=1 ※これがないと/dev/ttyAMA0が作成されない

・GPIO

https://www.raspberrypi.org/documentation/hardware/computemodule/cm-peri-sw-guide.md

sudo apt-get update
sudo apt-get install raspi-gpio

 

http://elinux.org/RPi_BCM2835_GPIOs

・GPIO設定確認。

raspi-gpio get

 

・PIN配置を上書きする。 (/boot/dt-blob.bin)

デバイスツリーファイル(dts)を作成して、dtcでコンパイルする(dtb)。

sudo apt-get install device-tree-compiler

sudo dtc -I dts -O dtb -o /boot/dt-blob.bin  dt-blob-x.dts 

 

I2c

sudo apt-get install python-smbus

sudo apt-get install i2c-tools

 

i2cdetect -y 1

i2cget -y 1 0x40 0xfe w

i2cset -y 1 0x40 0x01 0x00 b

vcgencmd

http://www.elinux.org/RPI_vcgencmd_usage

vcgencmd get_camera

 

・camera

ジャンパーが必要。

28(SDA),29(SDL),30(LED),31(SHUTDOWN)を、

C01_SDA,C01SCL,CAM1_I01,CAM1_I00に接続する。

CAMERAはCAM1に接続する。

 

https://www.raspberrypi.org/documentation/hardware/computemodule/cmio-camera.md

  1. On the compute module, run sudo raspi-config and enable the camera.
  2. ext, run sudo wget http://goo.gl/U4t12b -O /boot/dt-blob.bin

officialのこれはうまくいかない模様。

 

camera2つ動かしたい時。

https://www.raspberrypi.org/forums/viewtopic.php?f=98&t=89876

m.furukawaさんのdtsを/bootにコピーして、下記実行して再起動。

 

※この場合、raspi-configのadvanced optionでArmのi2cを有効にしないとうまくいく。

これ有効にすると、GPIO2,3がSDA1,SDL1に上書き設定されてしまうので。

また、フレキピッチ変換ボードはカメラ用と、ディスプレイ用と2つあるので注意!

dtparam=i2c_arm=off

 

・omxplayer

sudo apt-get install omxplayer

python3

 sudo apt-get install python3-pip python3-dev

  sudo pip3 install RPi.GPI

  sudo pip3 install python-smbus


			

【UE4】iOS

・csrをアップロードして、cerをダウンロード

・cerをダブルクリックし、p12を書き出す。

・プロジェクト設定> iOS> から書き設定。

プロビジョニング

証明書

 

【Edison】setup

https://software.intel.com/en-us/get-started-edison-windows-step1

https://software.intel.com/iot/hardware/edison/downloads

 

・flash初期化

usbケーブルを2本接続

https://software.intel.com/en-us/articles/flash-tool-lite-user-manual