Blockly är ett sätt att skriva skript i Web Port på ett förenklat sätt. Skripten genereras genom att koppla ihop pusselbitar, där varje bit representerar logik eller större funktionalitet. Redigeraren fungerar genom att dra och släppa från ett blockbibliotek till en arbetsyta som sedan sparas och används för att generera den faktiska koden.
Översikt över Blockly
Blockly är för närvarande tillgängligt för Anropat skript, Loopat skript och Triggat skript. För att använda Blockly för skript väljer du det från toppmenyn efter att ha öppnat ett nytt eller befintligt skript. För att återgå till den vanliga skriptvyn och se den resulterande koden, klicka på skriptikonen i toppmenyn. Se bilden nedan.
Obs
När du öppnar ett skript första gången börjar det med den vanliga kodvyn.
Layout för gränssnitt
När du öppnar Blockly-vyn består gränssnittet av en övre menyrad, ett blockbibliotek till vänster och en arbetsyta för att skapa pusslet. Toppmenyn har några knappar som visas nedan. Knapparna Spara och Avbryt är dolda när det inte finns något att spara.
De andra knapparna har följande funktioner:
- Kör Kör skriptet och returnerar resultatet i en grön meddelandepopup i det nedre högra hörnet. Om ett undantag inträffar visas en röd popup med felmeddelandet.
- XML Öppnar en sidomeny till höger med den XML-kod som utgör det pussel som visas i arbetsytan. Denna kod kan kopieras och lagras som en mall. För att återställa en tidigare arbetsyta klistrar du in motsvarande XML-kod i inmatningen i sidomenyn och trycker på spara. Arbetsytan bör nu vara uppdaterad med pusslet.
- Debug Öppnar en sidomeny med alla debug-meddelanden från den senaste körningen av skriptet. Nya debug-meddelanden kan läggas till genom att använda debug-blocket under Gemensamt.
Bibliotek
Biblioteket visas till vänster och innehåller både grundläggande programmeringsblock och webbportspecifika block för att interagera med systemet, till exempel taggar och trend. Det finns också block för att ansluta och begära data från API:er och arbeta med datastrukturer som Json. Blocken är organiserade i kategorier för att göra det enkelt att gruppera block av samma typ. Kategorierna kan i vissa fall vara kapslade med underkategorier. Se längre ner för dokumentation av de olika blocken. |
Arbetsyta
Arbetsytan är där pusslet byggs som i sin tur genererar koden. För att lägga till block till arbetsytan, öppna en kategori i biblioteket och dra önskat block till arbetsytan. Vissa block kan anslutas antingen genom att stapla dem eller sammanfoga dem. I vissa fall kan endast en viss typ av block anslutas. Block kan omorganiseras genom att dra runt dem, vilket också kommer att påverka hur den resulterande koden är strukturerad. För att ta bort ett block drar du det till papperskorgen. Det är möjligt att zooma in (+) och ut (-) samt panorera arbetsytan. Detta kan göras antingen med touch eller med hjälp av musen och scrollhjulet. |
Generering av kod
Kodgenereringen görs när arbetsytan sparas. För att se resultatet navigerar du till skriptvyn med hjälp av toppmenyn. Det resulterande skriptet infogas mellan två kommentarsrader som visas nedan. Det är möjligt att kombinera genererad kod med anpassad kod genom att lägga till den utanför det blockerade området.
Anpassad kod kan placeras här ...
// <blockly>
Kod som genereras av Blockly placeras här. Kod som redigeras från skriptvyn kommer att ersättas.
// </blockly>
Anpassad kod kan placeras här ...
Körning av kod
Felsökning
Allmänna block
Logik
Logikblocken används för jämförelser och valideringar. Till exempel för att kontrollera om något är sant eller falskt eller större än ett annat värde. If-blocket kan utökas till att även stödja else if och else genom att klicka på kugghjulet. Test-blocket kan användas för att returnera olika resultat på vänster sida beroende på om testet är sant eller falskt. |
Loopar
Loop-blocken används när något ska upprepas. Det finns olika block som kan användas för att upprepa något ett visst antal gånger eller för varje punkt i en lista. Break out-blocket används för att avsluta en loop innan den är klar. Block som ska exekveras för varje iteration av loopen placeras inuti do-området. |
Matematik
Matematikblocken används för att arbeta med siffror och utföra matematiska operationer. Många block har rullgardinsmenyer för olika operationer. Många av blocken kan kombineras med varandra för att skapa mer komplexa matematiska beräkningar. Matematikbiblioteket innehåller också en slumptalsgenerator. |
Text
Kategorin text innehåller block för att arbeta med text (strängar). Det finns också några strängjämförelser som kan användas tillsammans med logikblock.
ObsPrint och prompt kan inte användas med skript i Web Port eftersom skripten körs på back-end och inte möjliggör användarinteraktion. |
Listor
Kategorin listor innehåller block för att skapa och arbeta med listor. Det finns också block för att välja undergrupper av listor, dela upp text till en lista samt sortera. Is empty kan användas tillsammans med logikblock för att kontrollera om en lista är tom. |
Färg
Dessa block kan användas för att skapa och arbeta med färger. Värdena för rött, grönt och blått är från 0-255. |
Variabler
Variabler är ett mycket vanligt block och en grund i många skript. De används för att lagra värden som sedan kan användas tillsammans med andra block. Innan en variabel kan användas måste den skapas. Därefter kan de ställas in eller ändras med hjälp av respektive block. Varje skapad variabel visas på samma sätt som cmd-blocket till vänster. |
Funktioner
Funktioner kan användas när samma kod behöver anropas från flera olika platser. En funktion kan ta in parametrar och / eller returnera ett värde. Använd kugghjulet för att konfigurera funktionen enligt kraven. |
Webb Port block
Taggar
Taggar är centrala i Web Port och dessa block gör det enkelt att läsa, skriva, kopiera eller loopa genom taggar.
|
Trend
Ovanstående block används för att infoga data i trenddatabasen. Blockets första ingång är det värde som skall lagras och kan antingen vara ett fast värde eller en variabel. Den andra ingången är namnet på den tagg som värdet ska infogas för och den sista ingången är ett valfritt datum och tid (om inget ändras används den aktuella tiden).
Datum / Tid
Blocken ovan används för att arbeta med datum, tid och tidsintervall. Det finns block för att konvertera till och från Unix timestamp samt parsning av datum-tidsträngar.
Json
Json är ett vanligt dataformat och tas ofta emot från webbtjänster och API:er. Dessa block kan användas för att analysera Json-strängen och generera en lämplig Json-datatyp (JObject, JArray eller JToken). JObjects är omgivna av {} JArrays omges av [] JTokens kan vara vilken typ av Json-datatyp som helst. För att få ett värde använder du select-token för att filtrera det önskade värdet från Json-ingången. Det är också möjligt att iterera genom alla objekt med for-loopen, som också tar ett filteruttryck. Mer information om filtrering och de olika Json-datatyperna finns i Newtonsofts dokumentation. |
Förfrågningar
HTTP
Dessa block används för att göra webbförfrågningar. Vanligast är förfrågningar till RESTful API:er som returnerar Json-data som svar. HTTP GET-blocket används för enkla förfrågningar där alla parametrar konfigureras i Url. För mer komplexa anrop eller för att skicka data till webbservern används HTTP POST-blocket. Innehållet läggs till på höger sida av blocket och innehållstypen anges av det valfria fältet. Det är också möjligt att tillhandahålla autentisering för båda blocken. För både HTTP GET och POST krävs blocket HTTP Helper.
API:er
KIONA/Spot Price - Spotpris för el
Blocket för Spotpris behöver två hjälpblock
- HTTP Helper som finns under Förfrågningar
- Kiona API_Helper som finns under API:er/KIONA/Spot Price
Blocket behöver både en region att få ett pris för (se budgivningszoner i tabellen nedan). Samt en API-Key för autentisering (begärs från Kiona - Web Port Support).
Det är också möjligt att ställa in offset för spotpriset i timmar via det valfria filtret. Om filtret är inaktiverat returneras fullständiga Json-data.
Land / områdeskoder | Zoner för budgivning | |
AL | 10YAL-KESH-----5 | |
AT | 10YAT-APG------L | |
BA | 10YBA-JPCC-----D | |
BE | 10YBE----------2 | |
BG | 10YCA-BULGARIEN-R | |
BY | 10Y1001A1001A51S | |
CH | 10YCH-SWISSGRIDZ | |
CZ | 10YCZ-CEPS-----N | |
TYSKLAND | 10Y1001A1001A83F | |
DK | 10Y1001A1001A65H | |
DK-1 | 10YDK-1--------W | |
DK-2 | 10YDK-2--------M | |
EE | 10Y1001A1001A39I | |
ES | 10YES-REE------0 | |
FI | 10YFI-1--------U | |
FR | 10YFR-RTE------C | |
GB | 10YGB----------A | |
GB-NIR | 10Y1001A1001A016 | |
GR | 10YGR-HTSO-----Y | |
HR | 10YHR-HEP------M | |
HU | 10YHU-MAVIR----U | |
IE | 10YIE-1001A00010 | |
IT | 10YIT-GRTN-----B | |
IT-NORD | 10Y1001A1001A73I | |
IT-CNOR | 10Y1001A1001A70O | |
IT-CSUD | 10Y1001A1001A71M | |
IT-SUD | 10Y1001A1001A788 | |
IT-FOGN | 10Y1001A1001A72K | |
IT-ROSN | 10Y1001A1001A77A | |
IT-BRNN | 10Y1001A1001A699 | |
IT-PRGP | 10Y1001A1001A76C | |
IT-SARD | 10Y1001A1001A74G | |
IT-SICI | 10Y1001A1001A75E | |
LT | 10YLT-1001A0008Q | |
LU | 10YLU-CEGEDEL-NQ | |
LV | 10YLV-1001A00074 | |
ME | 10YCS-CG-TSO---S | |
MK | 10YMK-MEPSO----8 | |
MT | 10Y1001A1001A93C | |
NL | 10YNL----------L | |
NO | 10YNO-0--------C | |
NO-1 | 10YNO-1--------2 | |
NO-2 | 10YNO-2--------T | |
NO-3 | 10YNO-3--------J | |
NO-4 | 10YNO-4--------9 | |
NO-5 | 10Y1001A1001A48H | |
PL | 10YPL-AREA-----S | |
PT | 10YPT-REN------W | |
RO | 10YRO-TEL------P | |
RS | 10YCS-SERBIATSOV | |
RU | 10Y1001A1001A49F | |
RU-KGD | 10Y1001A1001A50U | |
SE | 10YSE-1--------K | |
SE-1 | 10Y1001A1001A44P | |
SE-2 | 10Y1001A1001A45N | |
SE-3 | 10Y1001A1001A46L | |
SE-4 | 10Y1001A1001A47J | |
SI | 10YSI-ELES-----O | |
SK | 10YSK-SEPS-----K | |
TR | 10YTR-TEIAS----W | |
UA | 10YUA-WEPS-----0 | |
DE-AT-LU | 10Y1001A1001A63L |
SMHI
För att få väderdata från SMHI kan ovanstående block användas. Begäran baseras på en plats som definieras av longitud och latitud samt ett filter som får det önskade värdet och tidsförskjutningen.
Blocket för SMHI:s prognos behöver två hjälpblock
- HTTP Helper som finns under Requests
- SMHI-hjälpare som finns under API:er/SMHI
Gemensamt
Returnera resultat Returnerar ett resultat från skriptet. Skriv ut till felsökning Skriver ut ett meddelande kombinerat med ett indatavärde till debug-loggen. Kodrad Anger en egen kodrad om det inte är möjligt att skriva med befintliga block. Inline-kod Skriver in anpassad inline-kod som kan kombineras med andra block. Kommentar Lägger till en kommentar till den resulterande koden samt blockstrukturen. Region Kan användas för att gruppera kod tillsammans, antingen med eller utan lockiga parenteser. Regionen innehåller också en bildtext i form av en start- och slutkommentar. Try-catch-finally Används för att fånga upp fel vid exekvering av koden. Koden som övervakas placeras i try-avsnitten och om ett fel uppstår kommer catch-avsnittet att exekveras. Variabeln err kommer att innehålla felmeddelandet. Avsnittet finally kommer alltid att exekveras.
|